SHT30使用的学习过程1SHT30工作模式介绍

SHT30使用的学习过程1SHT30工作模式介绍

代码篇请点击这里

本人是新人小白,欢迎各位大佬指正,本文介绍的是SHT30两种工作模式【手动比心 by zwx lvmm】
看到网上对于sht30的博客很少,我也是刚刚学习使用这个传感器的小白,想把自己学习的经历详细写在这,希望大家一起学习和进步。
Datasheet中的相关内容【使用芯片我觉得还是先啃datasheet比较好】:
首先要弄清楚每个引脚是什么:

引脚 功能
1 SDA I2C数据线,要接10k上拉电阻
2 ADDR (不可悬空)用于选择I2C的地址,当两个或两个以上的sht30接入同一个总线的时候才会使用。一般接地,地址是0x44,若接高电平 则地址是0x45(注意开启信号的时候,发送的8位数据是前七位是地址,就是0x44的后7位 100 0100,后面加一个0表示写,所以开启信号是 1000 1000 既0x88)
3 ALERT (如果不用这个引脚,可以悬空)用来检测如果所测量的数据和写入的最大温湿度值,如果超出了就会有输出的变化(没在官方的datasheet上看到具体的电平变化)
4 SCL I2C时钟线,要接10k上拉电阻
5 VDD 电源正极,2.4-5.5v,必须要接入一个100nf的去耦电容(尽可能的和器件靠的很近)
6 nRESET (不使用的话建议悬空)用来让传感器reset,最低有效脉冲是1us
7 R 没有电器意义的引脚,必须和VSS连接
8 VSS 电源负极(GND)
9 die port 就是背面那个大焊盘,这个官方数据手册里面强制要求接VSS,考虑手动焊接不好接地,在pcb设计的时候,封装这里要加过孔,焊接的时候在过孔中加焊锡(不知道这么做可以不可以,有懂得大佬指点一下)

芯片的使用和通信:
所有的指令和数据都对应一个16位的地址空间,并且所有的数据和命令都有CRC校验保护。命令字是3bit的CRC校验,数据是8bit的CRC校验。写模式下强制要求数据或者命令带有CRC校验,否则不会接收数据。读模式下,CRC校验留给主机进行。
工作在单射模式(Single Shot Mode)流程:

首先是写操作,写入一个16bit的命令。

I2C开始信号->7位I2C地址+0(写操作标志位)(前面介绍了,如果ADDR接低电平,那么这里就是0x88,如果接高电平就是0x8a)->命令MSB->命令LSB(这里的16位数据0x2C06是默认的操作,表示的意思是高速测量开启时钟拉伸)-> I2C停止信号。

接下来是读操作,读取返回的数值。

I2C开始信号->7位I2C地址+1(写操作标志位)(ADDR接低电平0x89,ADDR接高电平0x8b下以接低电平为例)->拉低时钟线->16位温度数据+8位CRC校验+16位湿度数据+8位CRC校验-> I2C停止信号

工作在周期获取模式(Periodic Data Acquisition Mode)下:

时钟拉伸在这个模式下禁用,分为高中低可重复性测量,测量周期为0.5、1、2、4、10(单位 次/秒)(这种模式下最快的测量速度是1秒10次)如果传感器在一种工作模式下正在测量数据,此时要发送命令其他命令,推荐先发送一次中断命令(详见下文中断命令),让传感器停止当前的测量,进入单射模式,然后再发送命令。具体的命令详见datasheet。

流程:
2C开始信号->7位I2C地址+0(写操作标志位)(前面介绍了,如果ADDR接低电平,那么这里就是0x88,如果接高电平就是0x8a)->命令MSB->命令LSB(eg 0x2130 高可重复性,1秒测量一次)-> I2C停止信号。

工作在这个模式下的读取数据,随时可以进行测量,需要发送一个读取命令(0xE000)
一旦读取时序结束之后,寄存器中的数值就会清零,如果这时再一次读取数据将得到0。下一次测量结束后,寄存器的值就会重新写入。

流程:
2C开始信号->7位I2C地址+0(写操作标志位)(前面介绍了,如果ADDR接低电平,那么这里就是0x88,如果接高电平就是0x8a)->命令MSB->命令LSB(0xE000)-> I2C停止信号-> I2C开始信号->7位I2C地址+1(写操作标志位)(0x89)->拉低时钟线->16位温度数据+8位CRC校验+16位湿度数据+8位CRC校验-> I2C停止信号

中断命令(停止周期数据测量模式):
发送命令0x3093,用于打断当前的周期数据获取模式来发送其他命令(除获取数据命令0xE000)一旦这个命令发出之后,当结束当前数据测量后就会进入单射模式,最多15ms(依据所选的哪种可重复性决定)

你可能感兴趣的:(STM32)