|
上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接。输出一帧图像与输出时钟PCLK有关。 4 h( N# w+ Y4 B4 W
2 ~' I7 N, h* v! @8 \: Q4 A# U
上图是OV7725实现的整体框架,有点丑。FPGA描述SCCB时序,完成OV7725的配置,配置完成之后,OV7725 sensor输出PCLK和href,vsync以及cmos_data信号。经过格式的转换单元,将格式转换后的数据送给SDRAM单元,最终实现VGA/LCD/上位机显示。
6 |0 g0 P% C, a" \
: e' `( y6 H: |& f% \, G 之前已经提及过,SCCB接口主要实现sensor内部各种寄存器的配置,如AGC,AWB,gama,color saturation等等,下面就讲解寄存器的配置。参考手册如下图所示,寄存器的配置还需要OV7725的手册中关于寄存器设定章节一起配合使用。
9 a) k3 |- n7 z1 U- H3 [ W
. I5 H" b3 j: f q( X* [ O 在手册的最后一个章节,给出了参考设置,不过输出的格式是YCbCr格式,其他设置需要联系FAE。 * e$ [2 v' G* }+ x/ Z
' B x, b" ?. }. c 如下图所示,写入的寄存器前8位数据,如0x3d代表了寄存器的地址,后8位0x03代表了该寄存器设定的值。根据手册最后内容可以在0V7725数据手册(OV7725 datasheet)中找到相关寄存器的说明。 - I4 g) y2 d/ Q- }
" @5 C& l w# i2 v 比如0x3d,在数据手册(OV7725 datasheet)中代表的功能是DC偏置量的控制。如下图所示,其他寄存器以此类推,可以一一找到。注意在设置时设置寄存器地址或者寄存器的名称均可以,比如0x3d,0x03,也可以设置com12,0x03. ; R# T* \6 w+ R( L1 K
, a. T8 h5 d3 L- m& l1 t) Q G6 f" j1 F4 F! O! L4 h' j
2 A. B3 s d8 C
在OV7725配置手册中,讲述了关于YCbCr和RGB24格式之间的转换方法,如下图所示,由于FPGA不擅长处理浮点数,所以需转换成定点数处理。
6 t9 k/ ^& `6 z; v6 A* p- L2 v4 T4 f. d1 u: {8 v- o
# ?% z' V" ]( n1 \! K9 R4 g/ h
" M' d: H0 L$ F' {. m% d' ~! }
在OV7725配置手册中,详细说明了对于OV7725格式输出的说明,分为有ISP和无ISP情况,这个模块可以在FPGA内部去建立格式输出单元,此方面内容会在之后讲解。 9 F% ~! z: Z: h" _% u5 l( I# U
4 @2 ^& x3 Y- H* Q3 d# B
& p1 t( D* Y/ P1 M4 x0 T
7 s( q3 b: J P F0 J+ P! E. M& G8 M
" |. c0 ~& [: K- w6 \% T 对于寄存器的设置,根据OV7725应用手册中的参考设置,有几个重要部分必须要进行设置,如下所示:
+ |& Z: x. i$ o* E' K 1. ID的设置 对于厂商来讲,每一款传感器有唯一的ID地址。 制造商唯一的ID地址。
7 Y( o7 t m6 ^9 z 2.复位所有的寄存器 上电之后,对OV内部所有的寄存器先复位。寄存器12不单有复位功能,还有控制OV视频输出格式,下面会提及到,参见第10项。 3.模拟处理中的DC偏置
6 b* V) _# t: A! z# v4. 对行和场的设置 寄存器17位行起始控制,18为VGA模式下行像素大小。19为场起始控制,1A为VGA模式下场像素大小。
8 X7 b. \# Z& J& x
7 v" T! z8 p( \( A5.对场同步信号进行取反操作 为了和VGA时序保持一致,将VSYNC的时序进行取反,关于一帧的时序图参考上一篇博客。 write_SCCB(Ox15,Ox02);此项设置,将pclk定义为上升沿有效,href定位为高电平有效,vsync进行取反向。
; \% v" V4 J5 y' e1 i, C$ b( q* d6.图像的起始位置和大小控制 $ p+ ~" D7 L! K" M1 D# W& r
7.行和场输出数据的大小控制 8 w; [; ?$ |- E+ B: w
8.内部时钟控制 寄存器0d是设置内部PLL的倍频,选择4倍频,AEC自动曝光控制选择二分之一窗。寄存器11是内部时钟的设置,通过PLL4倍频之后,计算得到的结果和XCLK的时钟应该是相等的。
% h$ K3 V$ V8 g d
3 I6 ], W+ O! q( c+ r 9.虚拟像素高位插入 配置手册上面给出的是默认值,此功能实际上没用到。
1 |! B: F7 u6 D! O
, W$ C' q3 O8 g* k! R9 h: f10.OV视频格式输出配置 寄存器12,功能复用 ,write_SCCB(Ox12,Ox06);输出格式是RGB565格式。所以此寄存器非常重要,决定了OV输出的格式。 : L/ m L+ B+ Q
5 `4 n+ X- S) M: I, @6 C
11.RGB格式YUV格式的顺序以及测试彩条的控制 write_SCCB(Ox0c,Ox10);其中寄存器0c控制RGB和YUV格式的顺序,还有控制OV内部自带的测试彩条的使能。这里采用默认值,不使能彩条。
$ s# p9 l7 \. z8 j1 n
: _% I4 j' A1 ^12. DSP控制参数 其中0x42寄存器控制的是背光补偿蓝控制量,如下图所示,选择手册参考值。 其中0x4d是修补增益的控制,0x42对背光补偿颜色B分量进行设定。
& @1 X! W2 L; [4 A 寄存器0x63是AWB自动白平衡控制字0的控制。选择手册中的默认值。0xf0;
& S; c' E# Z9 [- O% a! \& C: {
, w: T9 E) D1 r& n$ m- _ 寄存器0x64~67是DSP控制为1~4,0x64设定为配置寄存器中的默认值0xff;0x65选择手册默认值,配置手册上给出的是0x20,选择默认值0x00,不影响成像效果。0x66是UV的交替格式。选择0x00。0x67是输出格式的选择,这里设置0x00/0x01,为YUV or RGB输出。 9 t5 }: i" p; A6 d
* _; ^( z9 @' g f
1 i0 H7 I+ D: x/ G6 d+ i- D7 _
13. AWB,AEC,AGC参数控制调节
3 I8 ?$ k9 e6 J R. L0 ~- f/ f$ f
. i. t" H8 _* C6 M6 f 0x13控制AEC,AWB,AGC是否使能,设置为0xff;0x0f控制当输出格式转换时,窗口自动适应。0x14设定0x11.0x22设定为 0x98,作为50Hz带宽滤波。在OV7725寄存器配置手册中0x13,0x22,0x23是关于交流频率50Hz,帧频为25,情况下的带通滤波器的设置。
8 k" p- a7 ~4 Z$ w5 M! Y9 R; G
. g! a) n& y B * Z# ~: R9 [3 h1 c( l. F
14.边缘强化处理均选择配置指定值。
# B* m/ k3 t& |) }' Z# u9 b# L! a1 z( K) Z
15.色彩还原矩阵设置 / R; x& X9 D `7 o& p% U
$ S, p+ o4 m' b- W( V
) @4 R8 H- j" U, ~$ j" Y 16.亮度,对比度,UV和SDE控制 选择默认值。
+ n3 F, a5 D' \+ K% [ Z% ? |# a7 s6 }) e" X& E
" Y; v/ @- l8 O# @5 ?0 `- @1 @0 S0 g- s. Y+ p
17. gama参数设置 其中寄存器0x7e~0x8c均是对gama曲线的设定,设定配置手册默认值。
- j3 a5 J# p: z, Y9 `; K
) n! I& w1 `" E9 Z* q ^4 U0 |% I" o
18. UV控制
! h( r, d- G( x7 rwrite_sccb{0xa7, 0x65}; ! E. b1 e- J0 S! g0 p2 w# e e& I
write_sccb{0xa8, 0x65}; " {% p& f/ P0 G5 H' p1 ?
write_sccb{0xa9, 0x80}; : ?5 |) q1 ]& _
write_sccb {0xaa, 0x80}; 6 _! Q; q- t6 R6 n, X) }( p
! l+ r+ }; i2 c8 T, v, Q
) O) ^8 g8 k/ r/ p9 ]2 C; [& a$ `
9 N) R$ j+ a e& [& F
19.夜间自动调整帧频 % s7 a( t" U ~4 U5 v
6 q7 w3 Q% L" h! x0 b7 B' d! ]
若是设置成 Fixed Frame Rate,则
5 I E: T9 n I G 以上是对常用的寄存器的设置,大部分参考了手册中的设定值,接下来就要实现 SCCB时序,实现对OV7725实现配置。 1 Y# b( [/ f/ J$ }7 A
摄像头模组论坛欢迎你的加入:微信交流群咨询:13713561691 |