
SHT30是盛世瑞出品的低端低价温湿度传感器,利用I2C进行数据传输,具有两个可选地址,宽电源电压从2.4V到5.5V。 SHT30芯片有八个引脚:
* N; [, M0 j/ e' c4 d4 |! X, E : }6 C2 t: K) ]5 [7 L' w/ b , x% y( q$ @& i $ N; R. j7 [9 N6 u , K. U& Y4 K; J- N; U 重复性影响SHT30的测量时间,因此就是影响传感器的能量消耗。 通过改变选择ADDR引脚的电压,实现传感器的地址改变。默认地址是ADDR连接VSS时( 0X44),可以修改成0X45。(关于引脚,详情请看数据手册)。 SHT30有两中工作模式 1.单次数据采集模式 通过不同命令,在重复性(高,中,低)和时钟延伸(禁止,使能)方面不同,每个数据包含一个16位温度和一个16位湿度值(按此顺序)组成。 传输如下所示(具体传输过程以数据手册为准): (1)STM32发出START,并发出I2C的地址(7位)+读(1)/写(0)标志位,然后等待SHT30的ACK (2)发出命令高8位数据,等待SHT30的ACK (3)发出命令低8位数据,等待SHT30的ACK (4)STM32发送STOP停止通信。 (5)STM32发出START,并发出I2C的地址(7位)+读(1)/写(0)标志位,然后等待SHT30的ACK (6)传感器将接收读头的接收,并发送两个字节的数据(温度),接着是一个字节的CRC校验另外 (7)传感器发送两个字节的数据(相对湿度),然后是一个字节的CRC校验和。 每发送8位必须接受到STM32回应的ACK条件传感器才会继续发送数据。如果传感器在任何字节的数据之后没有接收到ACK,它就不会继续发送数据。I2C主机可以中止读取传输任何数据字节后,发送NACK状态,如果不能在随后的数据感兴趣,例如CRC字节或第二测量结果,可以了节省时间。 有时钟延伸: 如果没有数据发送,传感器会发出一个ACK,并随后拉下SCL线。SCL线被拖到测量完成为止。一旦测量完成,传感器释放SCL线并发送测量结果。 无时钟延伸: 没有数据存在,传感器响发出一个NACK。 2.周期性数据采集模式 通过不同命令,在重复性(高,中,低)和数据采集频率((0.5, 1, 2, 4 & 10 mps )方面不同,每个数据包含一个16位温度和一个16位湿度值(按此顺序)组成。 测量数据的传输可以通过获取数据命令来启动。如果没有测量数据是I2C读取头报以一个NACK。在读出命令获取数据之后,数据存储器被清除,即没有测量数据存在。 代码如下(是我根据SHT30提供的代码修改): |