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条回答
店小迩
1楼-- · 2019-08-15 11:45
18811707971 发表于 2017-9-12 21:39
看了一下,程序没啥问题,应该是你在测湿度时多写一个等待应答,我把它注册掉,测试出来就没啥问题了。

嗯,我改了之后的测试结果还是和以前一样,那说明应该就是我的硬件的问题了
店小迩
2楼-- · 2019-08-15 15:12
18811707971 发表于 2017-9-12 21:39
看了一下,程序没啥问题,应该是你在测湿度时多写一个等待应答,我把它注册掉,测试出来就没啥问题了。

我是直接买的模块,不应该存在硬件问题才对,那这个问题就奇葩了
18811707971
3楼-- · 2019-08-15 16:13
店小迩 发表于 2017-9-13 08:23
我是直接买的模块,不应该存在硬件问题才对,那这个问题就奇葩了

看看传感器与MCU的接线有没有问题。
店小迩
4楼-- · 2019-08-15 17:34
18811707971 发表于 2017-9-13 08:31
看看传感器与MCU的接线有没有问题。

scl PA5
SDA pa6
vcc 3.3
如果接线有问题的话应该温度也不对才对

你那边硬件模块是什么接的,有接上拉电阻吗? 多大的电阻?我不接电阻的话数据都是0
18811707971
5楼-- · 2019-08-15 18:30
 精彩回答 2  元偷偷看……
18811707971
6楼-- · 2019-08-15 19:13
我的是这种,没有的话得接上拉电阻,我看程序设置是开漏

一周热门 更多>