目前下来看测试I2C0的还是在读取部分有点问题。先看波形。
整体是这样的,在函数中有两个读取函数,但是第二个函数等于未发出。
看细节,第一个发送函数结束,应该再开始发送读取温度的寄存器,然后读,结果还是直接读,接着读到的是湿度寄存器的数值。
从计算公式中可以推出来。
所以就有很大的问题了,这个读的就不对的。
从读取函数来看也是正常的,主要是系统的GT911是正常的。都是用的相同函数。
我在中间加了一个延时,这样两个都能发出来了,也都是正确的,但是读不到数据,读取到的也是错误的。
关键函数还是在RT-Thread的里面。
因为SHT20有个特性,就是读取转换时要耗费时间,我们通过函数进行追踪,找到实际发送函数,这里面有定义超时,我们给其加大,原本是10,给加大到1000。编译之后刷写进去,就正常了。
是正确的。至此解决了I2C读取问题。