标题:
IIC为什么读不出数据?
[打印本页]
作者:
hs_k
时间:
2020-4-25 21:03
标题:
IIC为什么读不出数据?
TempHumiValue_t temp_humi_Value;
// TempHumiValue_t *temp_humi_Va;
u16 tem,hum;
u16 buff[6];
float Temperature=0;
float Humidity=0;
IIC_Start();
IIC_SendByte(addr<<1 | write);//写7位I2C设备地址加0作为写取位,1为读取位
IIC_wait_ACK();
IIC_SendByte(0x2C);
IIC_wait_ACK();
IIC_SendByte(0x06);
IIC_wait_ACK();
IIC_Stop();
delay_ms(50);
IIC_Start();
IIC_SendByte(addr<<1 | read);//写7位I2C设备地址加0作为写取位,1为读取位
if(IIC_wait_ACK()==0)
{
buff[0]=IIC_RcvByte();
IIC_ACK();
buff[1]=IIC_RcvByte();
IIC_ACK();
buff[2]=IIC_RcvByte();
IIC_ACK();
buff[3]=IIC_RcvByte();
IIC_ACK();
buff[4]=IIC_RcvByte();
IIC_ACK();
buff[5]=IIC_RcvByte();
IIC_NACK();
IIC_Stop();
}
tem = ((buff[0]<<8) | buff[1]);//温度拼接
hum = ((buff[3]<<8) | buff[4]);//湿度拼接
/*转换实际温度*/
Temperature= tem ;// T = -45 + 175 * tem / (2^16-1)
Humidity= hum;// RH = hum*100 / (2^16-1)
temp_humi_Value.temperature=Temperature;
temp_humi_Value.humidity=Humidity;
if((Temperature>=-20)&&(Temperature<=125)&&(Humidity>=0)&&(Humidity<=100))//过滤错误数据
{
temp_humi_Value.temperature=Temperature;
temp_humi_Value.humidity=Humidity;
printf("温度为%f,湿度为%f%% \r\n",temp_humi_Value.temperature,temp_humi_Value.humidity);
}
hum=0;
tem=0;
作者:
man1234567
时间:
2020-4-26 15:12
挂个别的IIC试试就知道是程序问题还是硬件问题了,IIC的代码网上很多先找个好用的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1