HTU21D

2019-08-14 01:15发布

stm32操作HTU21D,能够正常读取温度的值(能够根据环境改变,与温度计一致),但是湿度的值一直是-6,不会改变;这里温度和湿度的读取操作一致,只有命令不一样(温度为0xf3,湿度为0xf5),湿度的操作如下:
        I2C_Start(); //起始信号              
        I2C_Send_Byte(SALVE_ADDR);
  if(I2C_Wait_Ack()==1){
                return 0;
        }
       
        I2C_Send_Byte(HUMI_NOHOLD_MASTER);       
        if(I2C_Wait_Ack()==1){
                return 0;
        }
       
do{

        delay_ms(20);
        I2C_Start(); //起始信号                          //重新发起始信号

        I2C_Send_Byte(I2C_ADR_R);
        }while(I2C_Wait_Ack()==1);

        Humi_Buffer[0]=I2C_Read_Byte(0);
        delay_us(10);
        Humi_Buffer[1]=I2C_Read_Byte(0);
  I2C_Read_Byte(1);
        I2C_Stop();
        SRH=((Humi_Buffer[0]*256)+Humi_Buffer[1]) & ~3;//最后两位 置0
  Humi=(SRH * 125.0/65536)-6 ;
        return Humi;

还请大神指教;


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
18811707971
1楼-- · 2019-08-14 05:00
看了一下,程序没啥问题,应该是你在测湿度时多写一个等待应答,我把它注册掉,测试出来就没啥问题了。
18811707971
2楼-- · 2019-08-14 05:58
 精彩回答 2  元偷偷看……
店小迩
3楼-- · 2019-08-14 06:42
18811707971 发表于 2017-9-8 13:17
可以看看源码,是不是什么地方弄错了。搞过51的htu21d,应该两个一起读到的

能不能说一下你当时使用时数据的变化情况,我把HTU21D放置在空气中(正常环境),读到的值都是负的,除非放在封闭环境中才会有数据,并且一直跳变
18811707971
4楼-- · 2019-08-14 06:43
就是可以正常测量数据,我一开始串了5K电阻才正常显示,后面验证过其实没必要,如果需要,回头我把代码发上来,可以看看
店小迩
5楼-- · 2019-08-14 08:25
18811707971 发表于 2017-9-8 17:29
就是可以正常测量数据,我一开始串了5K电阻才正常显示,后面验证过其实没必要,如果需要,回头我把代码发上 ...

如果可以,麻烦发我看看,邮箱: 837545695@qq.com  谢谢!
18811707971
6楼-- · 2019-08-14 08:25
店小迩 发表于 2017-9-11 08:34
如果可以,麻烦发我看看,邮箱:   谢谢!

已发

一周热门 更多>