最近在调试一个sensor,是基于ARM+FPGA构架的 8个sensor的一个全景拍照的平台。FPGA是EP3C25,基带处理芯片是海思的HI3518e。整个框架和原理设计都OK。后面就是调试sensor。
OV5640接口方式,我选用的是DC接口(数字摄像头标准接口,亦或叫DVP、CAMIF接口)。其中DC接口的标准时序是 PCLK,VS,HS,DB[7:0]。根据时序接口方式,调整PCLK,VS,HS等的沿有效性和极性。如果时序和极性不正确可能导致基带芯片无法采集到数据。出现空帧的情况。在实际调试过程中我发现,显示的照片偏绿如下图所示。是整体偏绿:
这种问题我分析了比较长的时间。对应sensor,特别是OV5640这样的sensor,是pad上面用的。一般很少有人调试。资料相对来讲比较少。OV公司保密也比较强大,里面的寄存器讲得很粗糙。
后面我总结了一点我调试的思路,用来方便后面调试的人。
1.要分析数据,很多时候出现全偏录的情况。要分析YUV数据。YUV一般sensor的数据是YUV422.sensor输出的数据设置成YUYV。这样在数据线上面可以看到对应的YUV数据。下图是FPGA的采集到的数据用于分析。
2.其中有一个小技巧就是将sensor里面的test partner设置为黑色数据输出。如果设置为黑色,其中的RGB数据输出为 0 0 255,算出来的YUV就是 0 128 128。所以看到的上面fpga的数据YUV为 0x04 0x80 0x80。
3.根据上面输出的数据情况,和采样后保存的YUV数据。可以分析出是否是数据线有问题,还是存储格式有问题。一开始我以为是我的数据存储空间有问题。以为是YUV 中的UV顺序或是UV的值本来就有问题。因为单纯看Y的数据效果还可以。
4.后面经过仔细分析,发现不是这个问题。是数据线的问题。sensor出来的数据线是DB9~2,基带芯片处理的数据线是 DVI12~4;反向的连接数据线就对了。开始数据出来数据偏绿显示的YUV是, Y U V 0 64 64 。所以分析出来是数据线偏移了。
5.后来调整了数据线,图像正常了。这是我调试后的画面。
照片是晚上照的 效果不是很好。这个问题终于解决了。下面可以开始后面的开发了。