温湿度传感器 GXHT3L

特征: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

温湿度传感器 GXHT3L_第1张图片温湿度传感器 GXHT3L_第2张图片

 

 通过改变 ADDR 的连接方式可以改变传感器的 I2C 地址。当 ADDR 接低电平时,传感器芯片的地址为 0x44,当 ADDR 接高电 平时,传感器芯片的地址为 0x45。需要注意在通信过程中 ADDR 的电平不能发生改变. 这种地址选择方式可以将两颗 GXHT3L 连接在同一个 I2C 总线上。 需要注意 I2C 的地址是指 I2C 读写命令头的高 7 位。读写命 令头的最低位是读写指示位,0 为写,1 为读。ADDR 的管脚 不能悬空。

读取单次转换模式中温湿度数据

温湿度传感器 GXHT3L_第3张图片

  单次转换模式的测量命令 第一个 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;
}

你可能感兴趣的:(stm32,单片机,嵌入式硬件)