-00-开始【OV5640】

来源:互联网 发布:矩阵的初等变换 编辑:程序博客网 时间:2024/06/05 03:50

最近做了一块转接板,把OV5640模块接入了FPGA开发板,昨天终于能够正常显示,没有问题了。 后面搞一版稳定的代码,然后把RGB565改成YUV试试显示效果有没有提升。

先来看看图,晚上测的,所以噪点比较多:
640×480 @60Hz
这里写图片描述

开发板连接
这里写图片描述

开发板连接
这里写图片描述

开发板连接
这里写图片描述

中间还是遇到了一些问题的。

RGB565是2个pclk传输2个字节{R[4:0], G[5:3]} {G[2:0], B[4:0]},颜色不对,检查到原因是我把2个字节的输入顺序搞反了,现已解决。
下图是摄像头捕获图像的输出,先不管条状问题。
这里写图片描述

下图中解决了像素字节的输入问题,条状问题还是存在的。
这里写图片描述

解决了像素字节的输入问题,条状问题还是存在的。
在640*480的分辨率下测试,分析是我代码里面fifo的存取出了问题,导致了数据错位,但是我把逻辑里面的fifo关掉,直接使用Xilinx的v_vid_in_axi4s IP核直接采集摄像头DVP信号,仍然有条状问题,要哭了`TT。
又想了想,就算fifo有溢出或者什么问题,也不会出现条状,应该是斜着的情况或者是乱乱的图像,不可能像这样有点没规律有点有规律的,况且一开始自己写的代码中的fifo都是做过综合后仿真的,应该没有问题啊。接着我把分辨率改小了,发现在320×240和160×120下,输出竟然是正常的,我就怀疑是摄像头输出的数据有问题,但是我用逻辑分析仪测了信号,DVP的时序没有问题啊。。。会不会是复位过程有问题,复位准备时间太短?导致cmos传感器、ISP没有准备好,就开始了发送。
摄像头SCCB接口配置代码是从网上一个做stm32采集OV5640的代码中借鉴来的~~里面有一条复位指令看起来有点出现的不是时候,我按照参考设计的代码,重新梳理了一遍,主要是调整了摄像头的上电、复位过程,重新测试,终于OK了!!看来我的逻辑代码是没有问题的。。真是自己把自己坑了。

期间还遇到过一个问题,下载了3个版本的SCCB驱动代码,都是STM32的,都能输出DVP时序,但也都有个问题,用逻辑分析仪看不到VSYNC信号的变化。我不得不看这datasheet又改了一个与VSYNC相关的寄存器后才能正常的DVP输出。
这个甚是奇怪,按理说他们开发板的代码肯定应该可以使用的,为什么我测不到vsync信号。。。(写到这里,突然想到,条状问题解决后我还没有重新测过vsync信号,是不是我复位过程的错误,导致了这个问题。)

最终试了一下,问题解决~
1280×800 @30Hz,彩条,中间的一条图像是动态移动的
这里写图片描述

0 0