用于意法半导体STM32 MCU的数字照相机接口(DCMI,Digital CaMera Interface)

更多內容請註冊成會員並下載參閱附檔文件

引言
随着市场对更高图像质量的需求不断增加,成像技术持续发展,各种技术(例如,3D、计算、运动和红外线)不断涌现。
如今的成像应用对高质量、易用性、功率效率、高度集成、快速上市和成本效益提出了全面要求。
为了满足这些要求,STM32 MCU内置数字照相机接口(DCMI),能够连接高效的并行照相机模块。
此外,STM32 MCU还提供许多性能等级(CPU、MCU子系统、DSP和FPU)。它们还提供各种功耗模式、丰富的外设和接口组合(SPI、UART、I2C、SDIO、USB、ETHERNET、I2S...)、丰富的图形产品组合(LTDC、QSPI、DMA2D...)和业界领先的开发环境,为复杂应用和连接解决方案(IOT)提供保障。
本应用笔记将向STM32用户介绍一系列基本概念,并为DCMI的功能、架构和配置提供通俗易懂的说明。此外,还提供了各种具体示例作为支持。

1.1 成像的基本概念

本节提供像场的简介以及基本概念和原理(例如像素、分辨率、色深和消隐)的概述。
• 像素:图像的每个点均体现了彩色图像的颜色或黑白照片的灰度。通过数值逼近重建最终图像。该数字图像是由物理点组成的二维数组。每个点称为一个像素(源自图像元素)。换句话说,像素是图像的最小可控元素。每个像素均可寻址。
图 1显示了原始图像与数值逼近之间的差异。


• 分辨率:图像中像素的数量。像素越多,图像尺寸越大。当图像尺寸相同时,像素的数量越多,图像包含的细节越丰富。
• 色深(位深):用于指示像素颜色的位数。它也被称为每像素位数(bpp)。
示例:
– 对于二值图像,每个像素包含一位。每个像素为黑色或白色(0或1)。
– 对于灰度图,图像通常为2 bpp(每个像素可以有4级灰阶中的1级)至8 bbp
(每个像素可以有256级灰阶中的1级)。
– 对于彩色图像,每个像素的位数为8至24不等(每个像素最多可以有16777216
种可能的颜色)。
• 帧率(视频):每秒传输的帧(或图像)数,表示为帧每秒(FPS)。

1.2 照相机模块
照相机模块由四部分组成:图像传感器、镜头、印刷电路板(PCB)和接口。
图 4所示为一些常用照相机模块的示例。

1.2.1 照相机模块的组件
下文描述了照相机模块的四个组件:
图像传感器
它是一种模拟设备,能够将接收到的光转换为电子信号。这些信号传输构成数字图像的信息。
数字照相机中可以使用两种类型的传感器:
• CCD(电荷耦合器件)传感器
• CMOS(互补金属氧化物半导体)传感器。
二者都将光转换为电子信号,但是有各自的转换方法。由于性能持续改进且成本不断下降,CMOS成像装置已在数字摄影领域占据主导地位。
镜头
镜头是一种光学镜片,能够严格复制图像传感器捕获的实际图像。挑选合适的镜头是用户创造力的一部分,并会显著影响图像质量。
印刷电路板 (PCB)
PCB是一种由电子元件组成的板,用于确保良好的极化并保护图像传感器。
PCB还为照相机模块的所有其他部分提供支持。
照相机模块的互联
照相机接口是一种桥接器,能够将图像传感器连接到嵌入式系统并发送或接收信号。照相机与嵌入式系统之间传输的信号主要是:
• 控制信号
• 图像数据信号
• 电源信号
• 照相机配置信号。
根据数据信号的传输方式,可将照相机接口分为两种类型:并行和串行接口。

1.2.2 照相机模块互联(并行接口)
如上文所述,照相机模块需要四种主要类型的信号来正确发送图像数据:控制信号、图像数据信号、电源信号和照相机配置信号。
图 5所示为CMOS传感器及其与MCU互联的典型框图。

控制信号
这些信号用于时钟生成和数据传输同步。必须根据照相机规格提供照相机时钟。
照相机还提供数据同步信号:
• HSYNC,用于行同步
• VSYNC,用于帧同步。
图像数据信号
每一个这样的信号发送一位图像数据。图像数据信号宽度代表每个像素时钟要传输的位数。该数值取决于照相机模块的并行接口和嵌入式系统接口。
电源信号
与任何嵌入式电子系统一样,照相机模块需要电源。照相机模块的数据手册中指定了模块的工作电压。
配置信号
这些信号用于:
• 配置合适的图像特性,例如分辨率、格式和帧率
• 配置对比度和亮度
• 选择接口类型(照相机模块可支持多个接口:一个并行接口和一个串行接口。然后,用
户应根据应用选择最方便的接口。)
大多数照相机模块通过I2C通信总线实现参数化。

2 STM32数字照相机接口(DCMI)总览

本节提供了不同STM32器件的数字照相机接口(DCMI)可用性的综合概述,并给出了关于STM32 MCU架构中DCMI集成的简单易懂的说明。

2.1 数字摄像头接口 (DCMI)
数字照相机接口(DCMI)是一种同步并行数据总线。它可以轻松集成并轻松适应应用的特殊要求。DCMI连接8、10、12和14位CMOS照相机模块,并支持多种数据格式。

2.2 不同STM32 MCU的DCMI可用性和特性
表 2对内置DCMI的STM32器件进行了汇总;它还显示了方便DCMI操作或可以在同一应用中与DCMI一起使用的其他硬件资源的可用性。
DCMI应用需要帧缓冲区来存储采集的图像。因此,必须根据图像大小和传输速度使用合适的目标存储区。
在某些应用中,必须连接外部存储器,以便提供较大空间用于数据存储。因此,可以使用Quad-SPI。有关更多详细信息,请参考应用笔记STM32微控制器上的Quad-SPI接口(AN4760)。
DMA2D(Chrom-ART Accelerator™控制器)可用于色彩空间转换(例如RGB565至ARGB8888),或从一个存储区到另一个存储区的数据转移。
JPEG编解码器能够进行数据压缩(JPEG编码)或解压缩(JPEG解码)。



2.3 智能架构中的DCMI
DCMI通过AHB2外设总线连接到AHB总线矩阵。DMA将访问它以便传输接收到的图像数据。所接收数据的目标位置取决于应用。
STM32 MCU的智能架构允许:
• DMA(作为AHB主设备)在CPU处理之前采集的图像(图像编号n)时自主访问AHB2外设
并将接收的数据(图像编号n+1)传输到存储器。
• 使用DMA2D(作为AHB主设备)传输或修改接收的数据并将CPU资源保留用于其他任务
• 通过多层总线矩阵实现存储器吞吐量改善和性能改进。

2.4 具有DCMI和/或照相机模块的参考板
ST提供许多STM32参考板,例如NUCLEO、Discovery和EVAL板。其中的大多数内置DCMI,有些则具有板载照相机模块。
可根据应用和硬件资源选择板。
表 4总结了各种STM32参考板的DCMI、照相机模块和存储器可用性。



3 DCMI 描述
本节将详细描述DCMI及其处理图像数据和同步信号的方式。
注:DCMI仅支持从设备输入模式。
3.1 硬件接口
DCMI 包括:
• 最多14条数据线(D13-D0)
• 像素时钟线DCMI_PIXCLK
• DCMI_HSYNC线(水平同步)
• DCMI_VSYNC线(垂直同步)。
DCMI包含最多17路输入。DCMI输入的数量(11、13、15或17路信号)随用户使能的数据线数量(8、10、12或14)而变化。
如果使用小于14位的数据宽度,则不得通过GPIO复用功能将未使用引脚分配给DCMI。可将未使用输入引脚分配给其他外设。
对于内嵌码同步,DCMI只需要9路输入(8路数据线和DCMI_PIXCLK)就能正常工作。8个未使用引脚可用于GPIO或其他功能。

 如果选择x位数据宽度(使能x路数据线,x为8、10、12或14),每个DCMI_PIXCLK周期将传输x位图像(或视频)数据,并压缩到32位寄存器中。


3.2 照相机模块和DCMI的互联
如第 1.2.2节:照相机模块互联(并行接口)所述,照相机模块通过三类信号连接到DCMI:
• DCMI时钟和数据信号
• I2C配置信号


3.3 DCMI 功能说明
以下步骤总结了内部DCMI元件操作,并给出了通过系统总线矩阵的数据流的示例:
• 在接收到不同信号后,同步器控制通过DCMI不同元件(数据提取器、FIFO和32位数据寄
存器)的数据流。
• 通过提取器提取的数据在4字FIFO中打包,然后在32位寄存器中排序。
• 在寄存器中将32位数据块打包后,将生成DMA请求。
• DMA将数据传输至相应的目标存储区。
• 存储器中保存的数据的处理方式可能存在差异,具体取决于应用。
注:假定在照相机模块中执行所有图像预处理。

3.4 数据同步
照相机接口具有可配置并行数据接口(8至14路数据线),以及像素时钟线DCMI_PIXCLK(上升/下降沿配置)、水平同步线DCMI_HSYNC和垂直同步线DCMI_VSYNC,可设定极性。
DCMI_PIXCLK和AHB时钟必须满足2.5的最小AHB/DCMI_PIXCLK比值。
某些照相机模块支持两种类型的同步,而其他则支持硬件或内嵌码同步。

3.5 捕获模式
DCMI支持两种类型的捕获:快照(一帧)和连续抓取(连续多帧)。
根据DCMI_CR寄存器的配置,用户可以通过选择要捕获的字节、行和帧来控制捕获率。
这些功能用于转换图像的颜色格式和/或降低图像分辨率(通过每两行捕获一行,将垂直分辨率降低一半)。

3.6 数据格式和存储
DCMI支持以下数据格式:
• 8位逐行视频:单色或原始拜尔格式
• YCbCr 4:2:2 逐行视频
• RGB565逐行视频
• 压缩数据(JPEG)
对于单色、RGB或YCbCr数据:
• 最大输入大小为2048 * 2048像素
• 以光栅模式保存帧缓冲区。
JPEG压缩数据没有大小限制。
对于单色、RGB和YCbCr格式,以光栅模式保存帧缓冲区,如图 25所示。


3.7 其他功能
3.7.1 裁剪功能
照相机接口可通过裁剪功能从收到的图像中选择一个矩形窗口。
在32位寄存器DCMI_CWSTRT中指定起始坐标(左上角)。
在32位寄存器DCMI_CWSIZE中,以像素时钟数(水平尺寸)和行数(垂直尺寸)指定窗口大小。

4 DCMI 配置
在选择与STM32 MCU相连的照相机模块时,用户应考虑一些这样的参数:像素时钟、支持的数据格式和分辨率。
为了正确地实现其应用,用户需要执行以下配置:
• 配置GPIOs。
• 配置时序和时钟。
• 配置DCMI外设。
• 配置DMA。
• 配置照相机模块:
– 配置I2C以便进行照相机模块的配置和控制
– 设置参数,例如对比度、亮度、色彩效果、极性和数据格式。
注:建议在开始配置前复位DCMI外设和照相机模块。DCMI可通过置位RCC_AHB2RSTR寄存器中的相应位来复位,这可以复位时钟域。

5 功耗和性能考虑
5.1 功耗
为了在应用处于低功耗模式时节省更多能量,建议在STM32进入低功耗模式之前使照相机模块进入低功耗模式。
使照相机模块进入低功耗模式可显著降低功耗。
以OV9655 CMOS传感器为例:
• 在激活模式下,工作电流为20 mA。
• 在待机模式下,对于I2C发起的待机,电流需求降至1 mA(内部电路活动暂停但时钟不停止),而对于引脚发起的待机,则降至10 μA(内部器件时钟停止且所有内部计数器复位)。有关详细信息,请参见相应的照相机数据手册。

5.2 性能考虑
对于所有STM32 MCU而言,每个像素时钟要传输的字节数取决于扩展数据模式:
• 如果将DCMI配置为接收8位数据,照相机接口将用4个像素时钟周期捕获一个32位数据
字。
• 如果将DCMI配置为接收10、12或14位数据,照相机接口将用2个像素时钟周期捕获一个32位数据字。

表 10总结了使用不同数据宽度配置时的最大数据流。



6 DCMI应用示例
本章提供大量与DCMI的使用有关的信息,以及示例实现的分步描述。

6.1 DCMI应用场景示例
使用DCMI和其他STM32外设可实现多种成像应用。下面是一些应用示例:
• 机器视觉
• 玩具
• 生物统计
• 安全和视频监视
• 门铃和家居自动化
• 工业监控系统和自动化检查
• 系统控制
• 访问控制系统
• 条形码扫描
• 视频会议
• 无人机
• 实时视频数据流和电池供电摄影机。
图 43提供了使用STM32 MCU的应用示例,它允许用户捕获数据、将数据保存在内部或
外部存储器中、显示数据、通过互联网共享数据以及与人类通信。

6.2 STM32Cube固件示例
STM32CubeF2、STM32CubeF4、STM32CubeF7和STM32CubeL4固件包提供大量在相应的
板上实现并测试的示例。表 11提供了不同STM32Cube固件的DCMI示例和应用的总览。

6.3 基于STM32CubeMX的DCMI示例
本节描述了五个使用DCMI的典型示例:
• RGB数据的捕获和显示:捕获的数据为RGB565格式,QVGA(320x240)分辨率,保存在
SDRAM中并显示在LCD-TFT上。
• YCbCr数据的捕获:捕获的数据为YCbCr格式,QVGA(320x240)分辨率,保存在SDRAM
中。
• 仅Y分量数据的捕获:DCMI被配置为接收仅Y分量数据,数据将保存在SDRAM中。
• SxGA分辨率捕获(YCbCr数据格式):捕获的数据为YCbCr格式,SxGA(1280x1024)分
辨率,保存在SDRAM中。
• JPEG数据的捕获:捕获的数据为JPEG格式,将保存在SDRAM中。
所有这些示例均在32F746GDISCOVERY上使用STM32F4DIS-CAM(OV9655 CMOS传感
器)实现,只有JPEG数据捕获是在STM324x9I-EVAL(OV2640 CMOS传感器)上实现
如图 44所示,应用包含三个主要步骤:
• 将接收到的数据通过其外设端口从DCMI导入到DMA(将暂时保存在FIFO中)。
• 将数据从FIFO传输到SDRAM
• 从SDRAM导入要在LCD-TFT上显示的数据,仅适用于RGB数据格式。对于YCbCr或JPEG数据
格式,用户必须将接收到的数据转换为要显示的RGB格式。


7 支持的设备
要知道CMOS传感器(照相机模块)与DCMI是否兼容,用户必须检查CMOS传感器规格中的以下几点:
• 并行接口(8、10、12或14位)
• 控制信号(VSYNC、HSYNC和PIXCLK)
• 支持的像素时钟频率输出
• 支持的数据输出。
与STM32 DCMI兼容的照相机模块和CMOS传感器有许多。表 12中提到了一些照相机模块。

8 结论
DCMI外设提供了一种将照相机模块连接到STM32 MCU的高效接口,该接口支持高速度、
高分辨率、各种数据格式和数据宽度。
与各种外设和STM32 MCU中集成的接口一起使用时,得益于STM32智能架构,DCMI可以
用在大型的复杂成像应用中。
本应用笔记涵盖不同STM32 MCU的DCMI外设,提供正确使用DCMI和成功实现应用所必需的所有信息,从兼容照相机模块的选择到具体示例的实现。


技术文档

类型标题档案
硬件Application note

★博文内容参考自 网站,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

参考来源

意法半导体: https://www.st.com/resource/en/application_note/an5020-digital-camera-interface-dcmi-on-stm32-mcus-stmicroelectronics.pdf

评论