特征:https://atta.szlcsc.com/upload/public/pdf/source/20211115/18AAECAE46F4BEFF1630C9054BE08F03.pdf
★ 全温湿度范围校准和温度补偿数字输出
★ 宽电源电压范围,从 2.2 V 到 5.5 V
★ I2C 接口,通信速度高达 1MHz
★ 两个用户可选择的地址
★ 典型精度为±5%RH 和±0.5°C
★ 单芯片集成温湿传感器
★ 高可靠性和长期稳定性
★ 测量 0-100%相对湿度的温度
★ 集成 16 位高精度 ADC
★ 测量时间低至 2.5ms
典型应用电路: 建议上拉电阻Rn为 4.7K
通过改变 ADDR 的连接方式可以改变传感器的 I2C 地址。当 ADDR 接低电平时,传感器芯片的地址为 0x44,当 ADDR 接高电 平时,传感器芯片的地址为 0x45。需要注意在通信过程中 ADDR 的电平不能发生改变. 这种地址选择方式可以将两颗 GXHT3L 连接在同一个 I2C 总线上。 需要注意 I2C 的地址是指 I2C 读写命令头的高 7 位。读写命 令头的最低位是读写指示位,0 为写,1 为读。ADDR 的管脚 不能悬空。
读取单次转换模式中温湿度数据
单次转换模式的测量命令 第一个 SCL 空闲时间段表示 至少等待 1ms (白色框代表上位机发送的数据,灰色框代表 传感器芯片发送的数据)
在传感器完成温湿度测量之后,上位机可以通过发送 START 信号+I2C 读取数据头来 读取温湿度数据,如果温湿度数据已 经准备好,那么芯片会向上位机发送 ACK 信号,并随后发送 2 字节的温度数据加 1 字节的 CRC 校验数据,然后再发送 2 字 节的湿度数据加 1 字节的 CRC 校验数据。上位机需要对接收 到的每个字节数据发送 ACK,否则芯片会停止发送数据。 微处理器在收到湿度数据的 CRC 字节后应该发送一个 NACK 和 一个 STOP 信号来结束本次数据传输
void GXHT30_read_result(u8 addr)
{
u16 tem,hum;
//u16 tem1[8];
u16 buff[6];
float Temperature=0;
float Humidity=0;
I2C_Start();
I2C_Send_Byte(addr<<1 | write);//0
I2C_Wait_Ack();
I2C_Send_Byte(0x2C);
I2C_Wait_Ack();
I2C_Send_Byte(0x10);
I2C_Wait_Ack();
I2C_Stop();
delay_10us(5);
I2C_Start();
I2C_Send_Byte(addr<<1 | read);//1
if(I2C_Wait_Ack()==0)
{
I2C_SDA_IN();
buff[0]=I2C_Read_Byte(1);//温度高8位
buff[1]=I2C_Read_Byte(1);//温度低8位
buff[2]=I2C_Read_Byte(1);//CRC
buff[3]=I2C_Read_Byte(1);
buff[4]=I2C_Read_Byte(1);
buff[5]=I2C_Read_Byte(0);//CRC
I2C_Stop();
}
tem = ((buff[0]<<8) | buff[1]);//
hum = ((buff[3]<<8) | buff[4]);//
Temperature= (175.0*(float)tem/65535.0-45.0) ;// T = -45 + 175 * tem / (2^16-1)
Humidity= (100.0*(float)hum/65535.0);// RH = hum*100 / (2^16-1)
hum=0;
tem=0;
}