上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接。输出一帧图像与输出时钟PCLK有关。 - v3 I h; } E1 M4 P
I* G; a5 R, d- h. X6 c& l1 I
上图是OV7725实现的整体框架,有点丑。FPGA描述SCCB时序,完成OV7725的配置,配置完成之后,OV7725 sensor输出PCLK和href,vsync以及cmos_data信号。经过格式的转换单元,将格式转换后的数据送给SDRAM单元,最终实现VGA/LCD/上位机显示。
7 e1 F" U; w3 j: t. c1 @+ l2 Y. f; [: _/ E; \3 T; J# h3 v
之前已经提及过,SCCB接口主要实现sensor内部各种寄存器的配置,如AGC,AWB,gama,color saturation等等,下面就讲解寄存器的配置。参考手册如下图所示,寄存器的配置还需要OV7725的手册中关于寄存器设定章节一起配合使用。 ( S. N% ^1 W2 P. ]/ U9 J3 g
* s+ {: ]/ z7 v% p
在手册的最后一个章节,给出了参考设置,不过输出的格式是YCbCr格式,其他设置需要联系FAE。 9 Y. u- Z+ Y) u0 ?( C( ~( H A
$ C' E% B) m- ?6 s; P! t
如下图所示,写入的寄存器前8位数据,如0x3d代表了寄存器的地址,后8位0x03代表了该寄存器设定的值。根据手册最后内容可以在0V7725数据手册(OV7725 datasheet)中找到相关寄存器的说明。 - W+ P( {% F8 v% U* _
8 z' F) I ], c7 P7 _, Q 比如0x3d,在数据手册(OV7725 datasheet)中代表的功能是DC偏置量的控制。如下图所示,其他寄存器以此类推,可以一一找到。注意在设置时设置寄存器地址或者寄存器的名称均可以,比如0x3d,0x03,也可以设置com12,0x03.
9 ~+ X2 B/ f/ x; b; x) u( _
( e7 B- Q `" T: z: A$ V! E& y& [0 W& t" ?% b9 m/ T
; E6 x3 `& p. U+ V p 在OV7725配置手册中,讲述了关于YCbCr和RGB24格式之间的转换方法,如下图所示,由于FPGA不擅长处理浮点数,所以需转换成定点数处理。
/ H) ^8 G. s8 T
8 ~, y& R0 ?. [5 }# r) D5 |- @8 b, F {0 m; U* Q
% [+ J$ [6 ~9 A" B 在OV7725配置手册中,详细说明了对于OV7725格式输出的说明,分为有ISP和无ISP情况,这个模块可以在FPGA内部去建立格式输出单元,此方面内容会在之后讲解。
0 J x/ b0 M* h! |9 W
, | Z, ~7 D1 P1 h' X
* P2 F/ ?4 E* p. s9 V
3 f% k" ~: K4 A, v% n
( g8 A0 w/ r: ?$ Z4 z; v$ T) v8 L9 x7 y( D# @, R$ O
对于寄存器的设置,根据OV7725应用手册中的参考设置,有几个重要部分必须要进行设置,如下所示:
$ L- W; y7 s6 i. ? 1. ID的设置 对于厂商来讲,每一款传感器有唯一的ID地址。 制造商唯一的ID地址。
, ^1 @$ r+ x9 _3 A! s7 Y/ {1 H ]% } 2.复位所有的寄存器 上电之后,对OV内部所有的寄存器先复位。寄存器12不单有复位功能,还有控制OV视频输出格式,下面会提及到,参见第10项。 3.模拟处理中的DC偏置 + V' s i# V) X8 R& B9 X, Q
4. 对行和场的设置 寄存器17位行起始控制,18为VGA模式下行像素大小。19为场起始控制,1A为VGA模式下场像素大小。 : T1 X3 R9 B0 U
0 l7 R5 d0 b7 Z/ H- d! C
5.对场同步信号进行取反操作 为了和VGA时序保持一致,将VSYNC的时序进行取反,关于一帧的时序图参考上一篇博客。 write_SCCB(Ox15,Ox02);此项设置,将pclk定义为上升沿有效,href定位为高电平有效,vsync进行取反向。
* o. Z- j, T6 T% T1 m1 c6.图像的起始位置和大小控制
, c5 u2 ^' M( r4 g( `% a 7.行和场输出数据的大小控制 ; C6 s* z2 r/ q. T+ K1 @
8.内部时钟控制 寄存器0d是设置内部PLL的倍频,选择4倍频,AEC自动曝光控制选择二分之一窗。寄存器11是内部时钟的设置,通过PLL4倍频之后,计算得到的结果和XCLK的时钟应该是相等的。 ; d; m7 w( B1 X0 J E
7 T4 {/ G4 Y }7 P5 h# X 9.虚拟像素高位插入 配置手册上面给出的是默认值,此功能实际上没用到。
- E+ S8 ?, y; p' K- s# o: `0 b+ D
10.OV视频格式输出配置 寄存器12,功能复用 ,write_SCCB(Ox12,Ox06);输出格式是RGB565格式。所以此寄存器非常重要,决定了OV输出的格式。 : b! a# ^( }# s( {+ O* c
/ V3 W7 G! T$ K2 C6 G
11.RGB格式YUV格式的顺序以及测试彩条的控制 write_SCCB(Ox0c,Ox10);其中寄存器0c控制RGB和YUV格式的顺序,还有控制OV内部自带的测试彩条的使能。这里采用默认值,不使能彩条。
% s) M0 E4 ]- r! R+ P* S( o5 L9 n8 n+ }
12. DSP控制参数 其中0x42寄存器控制的是背光补偿蓝控制量,如下图所示,选择手册参考值。 其中0x4d是修补增益的控制,0x42对背光补偿颜色B分量进行设定。
' u5 ~! H- ~2 G9 b1 |( I 寄存器0x63是AWB自动白平衡控制字0的控制。选择手册中的默认值。0xf0;
8 [; {, Q" p" w9 z. _1 G' F: \" T3 S2 Z) D
寄存器0x64~67是DSP控制为1~4,0x64设定为配置寄存器中的默认值0xff;0x65选择手册默认值,配置手册上给出的是0x20,选择默认值0x00,不影响成像效果。0x66是UV的交替格式。选择0x00。0x67是输出格式的选择,这里设置0x00/0x01,为YUV or RGB输出。
$ u+ E8 X. h. f# [; l8 r) N; e7 n" {6 q' x: ^; U
1 O! f$ b" T' `$ s, n13. AWB,AEC,AGC参数控制调节 ~ O) B0 } R% X1 Q1 z
% @! ]3 N9 I% |) B% F! i0 i
0x13控制AEC,AWB,AGC是否使能,设置为0xff;0x0f控制当输出格式转换时,窗口自动适应。0x14设定0x11.0x22设定为 0x98,作为50Hz带宽滤波。在OV7725寄存器配置手册中0x13,0x22,0x23是关于交流频率50Hz,帧频为25,情况下的带通滤波器的设置。 8 e$ _, A- A4 q: p( {; B
5 _% w v6 M/ U- V' Y! L
* ?: ^' l* `- F0 D5 i
14.边缘强化处理均选择配置指定值。
2 s d( B# L$ t2 R+ `9 X
3 X8 g. _5 Q- _) c6 @( `) b" Y. \ 15.色彩还原矩阵设置 / g( G+ i5 z3 r' B
7 y4 q/ _; r2 _$ c% u1 |0 s
8 W, O d. V' x! `6 V4 S7 B1 y 16.亮度,对比度,UV和SDE控制 选择默认值。
1 x/ a4 ^0 c9 `) w" n Z6 A+ R: p# [8 u- x& q2 y
( _/ b f: R1 I6 M M* t
: s" d) s+ T& d
17. gama参数设置 其中寄存器0x7e~0x8c均是对gama曲线的设定,设定配置手册默认值。 ! b: u% W* \/ `7 _, u. K* S
4 Y, m, o) h1 R% x5 d' z
, s) U# i9 O# L( v4 ?
18. UV控制 : ]) l+ E3 m( F/ w7 G
write_sccb{0xa7, 0x65}; & [5 z8 K+ z O
write_sccb{0xa8, 0x65}; 6 K1 }0 j9 ]; _
write_sccb{0xa9, 0x80}; E6 Z0 j: v* v# P/ {, |& m
write_sccb {0xaa, 0x80}; ' L: f1 v; D- w: h- Z( w) R; U
+ p! ~9 Z: K4 x! e' G! \3 Z/ \" C
" K- Y) h2 M7 P* c! z' j8 m
1 D! `& l+ N' X; V/ H19.夜间自动调整帧频
+ n: B( l5 \* Q' i
3 e3 Y; q5 k2 i9 T/ j" g若是设置成 Fixed Frame Rate,则 - I' |: ]/ s4 e$ H. k
以上是对常用的寄存器的设置,大部分参考了手册中的设定值,接下来就要实现 SCCB时序,实现对OV7725实现配置。 8 |1 W1 H) t6 K
摄像头模组论坛欢迎你的加入:微信交流群咨询:13713561691 |