STM32——DCMI接口与OV2640原理与配置

一、OV2640简介

1、什么是OV2640?

OV2640是OmniVision公司生产的一颗1/4寸的CMOS  UXGA(1632*1232)图像传感器。该传感器体积小、工作电压低,提供单片UXGA摄像头和影像处理器的所有功能。通过SCCB总线控制,可以输出整帧、子采样、缩放和取窗口等方式的各种分辨率8/10位影像数据。UXGA最高15帧/秒(SVGA可达30帧,CIF可达60帧)。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽马曲线、白平衡、对比度、色度等都可以通过SCCB接口编程。

2、OV2640大的特点:

1、高灵敏度、低电压适合嵌入式应用

2、标准的SCCB接口,兼容IIC接口

3、支持RawRGB、RGB(RGB565/RGB555)、GRB422、YUV(422/420)和YCBCr(422)输出格式

4、支持UXGA、SXGA、SVGA以及按比例缩小到SXGA到40*30的任何尺寸

5、支持自动曝光控制、自动增益控制、自动白平衡、自动消除灯光条纹、自动黑电平校准等自动控制功能。同时支持色饱和度、色相、伽马、锐度等设置

6、支持图像缩放和闪光灯

7、支持图像压缩,即可输出JPEG图像数据

3、基本概念

UXGA:即分辨率位1600*1200的输出格式。类似的还有:

SXGA(1280*1024)、XVGA(1280*960)、WXGA(1280*800)、XGA(1024*768)、SVGA(800*600)、VGA(640*480)、CIF(352*288)和QQVGA(160*120)等。

PCLK,即像素时钟,一个PCLK时钟,输出一个(或半个)像素。

VSYNG,即帧同步信号。HREF/HSYNC,即行同步信号。

OV2640的图像数据输出(通过Y[9:0],不过一般只用8位数据)就是在PCLK、VSYNC和HREF/HSYNC的控制下进行的。

4、OV2640行输出时序:

STM32——DCMI接口与OV2640原理与配置_第1张图片

图像数据在HREF为高的时候输出,当HREF变高电位后,每一个PCLK时钟上沿时,就会输出一个字节数据。比如采用的UXGA时序,RGB565格式输出,每2个字节组成一个像素的颜色(低字节在前,高字节在后),这样每行输出总共有1600*2个PCLK周期,输出1600*2个字节。(PCLK最高可达36Mhz)

5、OV2640帧输出时序(UXGA)

STM32——DCMI接口与OV2640原理与配置_第2张图片 

OV2640支持:RGB565或JPEG输出。RGB565输出时,时序图如上图。JPEG输出时,PCLK大大减少,且HREF不连续,数据流以OXFF,OXDB开头,以OXFF,OXD9结束,将此间数据保存为.jpg即可在电脑查看。

6、传感器窗口设置(OV12640_Window_Set)

传感器窗口设置允许用户设置整个传感器区域(1632*1220)的感兴趣部分,也就是在传感器里面开窗,开窗范围从2*2~1632*1220都可以设置,不过要求这个窗口必须大于等于随后设置的图像尺寸。传感器窗口设置,通过:0X30/0X19/0X1A/0X07/0X17/0X18等寄存器设置。

7、图像尺寸设置(OV2640_ImageSize_Set)

图像尺寸设置,也就是DSP输出(最终输出到LCD的)图像的最大尺寸,该尺寸要小于等于前面传感器窗口设置所设定的窗口尺寸。图像尺寸通过:0XC0/0XC1/0X8C等寄存器设置。

8、图像窗口设置(OV2640_ImageWin_Set)

图像窗口设置其实和前面的传感器窗口设置类似,只是这个窗口是在前面设置的图像尺寸里面,再设置一次窗口大小,该窗口必须小于等于前面设置的图像尺寸。该窗口设置后的图像范围,将用于输出到外部。图像窗口设置通过:0X51/0X52/0X53/0X54/0X55/0X57等寄存器设置。

9、图像输出大小设置(OV2640_OutSize_Set)

图像输出大小设置,控制最终输出到外部的图像尺寸。该设置将图像窗口设置所决定的窗口大小,通过内部DSP处理,缩放成我们输出到外部的图像大小。该设置将会对图像进行缩放处理,如果设置的图像输出大小不等于图像窗口设置图像大小,那么图像就会被缩放处理,只有两者设置一样大的时候,输出比例才是1:1的。图像输出大小通过:0X5A/0X5B/0X5C等寄存器设置。

图像输出窗口设置示意图:

STM32——DCMI接口与OV2640原理与配置_第3张图片 

二、ATK-OV2640模块介绍

STM32——DCMI接口与OV2640原理与配置_第4张图片

ATK-OV2640摄像头模块是ALIENTEK生产的一款高性能摄像头模块。

ATK-OV2640模块具有以下特点:

1、支持RGB565/JPEG数据输出

2、支持最大UXGA分辨率输出

3、支持图像任意缩放

4、自带24M有源晶振,无需外部时钟

5、自带稳压电路,按3.3V即可工作

6、自带感红外镜头(有滤光片),色彩鲜艳,可手动对焦

7、体积小巧(27mm*27mm)

ATK-OV2640模块原理图:

STM32——DCMI接口与OV2640原理与配置_第5张图片 

ATK-OV7670模块对外接口:

STM32——DCMI接口与OV2640原理与配置_第6张图片 

ATK-OV2640模块初始化:

初始化IO口——>上电,并复位——>读取传感器ID——>执行初始化序列——>完成初始化

STM32——DCMI接口与OV2640原理与配置_第7张图片

MCU读取ATK-OV2640模块图像数据过程:

等待帧同步(VSYNC)——>等待HREF为高电平——>等待第一个PCLK上升沿——>读取第一个像素低字节——>等待第二个PCLK上升沿——>读取第一个像素高字节——>等待第三个PCLK上升沿——>读取第二个像素低字节——>循环读取剩余像素....——>结束

STM32——DCMI接口与OV2640原理与配置_第8张图片

三、DCMI接口简介

1、什么是DCMI?

DCMI是STM32F4芯片自带的一个数字摄像头接口,该接口是一个同步并行接口,能够接受外部8位、10位、12位或14位CMOS摄像头模块发出的高速数据流。可支持不同的数据格式:YCbCr4:2:2/RGB565逐行视频和压缩数据(JPEG)

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

2、DCMI特点:

1、支持8位、10位、12位或14位并行接口

2、支持内嵌码/外部行同步和帧同步

3、支持连续模式或快照模式

4、支持裁剪功能

5、支持以下数据格式:

1)8/10/12/14位逐行视频:单色或原始拜尔格式

2)YCbCr4:2:2逐行视频

3)RGB565逐行视频

4)压缩数据:JPEG

3、STM32F4的DCMI接口包括如下信号

1、数据输入(D[0:13]),接摄像头的数据输出

2、水平同步(行同步)输入(HSYNC),接摄像头的HSYNC/HREF信号

3、垂直同步(场同步)输入(VSYNC),接摄像头的VSYNC信号。

4、像素时钟输入(PIXCLK),接摄像头的PCLK信号。

STM32——DCMI接口与OV2640原理与配置_第9张图片 

DCMI接口的数据与PIXCLK(即PCLK)保持同步,并根据像素时钟的极性在像素时钟上升沿/下降沿发生变化。HSYNC(HREF)信号只是行的开始/结束,VSYNC信号指示帧的开始/结束。

STM32——DCMI接口与OV2640原理与配置_第10张图片 

图中,对应设置为:DCMI_PIXCLK的捕获沿为下降沿,DCMI_HSYNC和DCMI_VSYNC的有效状态为1。

注意:这里的有效状态实际上对应的是指示数据在并行接口上无效时,HSYNC/VSYNC引脚上面的引脚电平。

4、DCMI数据说明

DCMI接收到的数据,存储在DCMI_DR寄存器(32位)里面,我们接ATK-OV2640采用8位数据宽度,所以每4个像素时钟才会捕获完32位数据,第一个字节存放在LSB位置,第四个字节存放在MSB位置,如下图所示:

STM32——DCMI接口与OV2640原理与配置_第11张图片 

注:低字节在前,高字节在后

5、DMA说明

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

STM32——DCMI接口与OV2640原理与配置_第12张图片 

DCMI的DMA请求是映射在DMA2通道1的数据流1上面的,所以配置DMA时,应该配置这个。

另外,如果是直接DCMI——>DMA——>LCD的传输方式,因为LCD是16位宽(RGB565),而DCMI_DR是32位宽,所以,一次DCMI引起的DMA传输,将引发LCD写两次数据。

6、其它说明

模式:DCMI支持连续模式和快照模式,一般采用连续模式

同步方式:DCMI支持内嵌码同步和硬件同步两种方式,一般采用硬件同步

硬件同步模式下使用两个同步信号:HSYNC和VSYNC。根据摄像头模块/模式的不同,可能在水平/垂直同步期间内发送数据。由于系统会忽略HSYNC/VSYNC信号有效电平期间内接收的所有数据,HSYNC/VSYNC信号相当于消隐信号。

四、寄存器介绍:

1、DCMI控制寄存器(DCMI_CR)

STM32——DCMI接口与OV2640原理与配置_第13张图片 

注:CAPTURE位必须在其它所有配置(包括DMA)完成后才能使能。

2、DCMI中断使能寄存器(DCMI_IER)

STM32——DCMI接口与OV2640原理与配置_第14张图片 

五、初始化流程

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

要用DCMI,先要使能DCMI时钟,然后再设置DCMI的相关引脚为复用输出,以便连接ATK-OV2640模块。

2、设置DCMI工作模式以及PCLK/HSYNC/VSYNC等参数。

DCMI接口,使用8位接口,连续模式,根据OV2640模块的输出时序图,设置:PCLK上升沿有效,HSYNC和VSYNC为低电平有效。同时还要设置帧中断(jpeg数据采集用)等参数。

3、设置DMA。

DCMI数据一般采用DMA搬运,设置好DCMI相关参数后,需要设置DMA,以便采集数据。

4、启动DCMI运输。

最后,设置DCMI—>CR的最低位为1,即可启动DCMI捕获图像数据。

你可能感兴趣的:(STM32,stm32,单片机,arm)