打印
[其他ST产品]

使用DCMI(DVP)驱动OV2640

[复制链接]
706|61
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主


1 OV2640摄像头简介
OV2640为CMOS类型数字图像传感器,支持输出最大为200万像素(1600*1200分辨率)的图像,支持使用VGA时序输出图像数据,输出图像的数据格式支持YUV(422/420)、YCbCr422、RGB565以及JPEG格式,若直接输出JPEG格式的图像时可大大减少数据量。

可进行图像补偿:支持伽玛曲线、白平衡、饱和度、色度等基础处理。

根据不同的分辨率配置,传感器输出图像数据的帧率从15-60帧可调,工作时功率在125mW-140mW之间。


使用特权

评论回复
评论
工程师犹饿死 2023-11-26 20:11 回复TA
———————————————— 版权声明:本文为CSDN博主「柯西的彷徨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/kouxi1/article/details/126787264 
沙发
工程师犹饿死|  楼主 | 2023-11-26 20:11 | 只看该作者
1.1 OV2640引脚及功能框图
OV2640传感器采用BGA封装,它的前端是采光窗口,引脚都在背面引出,引脚的分布如下:


图中非彩色部分是电源相关的引脚,彩色部分是主要的信号引脚

使用特权

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

表中高亮引脚即为VGA时序输出引脚。



▲ OV2640功能框图
控制寄存器
控制寄存器配置摄像头的相关参数,如对比度、曝光参数等,通过SCCB(与I2C类似)外设的SIO_C和SIO_D引脚写入。

通信、控制信号及时钟
其中PCLK、HREF及VSYNC分别是像素同步时钟、行同步信号以及帧同步信号。RESETB引脚为低电平时,用于复位整个传感器芯片,PWDN用于控制芯片进入低功耗模式。

XCLK是用于驱动整个传感器芯片的时钟信号,由外部时钟源(外接晶振或由外部控制器提供)输入到OV2640;而PCLK是OV2640输出数据时的同步信号,由OV2640输出。

使用特权

评论回复
地板
工程师犹饿死|  楼主 | 2023-11-26 20:12 | 只看该作者
感光矩阵

感光矩阵用于将光信号转化为电信号,在2,010,624像素中, 有1,991,040 (1632x1220)是活跃的。 经过AMP(Analog Amplifier)模拟放大、(Gain Control)增益控制、10位A/D转换、通道平衡(Channel Balance)、黑电平1补偿(Black Level Compensation)处理,将信号存储成由像素点表示的数字图像。

使用特权

评论回复
5
工程师犹饿死|  楼主 | 2023-11-26 20:12 | 只看该作者
数据输出信号
包含了DSP处理单元,它会根据控制寄存器的配置做一些基本的图像处理运算,如色彩饱和度调整、边缘增强等。这部分还包含了图像格式转换单元及压缩单元,转换出的数据最终通过Y0-Y9引脚输出,一般使用8根据数据线传输,此时仅使用Y2-Y9引脚,OV2640的数据信号与外部器件的连接方式:

使用特权

评论回复
6
工程师犹饿死|  楼主 | 2023-11-26 20:12 | 只看该作者
1.2 SCCB时序
外部控制器对OV2640寄存器的配置参数通过SCCB总线传输配置,而SCCB总线时序与I2C基本一致,所以在STM32中可直接使用片上I2C外设与它通讯。(OV2640 device slave addresses are 0x60 for write and 0x61 for read.)

使用特权

评论回复
7
工程师犹饿死|  楼主 | 2023-11-26 20:13 | 只看该作者
1.2.1 SCCB的起始、停止信号及数据有效性
SCCB的起始信号、停止信号及数据有效性与I2C完全一样。

起始信号:在SCL(图中为SIO_C)为高电平时,SDA(图中为SIO_D)出现一个下降沿,则SCCB开始传输
停止信号:在SCL为高电平时,SDA出现一个上升沿,则SCCB停止传输。
数据有效性:除了开始和停止状态,在数据传输过程中,当SCL为高电平时,必须保证SDA上的数据稳定,即当SCL为低电平时SDA电平变换才能变换,SDA的信号在SCL为高电平时被采集。

使用特权

评论回复
8
工程师犹饿死|  楼主 | 2023-11-26 20:13 | 只看该作者
1.2.2 SCCB数据读写过程
SCCB协议中定义的读写操作与I2C同样一致。

1.2.2.1 写数据
SCCB定义了两种写操作:

三步写操作

phase1:发送从设备的ID地址+W标志(相当于I2C的设备地址:7位设备地址+读写方向标志)

phase2:发送从设备目标寄存器的8位地址

phase3:发送要写入寄存器的8位数据



图中的“X”数据位可写入1或0,对通讯无影响。

使用特权

评论回复
9
工程师犹饿死|  楼主 | 2023-11-26 20:13 | 只看该作者
二步写操作

两步写相对于三步写操作,没有phase3,一般用来配合后面的读寄存器数据操作,它与读操作一起使用,实现I2C的复合过程。

使用特权

评论回复
10
工程师犹饿死|  楼主 | 2023-11-26 20:14 | 只看该作者
1.2.2.2 读数据
两步读操作,用于读取从设备目的寄存器中的数据。

phase1:发送从设备的设备ID+R标志(设备地址+读方向标志)和自由位

phase2:读取寄存器中的8位数据和写NA 位(非应答信号)



由于两步读操作「没有确定目的寄存器的地址」,所以在读操作前,必须有一个两步写操作,以提供读操作中的寄存器地址。

使用特权

评论回复
11
工程师犹饿死|  楼主 | 2023-11-26 20:14 | 只看该作者
1.3 OV2640的寄存器
查询ov2640datasheet.pdf进行了解,通过寄存器配置可控制输出图像的分辨率大小、图像格式、图像处理及图像方向等。

注意OV2640有两组寄存器,这两组寄存器有部分地址重合,通过设置地址为0xFF的RA_DLMT寄存器可以切换寄存器组:

RA_DLMT = 0:通过SCCB发送的寄存器地址在DSP相关的寄存器组寻址
RA_DLMT = 1:通过SCCB发送的寄存器地址在Sensor相关的寄存器组寻址

使用特权

评论回复
12
工程师犹饿死|  楼主 | 2023-11-26 20:14 | 只看该作者
官方还提供了OV2640_Camera_app.pdf文档,它针对不同的配置需求,提供了配置范例:

使用特权

评论回复
13
工程师犹饿死|  楼主 | 2023-11-26 20:14 | 只看该作者
1.3.1 常用寄存器
帧率配置(0xFF = 0)

使用特权

评论回复
14
工程师犹饿死|  楼主 | 2023-11-26 20:15 | 只看该作者
PLCK分频值(0xFF = 0)

使用特权

评论回复
15
工程师犹饿死|  楼主 | 2023-11-26 20:15 | 只看该作者
设置原始图像的大小(0xFF = 0)

使用特权

评论回复
16
工程师犹饿死|  楼主 | 2023-11-26 20:15 | 只看该作者
设置显示图像的局部大小(非等比缩放,该寄存器会将写入的数值自动向下取整为4的整数倍)(0xFF = 0)

使用特权

评论回复
17
工程师犹饿死|  楼主 | 2023-11-26 20:15 | 只看该作者
设置垂直窗口的start与end的最低2位(0xFF = 1)

使用特权

评论回复
18
工程师犹饿死|  楼主 | 2023-11-26 20:16 | 只看该作者
OV2640的制造商ID与产品ID(0xFF = 1)

使用特权

评论回复
19
工程师犹饿死|  楼主 | 2023-11-26 20:16 | 只看该作者
设置图像分辨率模式(UXGA/CIF/SVGA),其中Bit1为测试用的彩色条纹图案(0xFF = 1)

使用特权

评论回复
20
工程师犹饿死|  楼主 | 2023-11-26 20:16 | 只看该作者
设置垂直窗口的start与end的高8位(0xFF = 1)


使用特权

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

本版积分规则

64

主题

808

帖子

0

粉丝