上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接。输出一帧图像与输出时钟PCLK有关。 8 w. K! Z% h1 E7 ^6 \
+ ^2 k, h0 b) b q4 y% | 上图是OV7725实现的整体框架,有点丑。FPGA描述SCCB时序,完成OV7725的配置,配置完成之后,OV7725 sensor输出PCLK和href,vsync以及cmos_data信号。经过格式的转换单元,将格式转换后的数据送给SDRAM单元,最终实现VGA/LCD/上位机显示。 8 V$ J) U2 z( {
' v: f3 e! t/ K2 L( Q% f 之前已经提及过,SCCB接口主要实现sensor内部各种寄存器的配置,如AGC,AWB,gama,color saturation等等,下面就讲解寄存器的配置。参考手册如下图所示,寄存器的配置还需要OV7725的手册中关于寄存器设定章节一起配合使用。
7 Y B5 C8 @) ~* d% z: V3 U. h+ {6 ~" I) Q$ z2 i& s" n
在手册的最后一个章节,给出了参考设置,不过输出的格式是YCbCr格式,其他设置需要联系FAE。 6 ^/ W: n- S+ y7 u/ {$ H! u
" q7 l7 v8 i1 f5 d @
如下图所示,写入的寄存器前8位数据,如0x3d代表了寄存器的地址,后8位0x03代表了该寄存器设定的值。根据手册最后内容可以在0V7725数据手册(OV7725 datasheet)中找到相关寄存器的说明。
# H8 H5 ]$ [1 }( ~1 [5 U/ p; z! v5 }/ d( S2 M+ B1 t4 {
比如0x3d,在数据手册(OV7725 datasheet)中代表的功能是DC偏置量的控制。如下图所示,其他寄存器以此类推,可以一一找到。注意在设置时设置寄存器地址或者寄存器的名称均可以,比如0x3d,0x03,也可以设置com12,0x03. 1 H# k8 `9 Q) H+ @
& Y& a. B4 X' S, D
, n3 P5 A. R! s9 x$ V( a
0 D. V/ V* ?9 n5 R- Y0 n0 |
在OV7725配置手册中,讲述了关于YCbCr和RGB24格式之间的转换方法,如下图所示,由于FPGA不擅长处理浮点数,所以需转换成定点数处理。
& [9 Y$ t+ l+ W J
5 M- |* a4 Y; o, [7 P2 A
' k& c/ o; Z8 P2 M( E" j- f' R: c9 T6 U" ?+ f) {2 M$ `
在OV7725配置手册中,详细说明了对于OV7725格式输出的说明,分为有ISP和无ISP情况,这个模块可以在FPGA内部去建立格式输出单元,此方面内容会在之后讲解。
- V& k0 N7 F6 o. q8 o1 }8 s
$ i; ~. x7 U" U7 h* x) I5 \7 T6 m: s4 x
0 l# C* H5 r+ R8 G% w+ v/ q3 W- X' s
9 `) d* X8 M3 X% T/ t
对于寄存器的设置,根据OV7725应用手册中的参考设置,有几个重要部分必须要进行设置,如下所示:
# L; J) A. B* R% A' B; C 1. ID的设置 对于厂商来讲,每一款传感器有唯一的ID地址。 制造商唯一的ID地址。
* u1 u; p/ q/ C5 a( e 2.复位所有的寄存器 上电之后,对OV内部所有的寄存器先复位。寄存器12不单有复位功能,还有控制OV视频输出格式,下面会提及到,参见第10项。 3.模拟处理中的DC偏置 " @7 r( v K/ Y8 t+ b
4. 对行和场的设置 寄存器17位行起始控制,18为VGA模式下行像素大小。19为场起始控制,1A为VGA模式下场像素大小。 # i& d: s) u4 D
3 e2 E. b* t! l
5.对场同步信号进行取反操作 为了和VGA时序保持一致,将VSYNC的时序进行取反,关于一帧的时序图参考上一篇博客。 write_SCCB(Ox15,Ox02);此项设置,将pclk定义为上升沿有效,href定位为高电平有效,vsync进行取反向。
7 n6 G# _/ J ^0 v# O$ \6 O6.图像的起始位置和大小控制 , Z$ A& Y1 M- B0 W" ]9 k
7.行和场输出数据的大小控制
, b# }; ]& B, L. ? 8.内部时钟控制 寄存器0d是设置内部PLL的倍频,选择4倍频,AEC自动曝光控制选择二分之一窗。寄存器11是内部时钟的设置,通过PLL4倍频之后,计算得到的结果和XCLK的时钟应该是相等的。
4 a/ O; o( |* B
: t J. ^0 [% F# Q C2 U+ h 9.虚拟像素高位插入 配置手册上面给出的是默认值,此功能实际上没用到。
- U0 M' p% ~! F& E
! |3 t3 m& W; A4 W' U: X10.OV视频格式输出配置 寄存器12,功能复用 ,write_SCCB(Ox12,Ox06);输出格式是RGB565格式。所以此寄存器非常重要,决定了OV输出的格式。 9 C/ o. M* j- Q5 S! Y1 n0 L
4 p+ n( V2 {8 _( g11.RGB格式YUV格式的顺序以及测试彩条的控制 write_SCCB(Ox0c,Ox10);其中寄存器0c控制RGB和YUV格式的顺序,还有控制OV内部自带的测试彩条的使能。这里采用默认值,不使能彩条。
+ ~/ D2 v" c8 X9 a) N; l4 r0 k& Z" ?5 h- I( E' G- O# `- w
12. DSP控制参数 其中0x42寄存器控制的是背光补偿蓝控制量,如下图所示,选择手册参考值。 其中0x4d是修补增益的控制,0x42对背光补偿颜色B分量进行设定。
% p$ B! n3 W- s 寄存器0x63是AWB自动白平衡控制字0的控制。选择手册中的默认值。0xf0; 5 [" p+ m1 d5 |" m" t" H
' ]' F& E' J' R0 x- u! E" g 寄存器0x64~67是DSP控制为1~4,0x64设定为配置寄存器中的默认值0xff;0x65选择手册默认值,配置手册上给出的是0x20,选择默认值0x00,不影响成像效果。0x66是UV的交替格式。选择0x00。0x67是输出格式的选择,这里设置0x00/0x01,为YUV or RGB输出。 7 l; R4 S q4 {" \
9 M& L+ `; [: v/ Z2 t' |, Y
" Y9 j6 m9 e6 Q5 \9 j5 b$ ?13. AWB,AEC,AGC参数控制调节 , I# `, Z8 `9 G' O# U# L0 C
) S" r; h* d+ T0 V 0x13控制AEC,AWB,AGC是否使能,设置为0xff;0x0f控制当输出格式转换时,窗口自动适应。0x14设定0x11.0x22设定为 0x98,作为50Hz带宽滤波。在OV7725寄存器配置手册中0x13,0x22,0x23是关于交流频率50Hz,帧频为25,情况下的带通滤波器的设置。 , }( J9 r7 |; d$ u& Z1 v
5 x1 ~7 R" s' _# h9 i8 @" [' B + ^' A+ a& l2 @( s
14.边缘强化处理均选择配置指定值。 ) {% E# @1 D3 E3 g( A9 |1 ^
# o) X; P4 Z, c% N' ]
15.色彩还原矩阵设置
6 u9 {5 _, Z/ p% P; O1 p1 B2 I: b3 U( h! o7 |. S
/ W1 D# d4 |6 s3 E 16.亮度,对比度,UV和SDE控制 选择默认值。
1 t, P. I8 N# V2 b/ }0 [2 ~) i1 y1 j! e1 [) f
% X' _4 X/ `: h9 D4 I' F
. M$ H$ V5 R7 Q. f4 c
17. gama参数设置 其中寄存器0x7e~0x8c均是对gama曲线的设定,设定配置手册默认值。 ) g8 _5 Q3 k* X# I) y5 ~
: K r( g: T- G0 ~
/ X) t5 I8 ~ J 18. UV控制
! f0 j6 O9 n6 c: b0 o, O: c3 ]8 @write_sccb{0xa7, 0x65};
- n4 H* h5 P: c# b0 Ywrite_sccb{0xa8, 0x65}; & a" ]6 d- j: a
write_sccb{0xa9, 0x80};
/ e1 v# C- ]: w0 V r: J) ewrite_sccb {0xaa, 0x80}; & j1 e1 s. I% Z1 G! x3 ^
0 G8 R$ d- U$ H; G a6 [
% d! ?% T: D! t% a- @! U2 ]0 V1 k" f" Q m
19.夜间自动调整帧频 6 r1 M6 v* o& [2 w; v
0 @* I+ R" ~. s7 s) @9 Y若是设置成 Fixed Frame Rate,则 . y* |& t. \3 w0 g
以上是对常用的寄存器的设置,大部分参考了手册中的设定值,接下来就要实现 SCCB时序,实现对OV7725实现配置。
5 I& P2 ^$ g% ?6 A5 P摄像头模组论坛欢迎你的加入:微信交流群咨询:13713561691 |