2579|3

226

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【Silicon Labs 开发套件评测】+Si7021温湿度传感检测 [复制链接]

  本帖最后由 yin_wu_qing 于 2021-9-6 09:50 编辑

       前面帖子已经提到开发板集成了Si7021温湿度传感器,该传感器采用IIC的接口与MCU通信,通过官方的数据手册,我们可以了解这款传感器的封装、特性,以及详细的通信协议。几处重要的信息点分享如下:

    

      Si7021传感器在EFM32PG22开发板上的电路连线可参考电路原理图

      同理可知,Si7021与前面分享的环境光传感器(VEML6035)与霍尔效应传感器(Si7210)都是连接在IIC总线上,SDA连接PD02管脚,SCL连接PD03管脚,使能管脚为PC06。在“Simplicity Studio IDE”中,创建一个RTOS基本工程,这里采用上期模板,只需安装对应的配置接口即可。

       

         完成上述组件的搭建后,然后在任务处理源文件中包含Si7021传感器的头文件

        此时打开“sl_si70xx.h”文件,则会发现,官方已经给出了参考示例,用户只需将参考示例函数放在任务处理函数中被调用即可。

         将采集的Data值使用浮点的数据类型打印输出,然后编译、下载,打开串口调试助手,然后将手指轻放在Si7021传感器上面,可以清晰得看到温度、湿度值都会相应地增大;移开手指,则温度、湿度值都会缓慢恢复室内温湿度值。由此可见,开发板上的Si7021传感器很灵敏,采集的数据很精确。

#include <stdio.h>
#include "FreeRTOS.h"
#include "task.h"

#include "sl_i2cspm.h"
#include "em_cmu.h"
#include "sl_i2cspm_sensor_config.h"
#include "sl_veml6035.h"
#include "sl_si7210.h"
#include "sl_si70xx.h"

#ifndef TOOGLE_DELAY_MS
#define TOOGLE_DELAY_MS            25
#endif

#ifndef Envir_Hall_STACK_SIZE
#define Envir_Hall_STACK_SIZE      configMINIMAL_STACK_SIZE
#endif

#ifndef EXAMPLE_USE_STATIC_ALLOCATION
#define EXAMPLE_USE_STATIC_ALLOCATION      0
#endif

static void Envir_Hall_test_task(void *arg);


sl_i2cspm_t *sl_i2cspm_sensor = SL_I2CSPM_SENSOR_PERIPHERAL;

void Envir_Hall_test_init(void)
{
  TaskHandle_t xHandle = NULL;
  BaseType_t xReturned = pdFAIL;

#if (EXAMPLE_USE_STATIC_ALLOCATION == 1)

  static StaticTask_t xTaskBuffer;
  static StackType_t  xStack[Envir_Hall_STACK_SIZE];
#else

  xReturned = xTaskCreate(Envir_Hall_test_task,
                           "Envir_Hall_test task",
                           Envir_Hall_STACK_SIZE,
                           ( void * ) NULL,
                           tskIDLE_PRIORITY + 4,
                           &xHandle);
  EFM_ASSERT(xReturned == pdPASS);

#endif
}

static void Envir_Hall_test_task(void *arg)
{
  int32_t temp_data;   //温度值
  uint32_t rh_data;    //湿度值
  uint8_t fw_data;
  (void)&arg;

  sl_si70xx_init(sl_i2cspm_sensor,SI7021_ADDR);
  sl_si70xx_get_firmware_revision(sl_i2cspm_sensor,SI7021_ADDR,&fw_data);
  printf("si7021's FW Version:%d\r\n",fw_data);
  while(1)
    {
      sl_si70xx_measure_rh_and_temp(sl_i2cspm_sensor,SI7021_ADDR,&rh_data,&temp_data);
      printf("\n");
      printf("hum=%f   tem=%f\r\n",rh_data/1000.0,temp_data/1000.0);
    }
}

最新回复

看来操作还是挺方便的!   详情 回复 发表于 2021-9-7 13:08

赞赏

1

查看全部赞赏

点赞(1) 关注
 
 

回复
举报

2万

帖子

74

TA的资源

管理员

沙发
 

不错 期待后续。

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

1411

帖子

3

TA的资源

版主

板凳
 

感谢分享,期待后续

个人签名

没有什么不可以,我就是我,不一样的烟火! 

 
 
 

回复

1942

帖子

2

TA的资源

版主

4
 

看来操作还是挺方便的!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表