一、AHT10手册解析
1.1 AHT10通信协议
基于标准的I2C协议
串行时钟SCL
SCL用于微处理器与AHT10之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小SCL频率。
串行数据SDA
SDA引脚用于传感器的数据输入和输出。当向传感器发送命令时,SDA在串行时钟(SCL)的上升沿有效,且当SCL为高电平时,SDA必须保持稳定。在SCL下降沿之后,SDA值可以被改变。
1.2 传感器启动
启动传感器
将传感器上电后,电压为所选择的VDD电源电压。需要注意的是,上电后传感器需要最多20毫秒时间(此时SCL为高电平)以达到空闲状态,即做好准备接收由主机(MCU)发送的命令。
启动/停止时序
每个传输序列都是以Start状态作为开始以Stop状态结束,如下图
Start状态
当SCL为高电平时,SDA由高电平转换为低电平。开始状态是由主机控制的一种特殊的总线状态,指示从机传输开始。
Stop状态
当SCL高电平时,SDA线上从低电平转换为高电平。停止状态是由主机控制的一种特殊的总线状态,指示从机传输结束。
1.3 发送命令
在启动传输后,随后传输I2C首字节包括7位的I2C设备地址0x38和一个SDA方向位x(读R:‘1’,写W:‘0’)。在第8个SCL时钟下降沿之后,通过拉低SDA引脚(ACK位),指示传感器数据接收正常。在发出初始化命令之后,主机MCU必须等待测量完成。
基本命令集
状态位说明
1.4 传感器读取流程
1.上电后要等待40ms,读取温湿度值之前,首先要看状态字的校准使能位Bit[3]是否位1(通过发送0x71可以获取一个字节的状态字),如果不为1,要发送0xE1命令(初始化),此命令参数有两个字节,第一个字节为0x08,第二个字节为0x00。
2.直接发送0xAC命令(触发测量),此命令参数有两个字节,第一个字节为0x33,第二个字节为0x00。
触发测量数据:
3.等待80ms待测量完成,忙状态Bit[7]为0,然后可以读取六个字节(发送0x71即可以读取)
读取温湿度数据:
1.5数据转换
相对湿度转换
相对湿度计算公式:
R H = ( S R H 2 20 ) ∗ 100 RH=(\frac{S_{RH}}{2^{20}})*100% RH=(220SRH)∗100
温度转换
温度转换公式:
T ( ℃ ) = ( S T 2 20 ) ∗ 200 − 50 T(℃)=(\frac{S_{T}}{2^{20}})*200-50 T(℃)=(