在f429芯片集成了一个DCMI接口,可以与大多数数字摄像头直接相连,实现数据高速回传,此外f429中还有一个LCD控制器,如果如果DCMI和LCD显示缓存区是一样的,那么就可以实现摄像图像的实时显示。起初相要做的是刚刚所叙述的功能。但是手上有的是discovery板子,板载芯片是stm32f429zit6,管脚不够多,导致DCMI和LCD有管脚冲突(DCMI_HSYNC和LCD_VSYNC),两个功能不能同时使用。于是就换了种方案来实现,使用ov2640的jpeg模式,图像数据经过串口回传给电脑,使用电脑显示。
经过分析,该程序主要解决两个部分的配置:1.串口 2.DCMI管脚
1. 串口
这里的串口配置可以使用最基本的配置即可,没有什么太特殊的。
2.DCMI配置
记得STM官方有提供过ov2640的驱动的,具体在哪里由于时间太久不知道了。将文件copy到工程中。首先要先完成管脚配置。这个在void OV2640_HW_Init(void)中实现。其次要完成DMA的配置,这里使用了双缓冲DMA。配置DMA在void OV2640_Init(ImageFormat_TypeDef ImageFormat)中完成。此外官方例程中的OV_Init中没有完成jpeg格式的支持需要自己添加,具体代码看程序。比较重要的一点就是要开启DCMI_JPEGCmd(ENABLE)。
到此就基本完成了。编译工程,就可以使用串口图像助手完成图像的读取。由于串口速度慢的原因,图像帧率只有1.5 frame/s。这主要是由于串口速度慢的原因。这个速度慢得要死,就当娱乐练手吧。
附件中有:可运行的程序还有一个串口图像助手。连线按照void OV2640_HW_Init(void)中配置的即可,或者适当修改。
STM32F4_OV2640.rar
(528.23 KB)
图像串口.rar
(177.33 KB)
|