1.DCMI的简介

DCMI全称Digital camera interface(数字摄像头接口),是一种可以采集摄像头数据的一种接口。此接口适用于黑白摄像头、X24 和 X5 摄像头,并可以假定所有预处理(如调整大小)都可以在该摄像头模块中执行。支持原始的按行、帧格式来组织的图像数据,如 YUV、 RGB,也支持接收 JPEG 格式压缩的数据流。接收数据时,主要使用 HSYNC 及 VSYNC 信号来同步。

STM32 的 DCMI 接口整体框图 DCMI 的信号线说明 2.OV5640 传感器简介

图像传感器是摄像头的核心部件,上述摄像头中的图像传感器是一款型号为 OV5640 的 CMOS 类型数字图像传感器。该传感器支持输出最大为 500 万像素的图像 (2592x1944 分辨率),支持使 用 VGA 时序输出图像数据,输出图像的数据格式支持 YUV(422/420)、 YCbCr422、 RGB565 以及 JPEG 格式,若直接输出 JPEG 格式的图像时可大大减少数据量,方便网络传输。它还可以对采 集得的图像进行补偿,支持伽玛曲线、白平衡、饱和度、色度等基础处理。根据不同的分辨率配 置,传感器输出图像数据的帧率从 15-60 帧可调,工作时功率在 150mW-200mW 之间。

OV5640 管脚说明 SIO_C 和 SIO_D 引脚:SIO_C 与 SIO_D 使用的通讯协议跟 I2C 十分类似,在 STM32 中我们完全可以直接用 I2C 硬件外设来控制。此两个管脚用于写入和读取OV5640中的控制寄存器。 RESETB :引脚为低电平时,用于复位整个传感器芯片。 PWDN: 用于控制芯片进入低功耗模式 XCLK: XCLK引脚,它跟 PCLK 是完全不同的, XCLK 是用于驱动整个传感器芯片的时钟信号,是外部输入到 OV5640 的信号;而 PCLK 是 OV5640 输出数据时的同步信号,它是由 OV5640 输出的信号。 XCLK 可以外接晶振或由外部控制器提供,若要类比XCLK 之于 OV5640 就相当于 HSE 时钟输入引脚与 STM32 芯片的关系, PCLK 引脚可类比STM32 的 I2C 外设的 SCL 引脚。

OV5640像素数据输出时序 OV5640 采用 SCCB 协议进行控制,而它输出图像时则使用 VGA 时序 (还可用 SVGA、 UXGA, 这些时序都差不多),这跟控制液晶屏输入图像时很类似。 OV5640 输出图像时,一帧帧地输出, 在帧内的数据一般从左到右,从上到下,一个像素一个像素地输出 (也可通过寄存器修改方向),若我们使用 Y2-Y9 数据线,图像格式设置为 RGB565,进行数据输出时, Y2-Y9数据线会在 1 个像素同步时钟 PCLK 的驱动下发送 1 字节的数据信号,所以 2 个 PCLK 时钟可发送 1 个 RGB565 格式的像素数据。像素数据依次传输,每传输完一行数据时,行同步信号 HREF会输出一个电平跳变信号,每传输完一帧图像时, VSYNC 会输出一个电平跳变信号。

DCMI时序图 3.DCMI编程要点

(1).配置SIO_C,SIO_D的接口,即配置IIC,用于通过IIC接口写入和读取OV5640相关的寄存器。 (2).配置VSYNC(帧同步信号),HSYNC(行同步信号),PIXCLK(像素时钟),D0-D7(像素数据)为复用的IO管脚,配置PWDN,RST管脚为普通的IO输出管脚。 (3).配置DCMI 配置采集模式(连续采集或者单次采集) 配置像素时钟是上升沿有效还是下降沿有效 配置帧同步信号是高电平有效还是低电平有效 配置行同步信号是高电平有效还是低电平有效 配置像素数据的是全采集还是二分之一采集还是四分之一采集 配置像素数据的数据宽度,即用到几根像素数据,一般是8根数据线。 (4).配置DCMI的中断,用于在一帧数据传输完成之后,重新配置DMA。 (5).配置DMA以及DMA的中断,用于从DCMI的数据寄存器中读取像素数据。DCMI 数据寄存器 (DCMI_DR),数字摄像头接口每收到 32 位数据,才触发一次 DMA 请求。 4 字深度的 FIFO 可为 DMA 传输留出足够时间并避免出现 DMA 溢出情况。 (6).启动DCMI以及DMA

参考文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。