打印
[其他ST产品]

使用DCMI(DVP)驱动OV2640

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
21
工程师犹饿死|  楼主 | 2023-11-26 20:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
1.4 像素输出时序
单个像素大小取决于图像格式,如RGB565格式单个像素大小为2字节。

OV2640输出的每帧图像的数据默认从左到右,从上到下输出每个采集像素(可通过寄存器修改方向),如下图所示。与控制液晶屏输出图像数据类似。

使用特权

评论回复
22
工程师犹饿死|  楼主 | 2023-11-26 20:17 | 只看该作者
OV2640输出图像时则使用UXGA1600×1200@15fps, SVGA@30fps, 或CIF@60fps时序,通过COM7寄存器切换模式。



自定义窗口像素范围:

UXGA:2 x 4 to 1632 x 1220
SVGA:OV2640固定为800 x 600
CIF:固定为408 x 304

使用特权

评论回复
23
工程师犹饿死|  楼主 | 2023-11-26 20:18 | 只看该作者
它们的像素输出格式如下图所示:

使用特权

评论回复
24
工程师犹饿死|  楼主 | 2023-11-26 20:18 | 只看该作者
下面以UXGA为例进行分析:

数据在PCLK上升沿阶段维持稳定,并在1个像素同步时钟PCLK的驱动下发送[9:0]位数据信号。

当行同步信号HREF为高电平时,像素数据依次传输,每传完一行数据时,HREF输出一个电平跳变信号间隔;当帧同步信号VSYNC为低电平时,各行的像素数据依次开始传输,每传完一帧图像时,VSYNC会输出一个电平跳变信号。

使用特权

评论回复
25
工程师犹饿死|  楼主 | 2023-11-26 20:19 | 只看该作者

使用特权

评论回复
26
工程师犹饿死|  楼主 | 2023-11-26 20:19 | 只看该作者
UXGA模式下的Frame/Pixel Rates:

使用特权

评论回复
27
工程师犹饿死|  楼主 | 2023-11-26 20:19 | 只看该作者
STM32F4系列的控制器具有DCMI(Digital camera Interface)数字摄像头接口,它支持使用类似VGA时序获取图像数据流,支持原始的按行、帧格式来组织的图像数据,如YUV、RGB,也支持接收JPEG格式压缩的数据流。接收数据时,主要使用HSYNC及VSYNC信号来同步。

▲ DCMI接口顶层框图

使用特权

评论回复
28
工程师犹饿死|  楼主 | 2023-11-26 20:20 | 只看该作者
2.1 外部接口及时序
DCMI向外部引出的信号线,方向均为输入:



其中DCMI_D数据线的数量可选8、10、12或14位(通过DCMI_CR的EDM[1:0]控制]),其中10/12/14需扩展到16位进行存储。

使用特权

评论回复
29
工程师犹饿死|  楼主 | 2023-11-26 20:20 | 只看该作者
以10位数据为例,此时DCMI接口将捕获输入至D[0…9]的10位数据,将其存至16位字的低10位,其余最高有效位清零(位11~15)。因此,此情况下每两个像素时钟周期会生成1个32位的字。



一般采用某端口的编号连续的引脚读取数据。如传输8位数据时,采用PB8~PB15引脚读取,直接读取GPIOB端口IDR寄存器的高8位即可。

使用特权

评论回复
30
工程师犹饿死|  楼主 | 2023-11-26 20:20 | 只看该作者
DCMI通讯时序示例:

图中DCMI_PIXCLK的捕获沿为下降沿,DCMI_HSYNC和DCMI_VSYNC的有效电平为1。(捕获沿、有效电平均可通过寄存器配置,HSYNC和VSYNC的有效电平指的是采集完一行/帧图像后的状态电平)

使用特权

评论回复
31
工程师犹饿死|  楼主 | 2023-11-26 20:21 | 只看该作者
2.2 DCMI时钟
STM32内部使用HCLK(168M)为DCMI外设提供时钟源,从DCMI引出DCMI_IT信号至中断控制器,并可通过DMA_REQ信号发送DMA请求。

DCMI从外部接收数据时,在HCLK的上升沿时对PIXCLK同步的信号进行采样,PIXCLK的最大周期必须大于2.5 个 HCLK 周期,即最高频率为HCLK的1/4(42M)。

使用特权

评论回复
32
工程师犹饿死|  楼主 | 2023-11-26 20:21 | 只看该作者
2.3 DCMI功能概述



▲ DCMI接口的内部结构

使用特权

评论回复
33
工程师犹饿死|  楼主 | 2023-11-26 20:21 | 只看该作者
2.3.1 同步器
2.3.1.1 硬件同步模式
使用HSYNC和VSYNC作为同步信号的方式(OV2640即采用此同步方式),VSYNC用于指示一帧图像的起始, HSYNC被用作数据有效信号。其时序图如下图所示:

HSYNC与VSYNC的有效极性通过DCMI_CR的HSPOL位和VSPOL位配置。


使用特权

评论回复
34
工程师犹饿死|  楼主 | 2023-11-26 20:21 | 只看该作者
根据摄像头模块/模式的不同,可能在水平/垂直同步期间内发送数据,但此时由于系统会忽略HSYNC/VSYNC信号有效电平期间内接收的所有数据,HSYNC/VSYNC信号相当于消隐信号。

选择硬件同步模式并启用捕获(DCMI_CR中的CAPTURE位置1)时,数据传输将与VSYNC信号的无效电平(从有效电平切换到无效电平,即开始下一帧时)同步,每一帧结束时都将激活VSIF(垂直同步中断标志)。

注意:对于压缩数据(如JPEG格式),DCMI仅支持硬件同步模式。

使用特权

评论回复
35
工程师犹饿死|  楼主 | 2023-11-26 20:22 | 只看该作者
2.3.1.2 内嵌码同步模式
该同步模式一般在特定场合下使用。

使用数据流中嵌入的特定的32 位码来表示同步信息,并且需用0x00和0xFF来表示编码,所以要确保 0x00 和 0xFF 值仅用于同步(不用于数据中)。共有 4 种同步码类型,均采用 0xFF0000XY 格式(XY值可编程)。

使用特权

评论回复
36
工程师犹饿死|  楼主 | 2023-11-26 20:23 | 只看该作者
摄像头2种模式下的同步码如下表所示:



若FS=0xff意味着所有除此之外的同步码均视为有效的帧结束同步码。在此模式下,一旦使能DCMI,将在首次出现帧结束 (FE) 同步码并且后接帧开始(FS) 同步码之后开始捕获帧。

此外,还针对FS/E和LS/E同步码实现了非屏蔽位功能(通过DCMI_ESUR寄存器配置),这样可仅用同步码中未被屏蔽的位进行比较。因此,可以选择一个位用于同步码的比较,来检测FS/E和LS/E,同时可用多个同步码表示FS/E和LS/E,它们仅在未被屏蔽的位相同即可。

使用特权

评论回复
37
工程师犹饿死|  楼主 | 2023-11-26 20:23 | 只看该作者
「示例」

FS = 0x2e,FSU(FS的非屏蔽码) = 0x30。则只需比较位4和位5即可。




注意:只有8位并行数据接口宽度支持内嵌码同步码。

使用特权

评论回复
38
工程师犹饿死|  楼主 | 2023-11-26 20:23 | 只看该作者
2.3.2 数据FIFO
为了对AHB上数据传输加以管理,在DCMI接口上实现了 4 个字(32bit x4)深度的 FIFO,用以缓冲接收到的数据。

DMCI向AHB总线读取数据时读指针自动递增,向FIFO写入数据时写指针自动递增。

注意:此FIFO没有溢出保护,如果数据传输率超过了AHB接口能够承受的速率,FIFO中的数据就会被覆盖。当如同步信号出错或FIFO溢出时,FIFO将复位,DCMI接口将等待新的数据帧开始。

DCMI接口挂载在AHB总线上,在AHB总线中有一个DCMI接口的数据寄存器,当我们读取该寄存器时,它会从FIFO中获取数据,并且FIFO中的数据指针会自动进行偏移。

使用特权

评论回复
39
工程师犹饿死|  楼主 | 2023-11-26 20:23 | 只看该作者
2.3.3 DMA接口
当DCMI_CR寄存器中的CAPTURE位置1时,激活DMA接口。摄像头接口每次在其寄存器中收到一个完整的32位数据块时,都将触发一个DMA请求。

使用特权

评论回复
40
工程师犹饿死|  楼主 | 2023-11-26 20:24 | 只看该作者
2.3.4 捕获模式
快照模式(单帧)

DCMI_CR 寄存器中的 CM =1。当DCMI_CR的CAPTURE位置 1 后,DCMI等待帧起始信号,然后对数据采样。采样完一帧数据后自动清除CAPTURE位,禁止再次采样。

注意:若数据溢出,则此帧丢失且依然会清除CAPTURE位。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则