单片机
返回首页

STM32_DCMI

2022-02-25 来源:eefocus

1:DCMI简介

DCMI是STM32F4芯片自带的一个数字摄像头接口,该接口是一个同步并行接口,能够接受外部8位、10位、12位、14位CMOS摄像头模块发出的高速数据流


可支持的数据格式:


YCbCr4:2:2

RGB565逐行视频

压缩数据 (JPEG)

2:DCMI功能概述 

数字摄像头接口是一个同步并行接口,可接收 高速(可达 54 MB/s)数据流 。该接口包含多 达 14 条数据线 (D13-D0) 和一条像素时钟线 (PIXCLK)。像素时钟的极性可以编程,因此可 以在像素时钟的上升沿或下降沿捕获数据。


这些数据被放到 32 位数据寄存器 (DCMI_DR) 中,然后通过通用 DMA 进行传输。 图像缓冲 区由 DMA 管理 ,而不是由摄像头接口管理。


从摄像头接收的数据可以按行 / 帧来组织(原始 YUB/RGB/ 拜尔模式),也可以是一系列 JPEG 图像。要使能 JPEG 图像接收,必须将 JPEG 位( DCMI_CR 寄存器的位 3 )置 1 。


数据流可由可选的 HSYNC (水平同步)信号和 VSYNC (垂直同步)信号硬件同步,或者通 过数据流中嵌入的同步码同步

  

3:DCMI_DMA说明

DCMI接收到的数据,存储在DCMI_DR寄存器(32位)里面,当 DCMI_CR 中的 EDM[1:0] 编程为“00”时,接口将捕获其输入(D[0:7]) 的 8 个 LSB,并 将其存储为 8 位数据。D[13:8] 输入则忽略。在此情况下,要捕获 32 位字,摄像头接口需要 花费四个像素时钟期。捕获的第一个数据字节放置在 32 位字的 LSB 位置,第四个数据字节放置在 32 位字的 MSB 位置.


DCMI支持DMA传输,当DCMI_CR寄存器中的CAPTURE位置1时,激活DMA接口。 像头接口每次在其寄存器(DCMI_DR)中收到一个完整的32位数据块时,都将 发一个DMA请求,由DMA将DCMI_DR寄存器的值搬运到目的地址(比如LCD/SRAM)。

DCMI的DMA请求是映射在DMA2通道1的数据流1上面的。   如果是直接DCMI-》DMA-》LCD的传输方式,因为LCD是16位宽(RGB565), 而DCMI_DR是32位宽,所以,一次DCMI引起的DMA传输,将引发往LCD写2次数据。


4:DCMI捕获模式

支持两种类型的捕获:快照(单帧)和连续采集


快照模式:此模式下只捕获单帧(DCMI_CR 寄存器中的 CM =“1”)。在 DCMI_CR 中的 CAPTURE 位置 1 后,该接口将等待系统检测帧开始,然后再对数据进行采样。收到完整的第一帧后, 将自动禁止摄像头接口(DCMI_CR 中的 CAPTURE 位清零)。如果使能相应中断,将生成 中断 (IT_FRAME)。


连续采集模式:在此模式下(DCMI_CR 中的 CM 位 =“0”),一旦 DCMI_CR 中的 CAPTURE 位置 1,将 在下一个 VSYNC 或内嵌同步码帧起始同步码时启动采集过程,具体取决于同步模式。该过 程一直持续到 DCMI_CR 中的 CAPTURE 位清零。CAPTURE 位清零后,采集过程将持续到 当前帧结束。


5:DCMI初始化流程

配置相关引脚的复用功能,使能DCMI时钟

设置DCMI工作模式及PCLK/HSYNC/VSYNC等参数

设置DMA

启动DCMI传输

    DCMI_InitStructure.DCMI_CaptureMode=DCMI_CaptureMode_Continuous;//连续模式

DCMI_InitStructure.DCMI_CaptureRate=DCMI_CaptureRate_All_Frame; //全帧捕获

DCMI_InitStructure.DCMI_ExtendedDataMode= DCMI_ExtendedDataMode_8b;//8位数据格式  

DCMI_InitStructure.DCMI_HSPolarity= DCMI_HSPolarity_Low;     //HSYNC 低电平有效

DCMI_InitStructure.DCMI_PCKPolarity= DCMI_PCKPolarity_Rising;//PCLK 上升沿有效

DCMI_InitStructure.DCMI_SynchroMode= DCMI_SynchroMode_Hardware;//硬件同步HSYNC,VSYNC

DCMI_InitStructure.DCMI_VSPolarity=DCMI_VSPolarity_Low;        //VSYNC 低电平有效

DCMI_Init(&DCMI_InitStructure);

 

DCMI_ITConfig(DCMI_IT_FRAME,ENABLE);//开启帧中断 

DCMI_Cmd(ENABLE);                 //DCMI使能

DCMI_CaptureMode:操作DCMI_CR寄存器的位1


DCMI_CaptureRate:操作DCMI_CR寄存器的位【9:8】


DCMI_ExtendedDataMode:操作DCMI_CR寄存器的位【11:10】


DCMI_HSPolarity:操作DCMI_CR寄存器的位6


DCMI_PCKPolarity:操作DCMI_CR寄存器的位6


DCMI_SynchroMode:操作DCMI_CR寄存器的位4


DCMI_VSPolarity:操作DCMI_CR寄存器的位6


DCMI_ITConfig:操作DCMI_IER寄存器的位0


DCMI_Cmd:操作DCMI_CR寄存器的位14

进入单片机查看更多内容>>

上一篇:STM32_内存管理

下一篇:STM32 Flash

相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 简洁的过零调功器电路设计与分析

  • 永不缺相启动运行的电动机控制电路

  • IGBT模块通过控制门极阻断过电流

  • 比较常见的功率整流器和滤波电路

  • 基于M66T旋律发​​生器的电路图解析

  • 基于CA3193的热电偶放大器电路

    相关电子头条文章