嵌入式系列文章
参考:《STM32F429_DM00031020_ENV19.pdf》
本文目的:翻译STM32F429的PRM,深入理解DCMI接口的工作原理,最后将DCMI工作原理转换成驱动代码。
DCMI:Digital camera interface,数字摄像头接口
15.1 介绍
数字摄像头接口是一种同步并行的接口,可以从外部8位、10位、12位或14位宽的CMOS摄像头模组获取高速数据流。支持不同的数据格式:YCbCr4:2:2/RGB565渐进式视频和压缩的数据(JPEG)。
这个接口用于黑白相机、X24和X5相机(24倍变焦和5倍变焦?),并且假设所有预处理(如调整大小)都在相机模块中执行。
15.2 DCMI主要功能
· 8-,10-,12-,或 14-位并行接口;
· 内嵌式或硬线式的行和帧同步;
· 连续或快照模式;
· 裁剪功能;
· 支持下面的数据格式:
– 8/10/12/14位渐进式视频:黑白单色或原始格式.raw原始格式.raw原始格式.raw
– YCbCr 4:2:2YCbCr 4:2:2YCbCr 4:2:2渐进式视频(渐进式progressive,翻译成“逐行扫描”更合适,与interlace隔行扫描相对应)
– RGB 565渐进式视频
– 压缩数据:JPEG
15.3 DCMI针脚
全部是输入引脚。
15.4 DCMI时钟
DCMI时钟2个时钟域:像素时钟PIXCLK和模块时钟HCLK。在信号稳定后,跟随PIXCLK产生的信号在HCLK的上升沿被采样。HCLK域会产生一个使能信号,用于指示来自相机的数据已经稳定且能被采样。PIXCLK的最小周期必须大于2.5倍的HCLK的周期。
备注:
根据STM32的时钟树,假设HCLK配置成180MHz,那么PIXCLK最大的频率不能超过180/2.5=72MHz,对某些相机接口来说,这个频率最大只能采集720p的图像。
15.5 DCMI功能概览
DCMI是一个同步并行接口,可以接收高速(最大可达54MByte/s)数据流。包括高达14根数据线(D13-D0)和一根像素时钟线。像素时钟线极性可编程,这样数据可以在像素时钟的上升沿或下降沿进行捕获。
数据被传送到一个32位的数据寄存器中(DCMI_DR),然后通过通用的DMA通道进行传输。图像缓存由DMA来管理,而不是DCMI接口来管理。
接收到的数据可以组织成行/帧(YUV/RGB/raw模式)或可以是JPEG图像序列。要使能JPEG图片接收,必须设置JPEG位(DCMI_CR寄存器的bit3)。
数据流可以使用HSYNC(水平同步)和VSYNC(垂直同步)这种硬线方式,也可以使用内嵌到数据流中的同步码的方式进行同步。
下图是DCMI模块框图: