德州仪器的温湿度传感器,想不到老牌大厂也会有这种低级错误。
这个传感器是I2C总线读写的。
写数据没问题。
读数据就出现了非常奇怪的BUG。
尝试读温湿度数据寄存器,每次上机后只能读几组温湿度数据,然后就死机了,并且,这几组数据还不一致,而且显然是错误的数据。搞得我百思不得其解,没办法,尝试读编号、制造商等数据寄存器,发现完全没问题,抓狂了,搞了大半天,怀疑是初始化时间不够或者数据准备时间不够,反复的改,依然不行。而且,这个传感器的代码和SHT35通用,我用SHT35装上去,可以完美运行,所以我就排除了代码逻辑的问题。
我是按照这个时序读的数据,温度和湿度数据各一个CRC校验码,温度的CRC码是不得不读的,官方给的说法是,可以不读湿度的CRC,相当于一次读5个Byte,一开始CRC校验我没管,只看温湿度数据,然后出了问题,就想干脆把湿度的CRC也一起读回来,看看CRC对不对,谁知道改了代码后,立马就正常了。等于说,这个传感器,你必须读6个Byte,他才能正常运行,太坑了。