新闻中心/NEWS
  1. 行业资讯
  2. 公司动态

OV7725的寄存器

发布时间:2019-01-24 10:50:13

首先介绍一下OV7725的寄存器。OV7725总共有172个寄存器,作为CMOS Sensor的工作模式的配置。而这172个寄存器,有些只读,有些则同时支持读写功能。在传感器正常工作工作前,必须进行寄存器的初始化,不然无法得到预期,更得不到较好画质的图像。而这172个寄存器,就是我们需要通过SCCB总线接口进行配置的目标。在实现SCCB总线协议的基础上,实现寄存器的配置,以保证预期模式图像的输出。当然这172个寄存器也并非都需要配置,很多寄存器都可以采用默认的值。
关于寄存器的配置,OmniVision给出了有关于OV7725模式配置的官方手册——《OV7725 Camera Module Software Application Notes》。手册包括了时钟、阵列的配置,夜间模式的配置,白平衡的配置等。相关模式的配置可以参照此手册,以保证初始化的正确。
由于OV7725寄存器的数据之多,同时每一个寄存器都包括了多个参数的设定,笔者无法一一进行介绍。笔者在此主要介绍跟视频图像流、采样画质、输出格式等比较重要的几个寄存器,如下表所示:
地址
寄存器
默认值
描述
0A
PID
77
传感器唯一ID地址高8位(只读)
0B
VER
21
传感器唯一ID地址低8位(只读)
1C
MIDH
7F
制造商唯一ID地址高8位(只读)
1D
MIDL
A2
制造商唯一ID地址低8位(只读)
11
CLKRC
00
Bit[6]
选择是否使用内部PLL
Bit[5:0]
选择使用内部PLL进行时钟配置
finternal clock = finput clock * PLL multiplier/[(Bit[5:0] + 1)*2]
0D
COM4
41
Bit[7:0]
00:旁路PLL;01:PLL 4x;02:PLL 8x;03:PLL 16x
15
COM10
00
Bit[7]
反转输出图像数据
Bit[6]
切换HREF与HSYNC信号
Bit[5]
0:PCLK时钟有效;1:行空白时PCLK无效
Bit[4]
翻转PCLK信号
Bit[3]
翻转HREF信号
Bit[1]
翻转VSYNC信号(默认高电平同步,低电平有效)
Bit[0]
0:10Bit图像数据输出;1:高8Bit图像数据输出
12
COM7
00
Bit[7]
0:保持不变;1:复位所有的寄存器
Bit[6]
0:VGA分辨率输出;1:QVGA分辨率输出
Bit[5]
是否输出BT656协议(逐行)
Bit[4]
输出RAW RGB原始数据格式
Bit[3:2]
00:GBR422;01:RGB565;10:RGB555;11:RGB444;
Bit[1:0]
00:YUV;01:Processed RAW;10:RGB;11:RAW RGB;
13
COM8
CF
Bit[2]
选择是否开启自动增益AGC功能
Bit[1]
选择是否开启自动白平衡AWB功能
Bit[0 ]
选择是否开启自动曝光AEC功能
0C
COM3
10
Bit[6]
选择是否水平镜像输出像素
Bit[0]
选择是否输出测试彩条
66
DSP_Ctrl3
10
COM3[4]
DSP_Ctrl3[7]
YUV输出格式
0
0
Y0U0, Y1V1, Y2U2, Y3V3, ...
1
1
Y0V0, Y1U1, Y2V2, Y3U3, ...
0
0
U0Y0, V1Y1, U2Y2, V3Y3, ...
1
1
V0Y0, U1Y1, V2Y2, U3Y3, ...
08
AECL
00
曝光参数AEC = {AECH, AECL}
10
AECH
00
曝光时间Texposure = AEC[15:0] * Trow interval
2B
EXHCL
9e
大陆:9e – 50Hz; 国外:00-60Hz
9B
BRIGHT
00
亮度值补偿,可以通过此值提高像素的亮度
Bingo在开发OmniVision CMOS Sensor时,花了很长时间研究OV7725的寄存器,以及所需配置的寄存器。最终Bingo通过Verilog HDL模拟I2C时序,完成OV7725寄存器的初始化,实现预期模式的视频流输出。寄存的初始化并没有严格的顺序,不过笔者一般会将重要的一些模式配置放在配置列表前,方便参数的修改。相关模式的设计可以参考《OV7725 Camera Module Software Application Notes》,Bingo也是在现有的基础上,进行一定的修正。
为此Bingo新建I2C_OV7725_RGB565_Config.v,作为OV7725的寄存器初始化列表。在I2C总线的寄存器配置时,通过寄存器列表的查找,完成参数的初始化。I2C_OV7725_RGB565_Config相关信号列表如下所示:
`timescale 1ns/1ns
module I2C_OV7725_RGB565_Config
(
   input       [7:0]   LUT_INDEX,
   output  reg [15:0]  LUT_DATA,
   output      [7:0]   LUT_SIZE
);
接着,介绍一下OV7725寄存器的配置流程。OV7725的寄存器读写配置,在SCCB总线时序的基础上,还具有一定的流程。通过器件地址、寄存器地址,以及寄存器等参数的配置,完成寄存器的读写操作。OV7725主要有读、写寄存器2种模式,详细介绍如下:
(1)    SCCB总线寄存器的写入时序
SCCB总线在写寄存器时,先写设备地址,再写寄存器地址,最后写入寄存器的值,完成一个寄存器的配置,即 ID-Address + SUB-Address + W-Data的流程,如下图所示:
 
Phase 1:CMOS Sensor的唯一ID地址。OmniVision相机的设备地址为0x42,而其中最后一位是用来判断读写的,即写的时候ID地址为0x42(读的时候ID地址为0x43)。
Phase 2:针对于SCCB总线的写操作而言,我们需要关心的是Sub-address,而这个地址就是传感器需要配置的寄存器的地址。
Phase 3:即针对Phase 2所指定的寄存器地址,传输所设定的寄存器数据。
 
(2)    SCCB总线寄存器读取时序
相对于SCCB总线的写入时序而言,SCCB总线的读取流程稍微复杂一点,步骤上需要写入两次设备ID,如下图所示:
 
Phase 1:CMOS Sensor的唯一ID地址,此时为寄存器读操作的写入部分,ID为0x42。
Phase 2:写入需要读取的寄存器地址,与SCCB的寄存器地址写入一样。
Phase 3:CMOS Sensor的唯一ID地址,此时为寄存器读操作的读取部分,ID为0x43(0位置高)。
Phase 4:读取CMOS Sensor发送的指定寄存器的值。
 
Okay,了解了OV7725的SCCB接口,及Bingo设计的i2c_timing_ctrl驱动模块,熟悉了OV7725的寄存器内容与配置方式,掌握了OV7725的寄存器配置流程,结合I2C_OV7725_RGB565_Config模块,与i2c_timing_ctrl模块,我们完成了OV7725的寄存器初始化。


上一篇: 摄像头景深概念与计算

下一篇: OV7740摄像头测试模式寄存器配置