问题现象:
项目上,部分GY-MCU90640和单片机通讯异常,在LCD上显示为三项温度均为0℃。
通讯正常的探头显示正常温度(这是一句废话!)
排查思路:
1、使用GY-MCU90640的PC软件直连GY-MCU90640探头。测试结果正常。
2、因为在生产中需要将探头和探头上的PCB分开,所以一开始怀疑是连接线和电源的问题,所以开始向这方面挺进~~
2.1 电源
使用万用表测量电压值,结果正常。
2.2 连线
用万用表测通断,正常。
向厂家咨询此方面问题,厂家怀疑连线可能收到干扰,建议探头与PCB间连线SCL缠绕GND或者使用屏蔽线。按照厂家建议进行处理,结果问题依然存在。
3、对数据进行排查
使用USB转TTL转换头, RX接传感器RX,TX 接传感器TX GND接传感器GND。分别接通讯正常探头和通讯异常探头,得两组数据,经通讯协议核算,数据有偏差,但在正常范围内。此时以为测得数据为单片机内存储的数据,其实不然,后见分晓。
4.对程序代码进行分析
在代码中,看到有一个程序段是这样写的:
if(jyyy1==jyyy2)
{ wdyxbz=1;
mm=0;
for(b=2;b<771;b++)
{
jyyy1=256*(uint)rx_buffer0[2*b+1]+(uint)rx_buffer0[2*b];
rx_buffer0[mm]&#