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;
还请大神指教;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
能不能说一下你当时使用时数据的变化情况,我把HTU21D放置在空气中(正常环境),读到的值都是负的,除非放在封闭环境中才会有数据,并且一直跳变
如果可以,麻烦发我看看,邮箱: 837545695@qq.com 谢谢!
已发
一周热门 更多>