2018-10-17 PTC08摄像头调试

发现并解决的问题:

1 无法跳出下列循环

#define readLen 256;

u8 i = 0;

for(i = 0; i < readLen + 10; i++)

{

//……

}

u8共256字节,(readLen+10)共266字节,当i累加到257时溢出,又回到i=0,因此无法跳出循环。

2 读取照片数据时只能读取帧头,打印时其他字节全为0(包括帧尾)

①怀疑摄像头串口收发有问题:通过PC串口直接向摄像头发送命令,收发成功,排除

②怀疑摄像头无数据发出:用示波器显示RX口电平情况,发现有连续大量数据传入,排除

③将范围锁定在串口接收函数,通过打印发现接收数据函数返回值(接收字节数)为5,与串口打印数据符合,进一步锁定接收数据函数。接收数据函数在两种情况下跳出while(1),一种是接收到足够字节的数据,另一种是一定时间内接收不到数据,在怀疑第一种情况但验证无果的前提下,怀疑第二种情况,将接收等待时间扩大100后,数据接收成功。

综上所述,摄像头发送数据时在第5个字节和第6个字节中间间隔了较长时间,即发送帧头与照片数据中间延时过长,导致MCU误判为无数据接收,从而跳出接收数据函数。

目前进度:

摄像头调试完成,明天修改MPPT算法、编写看门狗。

思路:

排除硬件问题,寻找BUG来源要从BUG所在函数由果寻因反推,不要怀疑编译器,只看逻辑,排除了其他所有可能,就是剩下的那一种可能。

你可能感兴趣的:(2018-10-17 PTC08摄像头调试)