本文先介绍了摄像头模块OV2640,又介绍了DCMI。
最后讲解在stm32上相关代码。
一、OV2640
1.OV2640基本概念
CMOS
SCCB,所有图像处理过程可以通过SCCB接口编程
IIC
- 支持按比例缩小(从SXGA到40*30的任何尺寸),通过DSP转换成需要的任何尺寸
PCLK: 一个时钟,一个像素的时候是Raw,半个像素是RGB565(一个像素2个字节,所以需要2个时钟)
VSYNC: 每一帧都有一个同步信号,高或者低是自己设定的。
HREF/HSYNC:行数据有效的时候一般是高。
2.OV2640时序
2.1行时序
输出是以行为单位的。
在PCLK上升沿和HREF高电平期间进行输出的
在1个或者2个上升沿读取pn,最高到p1599
因为stm32F4XX由DCMI所以需要的36MHz是完全没问题的。
2.2帧时序
帧:包含了一帧需要的所有行数。
帧开始:一个VSYNC脉冲。
HREF变高:则行有效,就读取一行。
3.窗口设置
3.OV2640模块
PWDN:power down引脚
NC是未用到引脚
10个数据线是从Y2~Y9连接的。
第二步:上电复位,就是PWDN引脚
第三步:读取ID判断设备是否正常,不是必须的。
DCMI
简介
DCMI信号
PIXCLK下降沿时,捕获数据。
HSYNC,VSYNC有效状态:如上图两者在为高的时候,数据是无效的。
数据说明
DMA
CR中CAPTURE置1时,激活DMA接口。
其他说明
寄存器简介
初始化流程图
HSYNC和VSYNC低电平有效,也就是数据无效的时候。
硬件连接
摄像头代码
OV2640驱动代码
1, SCCB_Init函数
初始化SCCB接口,初始化PD6,PD7,这是DCMI SCL和SDA
2, OV2640_Init函数
3, OV2640_JPEG_Mode函数
4, OV2640_RGB565_Mode函数
5, OV2640_ImageWin_Set函数
6, OV2640_OutSize_Set函数
DCMI驱动代码
1, My_DCMI_Init函数
2, DCMI_DMA_Init函数
3, DCMI_Start函数
4, DCMI_Stop函数
5, DCMI_IRQHandler函数