DCMI接⼝之OV2640摄像头
⼀、OV2640简介
OV2640是OmniVision公司⽣产的⼀颗1/4⼨的CMOS UXGA(1632 * 1232)图像传感器。该传感器体积⼩、⼯作电压低,提供单⽚UXGA摄像头和影像处理器的所有功能。通过SCCB 总线控制,可以输出整帧、⼦采样、缩放和取窗⼝等⽅式的各种分辨率8/10位影像数据。UXGA最⾼15帧/秒(SVGA可达30帧,CIF可达60帧)。⽤户可以完全控制图像质量、数据格式和传输⽅式。所有图像处理功能过程包括伽玛曲线、⽩平衡、对⽐度、⾊度等都可以通过SCCB接⼝编程。
特点
①⾼灵敏度、低电压适合嵌⼊式应⽤。
②标准的SCCB接⼝,兼容IIC接⼝。
高中自我评价③⽀持RawRGB、RGB(RGB565/RGB555)、GRB422、YUV(422/420)和YCbCr(422)输出格式。
网络密码④⽀持UXGA、SXGA、SVGA以及按⽐例缩⼩到从SXGA到40*30的任何尺⼨ 。
⑤⽀持⾃动曝光控制、⾃动增益控制、⾃动⽩平衡、⾃动消除灯光条纹、⾃动⿊电平校准等⾃动控制功能。同时⽀持⾊饱和度、⾊相、
水浒传好词好句伽马、锐度等设置
⑥⽀持图像缩放和闪光灯。
⑦⽀持图像压缩,即可输出JPEG图像数据。
⼆、OV2640时序
OV2640⾏输出时序
其中:PCLK最⾼为36MHz。图像数据在HREF为⾼的时候输出,当HREF变⾼后,每⼀个PCLK时钟,输出⼀个字节数据。⽐如我们采⽤UXGA时序,RGB565格式输出,每2个字节组成⼀个像素的颜⾊(低字节在前,⾼字节在后),这样每⾏输出总共有16002个PCLK周期,输出16002个字节。
OV2640帧输出时序
注意:OV2640⽀持RGB565或JPEG输出。RGB565输出时,时序如图所⽰。JPEG输出时,PCLK⼤⼤减少,且HREF不连续,数据流以0XFF,0XD8开头,以0XFF,0XD9结束,将此间数据保存为.jpg即可在电脑打开查看。
三、输出图像窗⼝设置
其中:
1、最外层为传感器窗⼝设置(OV2640_Window_Set),传感器窗⼝设置允许⽤户设置整个传感器区域,即在传感器⾥进⾏开窗,范围是2 * 2 ~ 1632 * 1220都可以设置。要求传感器尺⼨⼤于图像尺⼨。
2、图像尺⼨设置(OV2640_ImageSize_Set)即DSP输出图像的最⼤尺⼨。通过0XC0、0XC1、0X8C等寄存器设置。
3、图像窗⼝设置(OV2640_ImageWin_Set)图像窗⼝设置其实和前⾯的传感器窗⼝设置类似,只是这个窗⼝是在我们前⾯设置的图像尺⼨⾥⾯,再⼀次设置窗⼝⼤⼩,该窗⼝必须⼩于等于前⾯设置的图像尺⼨。该窗⼝设置后的图像范围,将⽤于输出到外部。图像窗⼝设置通过:0X51、0X52、0X53、0X5
4、0X5
5、0X57等寄存器设置。
4、图像输出⼤⼩设置(OV2640_OutSize_Set) 图像输出⼤⼩设置,控制最终输出到外部的图像尺⼨。该设置将图像窗⼝设置所决定的窗⼝⼤⼩,通过内部DSP处理,缩放成我们输出到外部的图像⼤⼩。该设置将会对图像进⾏缩放处理,如果设置的图像输出⼤⼩不等于图像窗⼝设置图像⼤⼩,那么图像就会被缩放处理,只有这两者设置⼀样⼤的时候,输出⽐例才是1:1的。图像输出⼤⼩通过:
0X5A/0X5B/0X5C等寄存器设置。田朴珺三级
四、引脚说明以及操作流程
OV2640初始化流程
单⽚机读取OV2640模块图像数据过程
五、STM32F4的DCMI
DCMI信号说明
剑魔时装属性选择
1,数据据输⼊(D[0:13]),接摄像头的数据输出。
2,⽔平同步(⾏同步)输⼊(HSYNC),接摄像头的HSYNC/HREF信号。
3,垂直同步(场同步)输⼊(VSYNC),接摄像头的VSYNC信号。
4,像素时钟输⼊(PIXCLK),接摄像头的PCLK信号。
DCMI接⼝的数据与PIXCLK(即PCLK)保持同步,并根据像素时钟的极性在像素时钟上升沿/下降沿发⽣变化。HSYNC(HREF)信号指⽰⾏的开始/结束,VSYNC信号指⽰帧的开始/结束。
图中对应设置为:DCMI_PIXCLK的捕获沿为下降沿,DCMI_HSYNC和DCMI_VSYNC的有效状态为1。
注意:这⾥的有效状态实际上对应的是指⽰数据在并⾏接⼝上⽆效时,HSYNC/VSYNC引脚上⾯的引脚电平。
DCMI数据说明
网络歌曲排行榜DCMI接收到的数据,存储在DCMI_DR寄存器(32位)⾥⾯,我们接ATK-OV2640采⽤8位数据宽度,所以每4个像素时钟,才会捕获完32位数据,第⼀个字节存放在LSB位置,第四个字节存放在MSB位置,如下图所⽰:
注意:低字节在前,⾼字节在后。
DCMI之DMA说明
DCMI⽀持DMA传输,当DCMI_CR寄存器中的CAPTURE位置1时,激活DMA接⼝。
摄像头接⼝每次在其寄存器(DCMI_DR)中收到⼀个完整的32位数据块时,都将发⼀个DMA请求,由DMA将DCMI_DR寄存器的值搬运到⽬的地址(⽐如LCD/SRAM)。
DCMI的DMA请求是映射在DMA2通道1的数据流1上⾯的,所以配置DMA时,应该配置这个。另外,如果是直接DCMI -> DMA -> LCD的传输⽅式,因为LCD是16位宽(RGB565),⽽DCMI_DR是32位宽。所以,⼀次DCMI引起的DMA传输,将引发往LCD写2次数据。
六、DCMI寄存器说明