DSP

DCMI(数字图像接口)与OV2640 stm32

2019-07-13 20:36发布

本文先介绍了摄像头模块OV2640,又介绍了DCMI。
最后讲解在stm32上相关代码。

一、OV2640

ov2640模块

1.OV2640基本概念

OV2640
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连接的。
对外接口 ov2640初始化
第二步:上电复位,就是PWDN引脚
第三步:读取ID判断设备是否正常,不是必须的。
MCU读取图像过程

DCMI

简介

简介
DCMI

DCMI信号

DCMI信号
DCMI信号说明
PIXCLK下降沿时,捕获数据。
HSYNC,VSYNC有效状态:如上图两者在为高的时候,数据是无效的。

数据说明

DCMI数据说明

DMA

CR中CAPTURE置1时,激活DMA接口。
DMA说明

其他说明

其他说明

寄存器简介

寄存器简介
寄存器2

初始化流程图

初始化流程图
HSYNC和VSYNC低电平有效,也就是数据无效的时候。

硬件连接

stm32硬件连接

摄像头代码

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函数