本帖最后由 sylar^z 于 2020-3-17 13:45 编辑
SHT31是一款新型数字传感器,它具有模拟信号或I2C接口来获取温度和湿度数据。SHT31 Smart Gadget上是I2C接口的SHT31芯片。其I2C的最大速度可达到1MHz。本次测试本想验证其1MHz的速度,无奈手上的开发板性能和主频不足,无论硬件I2C或则模拟I2C(测试最大达到500+KHz)都无法达到1MHz的速度。所以本次测试了SHT31 Smart Gadget上nrf51822的I2C速度,并通过手上的NUCLEO-L011K4开发板读取SHT31数据并显示。
首先把SHT31 Smart Gadget上需要用到的端子线引出来。
通过引出的SHT31 I2C端子,连上逻辑分析仪。就可以看到nrf51822的I2C通讯时序了。
这是写入采集温湿度数据指令的时序。
写入指令为0x2416。
根据SHT31手册上指令说明,这是设定SHT31的采集模式为非始终展宽式慢速采集的。
这是读取温湿度数据的时序。
从时序的周期为2.6us来看,频率为384.62KHz,程序设定的I2C速度应该为400KHz。
接下去外接NUCLEO-L011K4开发板,尝试与SHT31通讯,读取数据。NUCLEO-L011K4板载了STM32L011K4芯片,主频32MHz。
之前在SHT31 Smart Gadget上焊接了nrf51822的调试端口。通过调试端口把nrf51822芯片的程序擦除,以防NUCLEO-L011K4开发板读取SHT31数据时,与nrf51822冲突。
NUCLEO-L011K4分别连接SHT31 和OLED显示屏。图片有点模糊,显示的温度13.4℃,湿度57.6%。
下图是NUCLEO-L011K4读取SHT31数据的时序图。
根据SHT31的手册说明,通过公式了计算出
温度T = (175 * 0x550F / 65535)-45 = 13.14℃
相对湿度RH=100*0x931A/65535=57.46%
这个时序与上图的屏幕显示不是同一时间点,所以数据不完全对应。总体来所,温度的精度为± 0.2℃,实际采集的数据也比较稳定。而相对湿度的精度为± 2%,实际采集的数据也是有些跳动,但都在± 2%以内。
此内容由EEWORLD论坛网友sylar^z原创,如需转载或用于商业用途需征得作者同意并注明出处