目录
接口定义
- 电源引脚VDD、VSS VDD是供电电压(2.1V~3.6V)(一般为3V) VSS是接地
- 串行时钟SCL 双向
- 串行SDA 双向 SDA引脚用于传感器的数据输入和输出,当向传感器发送命令时,SDA再SCL上升沿有效,且SCL为高电平的时候,SDA必须保持稳定。当SCL下降沿之后,DSDA的值可以改变
传感器通信时序
1)启动传感器
给传感器上电,电压选择VDD 。上电后,传感器最多需要15ms(此时SCL为高电平)以达到空闲状态,准备接收MCU发送的命令。
2)启动/停止时序
每个传输序列都以Start状态开始,以Stop状态结束
①启动传输状态(S):当SCL为高电平,SDA从高电平转换为低电平。开始状态时由主机控制的一种特殊的总线状态,指示从机传输开始(Start之后,BUS总线被认为是处于占线状态)
②停止传输状态(SP:当SCL为高电平,SDA从低电平转换为高电平。停止状态时由主机控制的一种特殊的总线状态,指示从机传输结束(Stop之后,BUS总线被认为是处于空闲状态)
3)发送命令
开始传输后,随后先传输首字节包括I2C设备地址(7bit)和一个SDA方向位(R:1, W:0)。一个时钟发送一个位,在第8个下降沿之后,通过拉低SDA引脚(ACK位 为0),只是传感器数据接收正常。在发出测量命令之后(‘1110’‘0011’代表温度测量,‘1110’‘0101’代表相对湿度测量 ,这种为主机模式),MCU必须等待测量完成。
4)主机模式和主机模式
①主机模式:测量过程中,SCL线被封锁(由传感器控制),在测量时,SHT2x将SCL拉低强制主机进入等待状态。当释放SCL线,表示传感器内部工作接收,可以继续进行数据传送
灰色的部分是传感器控制的,当传感器给MCU返回数据时,每返回一个字节,MCU要返回一个ACK信号,当接收完毕之后,返回一个NACK并接着传输停止时序(P)。
注:校验和可以不需要,不需要则就在数据接收完之后返回NACK
②非主机模式:测量过程中,SCL线是开发状态,可进行其它通信,可以在总线上处理其它I2C总线通信任务。
当MCU要对传感器状态进行查询时,先发起一个开始信号,在发送从机地址和SDA方向位(写),此时从机匹配地址成功,则发送ACK信号,并开始测量。如果传感器完成了测量过程,并且发送ASK信号,那么MCU就可以读取相关数据。如果测量没有完成,传感器发送NACK信号,此时MCU必须重新发送启动传输时序,直至测量完成,MCU读取数据。
注意:测量的数据,温度和湿度均为两个字节。而且无论哪一种传输模式,测量的最大分辨率最大是14bit,数据的第二个字节SDA上最后两位是用来标记相关状态信息。其中bit1表示测量类型(0是温度,1是湿度)
灰色的区域是传感器控制的,如果不需要校验和,那么在接收完两个字节的数据之后就MCU直接发出NACK信号再接着发出停止时序(P),则结束通信。
通常测量的最长时间取决于测量类型和分辨率
在计算MCU通信时间时,测量温度选择最长测量时间是85ms,而测量相对湿度选择最长的时间是29ms
5)软复位
软复位命令是用于无需关闭和再次打开电源的情况下,重新启动传感器系统,重新初始化并恢复默认设置状态。所需要的时间不超过15ms
由MCU发起软复位命令为1111 1110
信号转换(使用于任何一种分辨率)
传感器内部设置的默认分辨率为相对湿度12位和温度14位。SDA的输出数据被转换成两个字节的数据包,高字节MSB在前(左对齐)。每个字节后面都跟随一个应答位。两个状态位,即 LSB的后两位在进行物理计算前须置0。
①计算相对湿度
②计算温度
PS:在进行转化之前要将接收的数据包第一个字节左移八位再加上第二个字节,且第二个字节最低两位要置0。