上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接。输出一帧图像与输出时钟PCLK有关。 8 l+ n$ }7 M7 [+ c
0 ~* K1 {+ W1 i( u$ M+ q 上图是OV7725实现的整体框架,有点丑。FPGA描述SCCB时序,完成OV7725的配置,配置完成之后,OV7725 sensor输出PCLK和href,vsync以及cmos_data信号。经过格式的转换单元,将格式转换后的数据送给SDRAM单元,最终实现VGA/LCD/上位机显示。 & ^) _. I8 O' l4 w- P; ?
6 y. c! H2 j8 d. F. \ 之前已经提及过,SCCB接口主要实现sensor内部各种寄存器的配置,如AGC,AWB,gama,color saturation等等,下面就讲解寄存器的配置。参考手册如下图所示,寄存器的配置还需要OV7725的手册中关于寄存器设定章节一起配合使用。 * L7 M# Y; p- i0 e0 v
+ l' K, _2 i; {+ X8 S
在手册的最后一个章节,给出了参考设置,不过输出的格式是YCbCr格式,其他设置需要联系FAE。
; S( e4 r4 D) }9 h- T. W
! k2 Y2 H9 w9 J k" a6 n+ i) ^ 如下图所示,写入的寄存器前8位数据,如0x3d代表了寄存器的地址,后8位0x03代表了该寄存器设定的值。根据手册最后内容可以在0V7725数据手册(OV7725 datasheet)中找到相关寄存器的说明。
" n: W9 [: N1 H" T2 F! g [/ x2 i5 E9 ~3 ~5 P$ Y) ^
比如0x3d,在数据手册(OV7725 datasheet)中代表的功能是DC偏置量的控制。如下图所示,其他寄存器以此类推,可以一一找到。注意在设置时设置寄存器地址或者寄存器的名称均可以,比如0x3d,0x03,也可以设置com12,0x03.
$ {) \8 T' O. v
& {% E, i/ i2 ^' w/ I
! a! ^" C! L; n* j; y8 D9 I3 p# w- y2 F
在OV7725配置手册中,讲述了关于YCbCr和RGB24格式之间的转换方法,如下图所示,由于FPGA不擅长处理浮点数,所以需转换成定点数处理。
( ~' s( d7 k) S& b" h5 M7 J5 B) @2 ]+ f) O7 V
: q$ I& I- u4 q, p' E
9 o! G% d! H8 [! L: j6 _ 在OV7725配置手册中,详细说明了对于OV7725格式输出的说明,分为有ISP和无ISP情况,这个模块可以在FPGA内部去建立格式输出单元,此方面内容会在之后讲解。
2 V# R2 I; A. B8 b5 |
' M2 n4 p! |3 n
3 ^0 {2 Q. w) z. T) U- M
. a: N# `3 o0 P k( I" n8 o1 b- |: j' j# E+ b. ?
( O1 @. [: h' \
对于寄存器的设置,根据OV7725应用手册中的参考设置,有几个重要部分必须要进行设置,如下所示:
" o# f$ k! _: ?$ p8 P* h 1. ID的设置 对于厂商来讲,每一款传感器有唯一的ID地址。 制造商唯一的ID地址。 2 }# |& ~, S3 I. t z y
2.复位所有的寄存器 上电之后,对OV内部所有的寄存器先复位。寄存器12不单有复位功能,还有控制OV视频输出格式,下面会提及到,参见第10项。 3.模拟处理中的DC偏置 2 h2 x- ^6 V' v1 i
4. 对行和场的设置 寄存器17位行起始控制,18为VGA模式下行像素大小。19为场起始控制,1A为VGA模式下场像素大小。
/ N8 B( ]: T! e0 A$ T6 Q- r7 P5 H# h
5.对场同步信号进行取反操作 为了和VGA时序保持一致,将VSYNC的时序进行取反,关于一帧的时序图参考上一篇博客。 write_SCCB(Ox15,Ox02);此项设置,将pclk定义为上升沿有效,href定位为高电平有效,vsync进行取反向。 . L. R4 o* d- I6 t; U" g7 B! b
6.图像的起始位置和大小控制 : R4 y) W4 Z3 W& H# {5 y6 U
7.行和场输出数据的大小控制
0 r$ r+ F( k- d" o6 \5 E 8.内部时钟控制 寄存器0d是设置内部PLL的倍频,选择4倍频,AEC自动曝光控制选择二分之一窗。寄存器11是内部时钟的设置,通过PLL4倍频之后,计算得到的结果和XCLK的时钟应该是相等的。
* C' D' C! i$ x1 w; Q& [. a) V) _) a# k& H- H- u
9.虚拟像素高位插入 配置手册上面给出的是默认值,此功能实际上没用到。 , [2 z- n0 { C; T
* H+ Q7 z; S6 ]
10.OV视频格式输出配置 寄存器12,功能复用 ,write_SCCB(Ox12,Ox06);输出格式是RGB565格式。所以此寄存器非常重要,决定了OV输出的格式。 " D$ W. g; D- A0 x/ G
3 L1 _# ]1 m" O. D11.RGB格式YUV格式的顺序以及测试彩条的控制 write_SCCB(Ox0c,Ox10);其中寄存器0c控制RGB和YUV格式的顺序,还有控制OV内部自带的测试彩条的使能。这里采用默认值,不使能彩条。
, O# j, @4 ?. ^) H) ?9 c/ v' @. K; E H4 ?1 Q+ _8 ]
12. DSP控制参数 其中0x42寄存器控制的是背光补偿蓝控制量,如下图所示,选择手册参考值。 其中0x4d是修补增益的控制,0x42对背光补偿颜色B分量进行设定。
/ p7 |( |4 g) w6 T# a2 C 寄存器0x63是AWB自动白平衡控制字0的控制。选择手册中的默认值。0xf0;
" C: r) W. J9 i |9 [% @+ k; a1 u- Q* C8 a/ R1 k
寄存器0x64~67是DSP控制为1~4,0x64设定为配置寄存器中的默认值0xff;0x65选择手册默认值,配置手册上给出的是0x20,选择默认值0x00,不影响成像效果。0x66是UV的交替格式。选择0x00。0x67是输出格式的选择,这里设置0x00/0x01,为YUV or RGB输出。
) D/ C/ b2 l) |: i; v! [
1 [/ C0 y5 C$ I! d5 U) `8 Z
! z3 k2 [: h: _- G4 @13. AWB,AEC,AGC参数控制调节 4 G& J" C/ ^' A/ [' [: {& U
* y, X" r! n# r% b( ~. Y0 `
0x13控制AEC,AWB,AGC是否使能,设置为0xff;0x0f控制当输出格式转换时,窗口自动适应。0x14设定0x11.0x22设定为 0x98,作为50Hz带宽滤波。在OV7725寄存器配置手册中0x13,0x22,0x23是关于交流频率50Hz,帧频为25,情况下的带通滤波器的设置。 - v/ B; B( t/ q- U# n, q* Y
+ l( v2 r) N* e) l+ ?3 @ N
) B" z* ?) ~- J2 M; s/ I
14.边缘强化处理均选择配置指定值。
! S! V# q* s+ w, `6 S- m" H8 B
- j# v! b, c1 t3 H; h# ? 15.色彩还原矩阵设置
/ g( U3 B0 z+ [* `# B5 y* |
8 y6 F$ l/ I) K" b% L, u
, Z8 q5 ~8 d. v% l+ S+ m9 ? 16.亮度,对比度,UV和SDE控制 选择默认值。
, C( K* W2 V5 b2 d2 K% X8 N$ p5 `& [
# o1 ]; d" @5 ]: b) H- h; j
8 G7 X9 P# Y% @' H17. gama参数设置 其中寄存器0x7e~0x8c均是对gama曲线的设定,设定配置手册默认值。
4 ~8 `0 l" t" G/ Z' b0 r
" Q0 f) X5 j/ s9 v1 N# m) o p; Z7 f: Z: ]* v; C
18. UV控制 - i. A% G. P& k4 S
write_sccb{0xa7, 0x65}; % f1 H' F$ X* z( r
write_sccb{0xa8, 0x65}; 3 x, r3 O- A. k, U2 ?' W+ D: g
write_sccb{0xa9, 0x80};
j. E8 _) `+ J4 V7 @write_sccb {0xaa, 0x80}; * ~" \5 n, y# {
3 S. f# E4 X- O `: h
3 ^4 q$ Z* G& O) ?* D9 }" k* K# j! L; b |' v) G# H
19.夜间自动调整帧频
# b5 y; S2 R" i' a& v# I / M2 X. r" ?9 C, ]+ e: H
若是设置成 Fixed Frame Rate,则 U0 X! r; p( U6 @
以上是对常用的寄存器的设置,大部分参考了手册中的设定值,接下来就要实现 SCCB时序,实现对OV7725实现配置。 # s( U; N f2 u0 Q+ e) w) [
摄像头模组论坛欢迎你的加入:微信交流群咨询:13713561691 |