HS3003是一个高度精确、完全校准的相对湿度和温度传感器。MEMS传感器具有专有的传感器级保护功能,确保了高可靠性和长期稳定性。集成校准和温度补偿逻辑通过标准I2C输出提供完全校正的RH和温度值。不需要用户校准输出数据。具有高精度、快速的测量响应时间和长期的稳定性。
因为开发板使用的外部晶振时钟为12Mhz,因此需要对工程的芯片时钟进行配置(默认的是24Mhz)
配置功能引脚
使用FSP框架驱动I2C
(1)打开SensorThread_entry.c,编写读取温湿度代码
#include "SensorThread.h"
#include "debug_log.h"
#include "stdio.h"
/* SensorThread entry function */
/* pvParameters contains TaskHandle_t */
void H3003I2C3CallBack(i2c_master_callback_args_t *p_args)
{
}
void SensorThread_entry(void *pvParameters)
{
float RH = 0.0, TEMP = 0.0;
fsp_err_t err;
uint8_t buf[4] = { 0 };
char data_str[128]={0};
FSP_PARAMETER_NOT_USED(pvParameters);
R_SCI_I2C_Open (&H3003_I2C3_ctrl, &H3003_I2C3_cfg);
/* TODO: add your own code here */
while (1)
{
buf[0] = buf[1] = buf[2] = buf[3] = 0;
R_SCI_I2C_Write (&H3003_I2C3_ctrl, buf, 4, false);//请求测量
vTaskDelay (pdMS_TO_TICKS(50));
err = R_SCI_I2C_Read (&H3003_I2C3_ctrl, buf, 4, true);//读取HS3001数据
vTaskDelay (pdMS_TO_TICKS(200));
if(err == FSP_SUCCESS)
{
RH = (float) (((short) (buf[0] & 0x3f) << 8) + buf[1]) / 16383 * 100; //湿度变换为浮点
TEMP = (float) ((((short) buf[2] << 8) + buf[3]) >> 2) / 16383 * 165 - 40; //温度变换浮点
sprintf(data_str,"temp:%0.2f rh:%0.2f\n",TEMP, RH);
DebugLog("%s\n",data_str);
}else
{
DebugLog("R_SCI_I2C_Read error\n");
}
vTaskDelay (pdMS_TO_TICKS(1000));
}
}
结果
更多回帖