sht31温湿度传感器只输出温度

问题遇到的现象和发生背景
遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
void I2C_Sht31(void)
{
    IIC_Start();                
    IIC_SendByte(SHT30W);          //发送设备地址+写信号
    while(IIC_wait_ACK());            //从机应答
    IIC_SendByte(0x22);            //命令高8位,0x2220,周期测量
    while(IIC_wait_ACK());
    IIC_SendByte(0x20);            //命令低8位
    while(IIC_wait_ACK());
    //IIC_Stop();                   //周期读取sht30数据,按照时序图,不需要发送停止命令          
    delay1ms(20);                    //此处延时必须要有,等待测量完成,才能读取数据                  
    IIC_Start();                
    IIC_SendByte(SHT30W);          //发送设备地址+写信号
    while(IIC_wait_ACK());            //从机应答
    IIC_SendByte(0xe0);            //命令高8位,0xe000,准备读取数据模式
    while(IIC_wait_ACK());
    IIC_SendByte(0x00);            //命令低8位
    while(IIC_wait_ACK());
    //IIC_Stop();                   //周期读取sht30数据,按照时序图,不需要发送停止命令 
    
    IIC_Start();                
    IIC_SendByte(SHT30R);          //发送设备地址+读信号
    while(IIC_wait_ACK());
    BUFt[0] = IIC_ReadByte(1);    //温度高
    BUFt[1] = IIC_ReadByte(1);    //温度低
    BUFt[2] = IIC_ReadByte(1);    //温度crc
    BUFt[3] = IIC_ReadByte(1);    //湿度高
    BUFt[4] = IIC_ReadByte(1);    //湿度低
    BUFt[5] = IIC_ReadByte(0);    //湿度crc
    IIC_Stop();
    
    temp = (BUFt[0]<<8) | BUFt[1];
    humi = (BUFt[3]<<8) | BUFt[4];

    temp = (unsigned int)(175*(float)temp / 65535 - 45);
    humi = (unsigned int)(100*(float)humi / 65535);
    
    delay1ms(10);
}


运行结果及详细报错内容

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

基于您的代码,它只计算和保存温度,而不是湿度。

如果您想要湿度,请在代码中添加对湿度的处理:

humi = (BUFt[3]<<8) | BUFt[4];
humi = (unsigned int)(100*(float)humi / 65535);

然后,您可以在程序的其他地方使用 humi 变量来访问读取到的湿度值。

float humidity = (float)humi / 100.0;