OV5640芯片是OmniVision(豪威科技)公司生产的CMOS图像传感器,该传感器功耗低,可靠性高以及采集速度快,主要应用在玩具,安防监控电脑等多媒体领域。
参考目录:https://ica123.com
OV5640 性能参数:
OV5640感光阵列达到2624 x 1964,能实现最快15fps QSXVGA(2592 x 1944)或者90fps VGA(640 x 480)分辨率的图像采集。(图1)
图1
ov5640主要功能:
自动图像控制:
自动曝光控制
自动白平衡控制
自动带滤波
50Hz/60Hz 流明检测
可编程帧率设置
图像质量控制:
色彩饱和度
边沿增强
gamma 设置
噪声消除
输出格式:
RGB565/555/444
YUV422/420
YCbCr422
压缩格式
支持video or 拍照模式
支持LED 和 flash strobe 模式
DVP (digital video port)格式输出
MIPI 格式输出
OV5640支持LED补光、MIPI(移动产业处理器接口)输出接口和DVP(数字视频并行)输出接口选择、ISP(图像信号处理)以及AFC(自动聚焦控制)等功能。
OV5640芯片内部结构图:(图2)
图2
ov5640模组:(图3)
图3
ov5640模组硬件原理图:(图4)
图4
OV5640 上电和复位逻辑(POWER ON & RESET )图5
图5
OV5640 sensor 设置:图6
图6
其中:深灰色部分为ov5640 器件 的感光区域, 浅灰色部分为ov5640 数据采样区域(由于lens 是机械安装上去的,因此 采样区域是需要匹配镜头), 白色区域为真实的数据采样输出部分,在不做图像缩放的情况下, 这个部分(白色部分)和芯片输出的图像分辨率大小相同(例如: 640 X 480 ).
OV5640芯片 DVP 接口 video pin 输出波形:图7
图7
OV5640 PIN 输出格式 和VESA标准略有不同, VESA 标准 由 Hsync 信号, ov5640 输出则没有, 但ov5640由videao active 部分(HREF)。也是可以明确指示出每行数据的有效部分的。图7 中的HSYNC 只是一个指示, 并没有在pin上输出。
图8
图8 指示的是pin 输出的timing (时序图),可以看出, 在pclk 的下降沿时ov5640输出 HREF, D[9:0],这样fpga只要在pclk 的上升沿时采样, 就可以拿到ov5640输出的稳定数据了。
图9
图9中显示的是 2592X1944分辨率下的时序参数, 通过查找ov5640手册, 可以得到相应的用户需要输出分辨率的具体参数,这些参数基本上适合VESA的标准一致。
图10
图10 显示的是RGB565 16bit的数据在pin上的输出格式,当使用D【7:0】8个pin输出时,在第一个时钟周期下, 输出R5 + G3[2:0], 在第二个时钟周期下,输出G3[7:5] + B5, 这个样就可以看出, 每个像素(pixel 16 bit)需要两个时钟周期。
上电和reset 时序:(图11)
图11
步骤1 : ResetB拉低,复位OV5640。 PWDN引脚拉高
步骤2 : DOVDD 和 AVDD两路最 好同时上电,这在模组的电源 设计中实现。
步骤3 : 等电源稳定5毫秒后, 拉低PWDN。
步骤4 : PWDN 置低1毫秒后, 拉高 Reset
步骤5 : 20毫秒后, 初始化OV5640 的SCCB寄存器设置
ov5640 控制接口介绍:
SCCB(Serial Camera Control Bus,串行摄像头控制总线)是由OV公司定义和发展的三线式串行总线。 该总线控制着OV系列摄像头大部分的功能,包括图像数据格式、分辨率以及图像处理参数等。 OV公司为了减少传感器引脚的封装,现在SCCB总线大多采用两线式接口总线。(类似IIC总线)
SCCB有两种工作模式,一主多从,一主一从模式
一主机多从机 也即3线操作:(通过控制使能端SCCB_E控制选中的从机)
图12
一主一从 也即2线操作:(默认SCCB_E被拉低)
图13
0v5640芯片控制部分:
SCCB 总线协议:
图14
在SOI_C 时钟为高电平期间, SIO_D 出现下降沿, 表示 START 信号(和i2C 类似)
在SOI_C 时钟为高电平期间, SIO_D 出现上升沿, 表示 STOP 信号(和i2C 类似)
在SOI_C 时钟为低电平期间, SIO_D 数据变化, 表示数据传输信号(和i2C 类似)
I2C总线知识回顾:
图15
起始信号(START) : 在时钟(SCL)为高电平的时候,数据总线(SDA)由高到低的跳变为总线
停止信号(STOP) : 在时钟(SCL)为高电平的时候,数据总线(SDA)由低到高的跳变为总线
图16
传输数据(图16): 在时钟(SCL)为高电平的时候,数据总线(SDA)必须保持稳定,所以数据总线(SDA)在时钟(SCL)为低电平的时候才能改变。
应答(图17):当IIC 主机将8 位数据传出后,会将数据总线(SDA)释放,等待从机应答(低电平0 表示应答,1 表示非应答)
图17
双/单字节写时序
图18
双/单字节读时序
图19
SCCB总线与IIC总线异同
1、SCCB总线写协议中,第9位传输数据为占位数据,而IIC写传输协议为应答位
2、SCCB总线写协议每次传输过程只能写入slave一个byte数据, 而IIC写入一个或者多个数据
3、SCCB总线读协议中没有重复开始(restart)的概念,在写完寄存器地址后,然后发起停止信号。而IIC数在读操作时是可以有restart定义的
图20
SCCB总线读写传输协议:
SCCB总线写数据传输协议(5640的寄存器地址为2个字节) X 表示don’t care bit
图21
start + 设备地址(id address【7:1】,1’b0) + 子地址(sub-address【15:8】) + 子地址(sub-address【7:0】)+ 写数据(write Data【7:0】) + stop
SCCB总线读数据传输协议
图22
1)start+ 设备地址(slave_id[7:1],1’b0) + 子地址(Sub-address[15:8]) + 子地址(Sub-address[7:0]) + stop
2)start+ 设备地址(slave_id[7:1],1’b1) + 读数据(Read Data[7:0]) + stop