OV2640像素输出Zui大支持200万像素,支持QCIF(176*144),QVGA(320*240),VGA(640*480),1027*768,1600*1200等像素输出。
具备两种输出格式:
a、原始数据如RGB565,RGB RAW,YUV422;
b、JPEG压缩图像格式
先看下使用STM32F103通过IO模拟采集的JPEG图片,并通过串口上位机显示的效果,图像大小是320*240:
后面会贴出这个小软件,大家可以用磁盘编辑器获取一个JPEG图片的原始数据,然后编译到代码里面,通过串口发送到上位机软件测试一下,JPEG的文件头是FF
D8,文件尾是FF D9;
采集JPEG就不需要像OV7670那样外扩FIFO了,因为JPEG是压缩格式,一张320*240的RGB565图片是150KB大小,而同样像素的JPEG图片只有4-6KB,JPEG虽然是有损压缩,但图像质量还是很好,传输JPEG取代原始数据带来的好处就不更不说了。
看一下使用STM32F407的DCMI采集的200万JPEG的效果:
在设计OV2640的硬件时要注意电源部分,包括IO电源2.8V(3.3V也OK),模拟电源2.8V,内核电源1.3V,数字地与模拟地一点连接。保证时钟源的干净,使用有源晶振提供时钟或通过STM32的PA8引脚输出时钟。我做第一版OV2640模块时就是因为电源部分没有处理好导致采集的JPEG畸变严重,改进以后图像效果很好。
如果使用F103的IO模拟来采集JPEG图像,硬件上用一个与非门将HREF和PICLK做与非后接入STM32的中断,这样就需要两个中断,一个捕获场同步VSYNC,一个捕获HREF和PICLK的与非输出。因为JPEG输出时,场同步是高电平有效,HREF也是高电平有效,在每一个场同步时,HREF和PICLK是不连续的。如下图:
其中黄色为场同步VSYNC信号,蓝色为行同步HREF信号,由图可知,当VSYNC为上升沿时,OV2640开始输出图像数据;当HREF为高电平时,JPEG数据便在像素时钟的同步下输出数据。所以VSYNC和HREF都是高电平有效。OV2640的像素时钟是上升沿有效,它与HREF做与非逻辑接入STM32的外中断后,就是下降沿有效了。