这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 读取SHT40温湿度传感器数据时要注意的事项

共1条 1/1 1 跳转至

读取SHT40温湿度传感器数据时要注意的事项

专家
2026-06-17 22:05:22     打赏

今天使用STC32G12K128编程读取SHT40的数据,在调试程序的过程中发现,在每次读取温湿度数据时,一定要按照以下方式处理。

1、发送精度指令

2、延时一段时间(我这里设置为10ms,是高精度设置下的响应时间)

3、读取温湿度数据。

代码的样子是下面这样:

    // 发送高精度测量命令
    IIC_START();
    IIC_SENDBYTE(SHT40_ADDR);
    IIC_WAITACK();
    // 精度指令
    IIC_SENDBYTE(SHT40_CMD_HIGH_PRECISION);
    IIC_WAITACK();
    IIC_STOP();
    
    delay_ms(200);
    
    IIC_START();
      // 读数据指令的第一个字节:地址
    IIC_SENDBYTE((u8)(SHT40_ADDR+0x01));
    IIC_WAITACK();
    // 读取6个字节的数据
    for (i=0; i<6; i++) {
        dat[i] = IIC_READBYTE();
            if (i<5) {
              IIC_SENDACK();
            } 
    }
    IIC_SENDNACK();
    IIC_STOP();

即使在周期读取数据时,也必须保持这个顺序,绝对不能将设置精度的处理部分单独提出去执行一次,然后周期执行读处理。这样发的处理,将无法读取到正确的数据。体现为6个字节的数据全部为0xFF.

另外,在SHT40的资料中,它所占用的I2C地址为0x44,但在实际处理中,这个地址是0x88。写的时候,地址是0x88,读的时候,地址是0x89。





关键词: 大懒猫的试用笔记     STC32G12K128     SHT    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]