|
经过4天的调试,摄像头终于可以拍照片保存到电脑上来了,ov9650的调试走了不少弯路,一些教训总结如下:
/ a( b: \1 M# g* J0 l- U1:OV9650是OmniVision公司的COMS摄像头,号称有130万像素,但是实际效果感觉不如CCD的,特别是远处的背景更糟糕。
% v' R/ j8 g I& @3 j2 K4 C. B9 W @6 K2 u( v
2:OV9650的datasheet上写的寄存器控制协议是Serial Camera Control Bus (SCCB),还给了个时序图,但是它用的是两线制 的SCCB协议;根据它的时序图是可以兼容I2C的,两者在细微之处有点差别,但不影响,但实际应用中,都是后端平台的 I2C接camera的SCCB。可惜我没有仔细分析,愣是用两个GPIO模拟SCCB通信协议。此乃一错
+ r, h+ V. U& C5 _" N, A: ^1 U+ r
2 ~. S! }- b# w1 O3:对于OV9650,OmniVision公司是提供了参考寄存器配置的!一定要找相关人员要!(可能是他们的datasheet写得太烂的原因吧),可以我过分相信自己,没有找技术支持沟通!此乃二错 , B5 L# ?0 G2 \9 u9 ^
( {! C& r) R* ^- M$ Q- L7 w" a4v9650复位后默认配置是不能收到图像的!(在我的这个模式下:YUV422,VGA),当我在用I2C配置时,有的像的轮廓但颜色偏绿,我以为是没有配置起寄存器,但是实际上是配置起寄存器了,是YUV的顺序有问题!此乃三错
/ h* M1 H7 I! y) p/ I7 E6 b5 Q
/ U- c" Y) c9 K3 C& A- @! U7 c+ W5:我们用的是杰得提供的VIA模块控制API,杰得的API多、复杂、有错且没有系统的说明,又由于我没有调试摄像头的相关经验,也没有弄明白杰得的VIA模块API。所以调试的时候没有图像,到底是摄像头输出问题?还是Z228接收处理的问题?无法判断!调试完摄像头了才知道杰得的库是可以输入4:2:2,输出4:2:0的! & J$ p- ~: @ _, t- J
; P9 j$ ~% A( [# h4 w- `: v我觉得调试步骤应该如下: , e6 K) h. I+ @6 _
一:先要保证硬件没有问题!
3 V k! J/ `* o, C 1:首先要看RESET脚和,PDN脚.的电平是否正确,RESET:高电平复位.PDN:低电平工作正常。8 V* O6 {) A, v) N. H
( X+ O& q1 X. U1 N1 k7 t: O0 S 2:第一次调试I2C总线的时候,把示波器放在数据线上,抓图分析看OV9650是否应答。地址应该是60H不要搞错了!
8 t. n/ _. U" H% N7 S0 O 3:测试关键信号(这一小步要寄存器配置正确芯片正常工作了才有的): % u$ X. P& D& X! }0 z+ M# I
时钟输入信号pin13: 24M正弦波(外部晶振的输入)。 ' H4 f: f$ X+ R2 S
时钟输出信号(像素频率):24M,变形了的像正弦波的方波。 3 C* A" f# H( P) _2 T) Q0 H; ]4 }
场同步信号Vsync:形如: ----_----------_----- :两个低电平之间是20ms左右(我测试的是22ms) # {$ ~# |7 ?" S- s8 j6 Z
行同步信号Href: 形如: ----_----------_----- :两个低电平之间是64us左右(我测试的是15.9Khz)
# r! g* {1 c$ H/ b" }/ F1 R) D1 b 以上三个信号是电视信号标准,一定要对。但是,在测试的时候有时候信号不是这个值,比如Vsync=34ms,why?我还没有搞清楚,请高手指点. ; c3 ?3 b/ F0 [" I3 ~0 X
/ L, H/ d. B6 y# h' t
二:OV寄存器配置: ' L. X2 B; \. ?+ Z3 S) p
1:如果没有测试硬件,千万不要妄想配置寄存器! 也是我的调试原则,可惜这次我又违背了!嘚反省! # {& m! R! _5 j3 a" R; i4 R
2: 用I2C读取OV9650的ProducaitonID寄存器【0x0A】【0x0B】:读出来版本号应该是0x9652,这里也一定要对,特别是你手上有几个信号的OV芯片的时候,不同型号的oV芯片,RESET复位信号不同,(有高有低哦!有一个网友就犯了这个错误浪费了四天),datasheet上没有说的很明白Reset是高复位还是低复位,我的小窍门是reset引脚内部有上拉电阻的话应该是低电平复位,有内部下拉电阻的话应该是高电平复位。 . }" }3 Q/ ~2 p: Q. o
3:证明能够通过I2C控制OV9650后,将厂家给的或者网上下的相应的配置写入到ov9650。
$ ?* f4 v) L, Q4:如果配置大体正确,现在摄像头的数据应该出来了。
+ A. D. K/ V2 H% o- U
" f: z1 c% {1 u1 m' @! @% u
$ {" ~) U9 I( S, b$ t============== 3 r9 ^) @3 G6 E4 w/ x7 h% [0 x+ [8 y
以下是厂家给的配置:共有三个VGA,CIF,SXVGA,输出都是YUV模式,如是时钟是24M,帧率是15fps,我只验证了VGA模式的,效果还可以!
+ r5 s* o1 j* q% Z3 J, u, x
+ g+ ^" y; L& v B: I;09032004 : Z0 x/ o3 T" B
;OV9650
# B) G: y- H" O* [& u) ?7 B;VGA YUV
! W6 P+ n5 C) `# Y& u8 O/ s* V;15fps when 24MHz input clock
! i2 I M9 D' }/ o;Device Address(Hex)/Register(Hex)/Value(Hex) / M' `- _3 ]- k4 l: @7 N
;
0 I& m: k; p* H5 k3 q, a7 V& I: r60 12 80 , A( {# \' q5 B, {# @+ V8 \
60 11 81
5 S# J3 ?7 ]7 U, T& G60 6b 0a
% n8 S$ j. Z- O ]0 c" @8 _5 N j: q! e60 6a 3e 2 n: ~- r7 P5 R( a, B" O0 x% T
60 3b 09
% `0 w6 M2 O4 ~4 w# ?" d60 13 e0 ! \4 D2 a- ?- R& {( ]. N
60 01 80 ) L, u& Q/ ?1 v: ~( l) ~% s
60 02 80 7 L, \8 x9 z- U$ B6 M% ?
60 00 00 * J2 |5 ^+ N8 ~( ]! ~
60 10 00
+ f) t2 Z; S. G4 w8 v# I60 13 e5 " Y4 b7 Z2 e8 L* @7 b" a
;
0 Z# T" m7 O: M7 w {0 G- }3 f60 39 43 ;50 for 30fps & R0 i& K4 F3 G+ X' i, U
60 38 12 ;92 for 30fps
& H( x6 j: z5 e60 37 00 2 h! e: F+ i! K# m6 M% e
60 35 91 ;81 for 30fps
* c; w" v) Z& I# S. v/ o1 N: f" N60 0e 20
7 A$ _4 B8 `4 }60 1e 04
# a: P6 @) w8 J7 }3 N+ Z;
+ k8 N( L* x4 L0 S c3 @60 A8 80 ! S3 M" V' A2 h0 D4 z# ]# a1 Y. ~0 _! ~
60 12 40 5 }3 O- m7 v9 _2 U4 O$ K& J' m
60 04 00 7 |! J+ k( N# u$ V9 i1 Z
60 0c 04
2 p3 O! d* `1 o" ^% q. `60 0d 80
. | \0 _& U; h, R6 \* F' w3 \3 K60 18 c6
- G) R# n9 P& H5 Q. l6 I4 j60 17 26 7 |7 `" o$ t& D' i" N$ x! ]9 |
60 32 ad
3 P V" N' Q# p, U" C60 03 00 , b" A% s9 O' [
60 1a 3d
! |: W, r6 i3 z. }3 y60 19 01
; c& R, ^. r7 k$ |( }6 L60 3f a6
. W! k- R& Q0 J/ J( Q" l60 14 2e
' k5 B9 s4 ~' k' P# J6 {' @# i+ ~60 15 02
+ |- Y, w# o* O. |5 V" u) V60 41 02
: _: N3 f; P; ^- U& r- p8 G& ^1 k2 D60 42 08
+ U# S" X5 H2 J;
9 y6 f+ m0 z/ j5 j \ ~60 1b 00
/ o7 b0 H) J m- X# K3 E60 16 06 , |* m1 ]' M% C1 W' N0 K+ |
60 33 e2 ;c0 for internal regulator
( C! }3 v' N! x' @60 34 bf
/ u* o8 d6 n9 H) ?. H60 96 04
) m' _8 k0 t' u7 M& F9 F' a60 3a 00 / v/ G% Z: y4 M# J4 e2 z
60 8e 00
3 O$ z/ V y8 p;
9 A8 t* z. [* I4 p# \: U$ A3 s' O60 3c 77 % e3 C) M/ S% N
60 8B 06
0 }. ?0 V& U3 j- U% n; i( K60 94 88 y. H3 D5 N9 N* o7 n. r
60 95 88 8 s2 B. m6 S- R, a7 |) P
60 40 c1 & _# ~ J! ~- m5 I% G0 a1 o8 I( a) l
60 29 3f ;2f for internal regulator - m9 q. I0 V1 M$ d4 d
60 0f 42 ( k1 l; V- [5 ~7 c4 @
;
. N* X$ l( Q3 N4 N3 A H! q60 3d 92
+ ]' ?+ ~4 W% D0 E/ a7 w60 69 40
( O3 N! M! `# I5 j' r. W4 ^60 5C b9 $ ]7 @( d! {- w5 ^: m1 J* ]
60 5D 96 + d! U+ W0 J! z' E+ ]
60 5E 10 0 b: B# O8 A1 W3 U4 E, [
60 59 c0 / {6 K3 _/ T6 W! Q# S+ M; [
60 5A af
4 E. \& s3 h( q7 ]60 5B 55 : A* m2 ?, Y0 y" {4 h+ `
60 43 f0
, W2 ]/ p! @* d60 44 10
; a, t0 N( w8 X, E) l) O$ U60 45 68 ( S- ^4 z% B$ J
60 46 96 , w& t' l' x2 M! Z+ [
60 47 60
# p8 y' _; @7 ~+ T$ \60 48 80 % l$ Z5 N% B! X7 x& u( }! D( @
60 5F e0 0 Q& D2 F1 s% u7 b7 K
60 60 8c ;0c for advanced AWB (related to lens)
9 V8 f5 s5 _) \60 61 20
* f- W( R2 P* A- h2 _60 a5 d9 , Q8 o; E7 s3 a# W% G5 v5 y
60 a4 74 H; S" k8 l6 d; j1 H4 _" h* G! A" o
60 8d 02 # S0 e) v9 h" p
60 13 e7 [0 D+ o5 c5 V, Q a0 c
; " _; ^( K2 o) p. o+ E! V5 p
60 4f 3a
) j" J& G0 I& B+ F60 50 3d " ^3 }! ]- f+ m# N) q
60 51 03
9 n/ L0 ?1 z) O& l60 52 12 1 y2 _& P' F# \4 w
60 53 26
; @( K" t& \- I- c, U- {60 54 38
6 ~; l) |- S& q7 a60 55 40 ) J. l9 U( j9 H0 X& I1 w6 [; l/ L
60 56 40 ( s4 ]7 H; D4 A% \! y+ Z! A
60 57 40 k) K A, A; y6 A1 ]
60 58 0d + f3 Q/ F, X. R) s% \) a
; , `7 ]5 }3 F; {- i0 p) F4 B
60 8C 23
. q: \) J, k* k. D, @1 K7 ~60 3E 02
# x* T8 }4 `' z60 a9 b8
! k, X) u+ h, K" X. L60 aa 92
% K& `! Z/ K' k" k3 C1 r+ h! y$ _60 ab 0a
. i4 G3 o' F: C8 @; s! o+ e4 c( R; * ?! F) ]) Y* I
60 8f df . ]" L, @ @- L3 K5 W
60 90 00
9 M# m# n# A b8 B9 O60 91 00 ) ]1 G o4 u! C, G" A
60 9f 00 ) T, E, r+ X" A. S: \( y4 }
60 a0 00 7 j3 E( Q8 D/ G \7 ^ C
60 3A 01
/ ^5 C* \: w9 h4 C1 b; ( o9 |; ~7 g; y
60 24 70
( d% j# Q: M+ K$ O! B" B: U7 M, c, r60 25 64
+ F2 A' ^$ D1 S60 26 c3 0 k! `! S! r9 c6 S1 m
;
Y h2 l8 {* z6 o% M5 u; W60 2a 00 ;10 for 50Hz 6 p9 b0 s) ~% ?/ m& Q2 ]0 v
60 2b 00 ;40 for 50Hz
' { e* I% k/ v- S& h t* q; 1 {% ^& d6 p9 N+ V( {
;gamma 2 b6 y9 m" z, s7 V; v7 n
60 6c 40 7 D+ E) L! P; I* V$ f. s3 T
60 6d 30 ) m4 ]/ |- P( c& n) x
60 6e 4b
+ O& ]. g; |$ z) \5 W; T60 6f 60 4 ]; |! ~! j9 ~1 I+ ?$ ? ^
60 70 70 ! R# J Z$ m! B1 K( Y
60 71 70
: L- n* C" L! w+ E$ w" X60 72 70
7 H7 t, l6 o0 S60 73 70
' T& Z& [1 O+ R- }0 g6 ?8 L8 P60 74 60 , O& @% d2 K2 K3 ^$ m* ~+ c! }
60 75 60
! L9 U3 s, F: U" D: B, A. ]60 76 50
9 P# E X# a1 E60 77 48 1 m# K8 W; s6 D9 e- k) C9 h$ {
60 78 3a
; r. J/ M0 V+ {" A9 d; }60 79 2e . z0 w7 P& I5 D! Z/ R
60 7a 28
* l7 p6 ~& e- t% i$ Z6 h0 t60 7b 22
' f/ X! ^/ t4 M3 ^3 {0 r& P _60 7c 04
$ O* G0 j2 p T! @! R; e+ p7 ?60 7d 07 2 i7 c- h7 Q$ S% a
60 7e 10
2 c. D0 R% x. X! q60 7f 28 - |( [6 w7 K4 G/ _1 S
60 80 36
3 _% S5 N" x2 E' m60 81 44
( g7 A( @0 Z" @60 82 52 & I' a6 a7 e5 `% n; `" K
60 83 60 , b8 D4 O1 j3 t( z
60 84 6c % P% z5 Y' q+ U+ [# V- ?1 h" a) v
60 85 78
+ I! f( }( W/ E" W60 86 8c
. C0 ]& Y, C# L; j6 t60 87 9e 1 r1 d& A+ m5 J* \* Y
60 88 bb + y" I$ X& m" i' V
60 89 d2 + m8 a$ `& w8 R2 y; u
60 8a e6 0 s$ j/ R. E+ O _
; & e6 S2 F) P- E! G, }+ j I- \; w8 B
( f+ t0 q" x; a: }
==============
, g, a2 j& g6 A) F& x( u2 e;09032004 4 D/ M, I2 L" l& t. a2 k
;OV9650
; `8 z6 ^& |0 \# F+ a+ V;CIF YUV
7 W8 i6 u4 `& |1 c! q- E" g$ Z! i;15fps when 24MHz input clock
) M/ J e6 X+ d/ F7 z( J2 k( q;Device Address(Hex)/Register(Hex)/Value(Hex)
. e5 u! N$ W: _- |;
6 ^9 ~' x; L* g! @60 12 80
% _/ R3 }: l; l5 g6 U G, t60 11 83 & ?1 w3 H- R- u+ H
60 6b 0a
/ O$ @ o; C! h; i$ f+ G60 6a 30 ; W0 S4 y5 q/ R' g/ O3 ]0 R- u
60 3b 09
j1 {- ~$ Z! _: ~60 13 e0
7 D4 d" z& {. ]- v8 p/ Z60 01 80
5 h7 s" ]5 [4 x, |. q60 02 80 6 d1 l9 `- x* |3 g' j9 @
60 00 00 - U" \; G1 N9 q1 n3 A8 Y+ i
60 10 00 6 `) ~- Z5 r- ~" C
60 13 e5
0 x- [' q8 q1 \$ `+ V$ e; / J9 Y8 J3 z0 j4 K
60 39 43
& \7 c* E, k9 x- N60 38 12
8 q2 m% k* H% x6 h60 37 00 ; x0 v4 y; \% {& N
60 35 91 . B" Q0 h l9 }7 I) s! K3 t% H/ f7 q6 Q
60 0e a0 1 B* c+ t) f1 ]) l% F7 K
60 1e 04
: `$ p( _* \# K* X2 @+ a, O;
5 F% Q* m' W& {6 H/ K& o, h3 t* X60 A8 80
) K" Q0 i* W% ~) @! Z; T60 12 20
# f2 I7 {- W2 |, Q60 04 00 Q; ^2 W. I) d5 `* v. i& B
60 0c 04
4 o* J- w4 S/ s60 0d 80 9 v7 \$ T9 d6 I" R+ { B
60 18 7e 0 z2 p& C; o! g1 V$ T% [) }
60 17 26
8 g8 G7 ?: z/ ?0 }: C60 32 24 ) |) z' S2 P- t- L
60 03 36
! E! ~: V9 b$ i; J9 y$ Q60 1a 24
' Q& ]3 T' _, C9 R& ~: k* m60 19 00
3 n8 K# r$ u0 r ]5 \, v4 [$ o, n% x60 14 2e
' A# {1 Z L, I B60 15 02 3 i9 ^, r' }1 |5 x+ ^, m
60 3f a6 $ E* O; w& V( o3 c9 o
60 41 02 2 G5 A: w( T! S4 H4 A
60 42 08
$ R0 I. g; k% |& J6 Y;
9 o# M. C- R7 W60 1b 00
( i7 A2 E, ]0 A4 [8 b, A8 e60 16 06
$ M' W1 D s. i6 i4 i60 33 e2 ;c0 for internal regulator 6 b% U; S6 A; f* k2 g* A% L
60 34 bf $ [6 f6 A3 W6 W3 v" f: V5 [5 i( `
60 96 04
8 m! V$ G+ Q3 r% g% x8 h. H60 3a 00 7 i" ~" j3 S, f' y) X
60 8e 00
. H+ m) ~* E; a0 i+ R0 ^% E' u; W4 I$ S7 g, Z5 _4 S$ t8 b
60 3c 77 & d0 N9 C5 n8 b7 o0 h9 R
60 8B 06
( w& L2 \& @9 t4 E- i: `60 94 88 6 n/ P; s6 D; q" ^' L: R
60 95 88 # N7 ^* h4 |2 @' ?) e
60 40 c1 ' c1 O: G, [, ]" F
60 29 3f ;2f for internal regulator ( T; T1 J: h2 M% o) x( _1 p" |3 F
60 0f 42 - ?& T3 C! v: T: P9 J5 H+ ]! E1 r# C
; 9 A7 r7 d4 n) |; v% J- N' v
60 3d 92 6 d2 X5 @3 z8 K! Q3 K+ ^) K; F
60 69 40
7 e, A% f' }7 P" X60 5C b9
- e. z( w3 j1 B1 m60 5D 96
& C6 G$ i2 F* T) |60 5E 10 ( Y( {+ {3 d; ]6 {. n& b. |
60 59 c0 $ `3 i5 P+ o6 d1 g7 T8 U. y
60 5A af
# `4 e( o% P5 |& c60 5B 55
' b) c @7 {! Z; f" m" N60 43 f0 : T3 A& l$ E! j8 |! Q! F9 w1 F+ t9 i
60 44 10
4 y1 o5 C. k, e# D- t- q2 \60 45 68 z ~; j6 `% o. |0 f
60 46 96 $ w2 |! v1 J* K$ B5 c
60 47 60
& h' ^! m) U* r+ M- B& M60 48 80
; Q4 u6 v) R4 p0 I: w4 t% ?60 5F e0 - U$ w4 ~3 r ^8 q
60 60 8c ;0c for advanced AWB (related to lens) 0 a* _5 Q4 |! w9 d T
60 61 20
w/ R* w9 c; u% g: ~8 |60 a5 d9 " {9 ]" J/ j% }4 |- T" u
60 a4 74
; |. G! u) ~: f* X3 T7 }$ V60 8d 02
2 ~5 ^% ]) o& d& D: e, Z$ g" U6 `60 13 e7 - |! k/ K+ l% [
;
4 v9 G F' w/ F% ]) p/ c' W60 4f 3a
% q0 J# U) t# o9 C! D& K0 b60 50 3d ! }- K7 A' Z) M6 h- A
60 51 03 + y! m$ s' h" z; E+ u/ h/ h
60 52 12
3 N1 s$ a5 q) W5 c' J# u60 53 26
/ t1 `( F; u5 }60 54 38 : J7 C# F/ F$ S, E: q1 Y
60 55 40 % g* \( X/ ^6 l" t( P" v/ v
60 56 40
$ @0 O7 v, a4 W% g# q$ c60 57 40 , d9 R0 u. t; W' U
60 58 0d
I9 Z: f* K% T2 [; n4 y; ( ~: k/ T# l' c: f
60 8C 23
0 Y$ y( z( q$ U S" f6 ]1 j* W' G60 3E 02 ' {. ?3 o x+ z# e! ~
60 a9 b8
# J& s0 x2 G2 t7 X+ u4 G60 aa 92 ' ?% L Q: L9 r/ x2 P0 _" W
60 ab 0a 5 E2 T, [& ]) S/ `' Z$ r
; 1 i9 _; U6 `1 u9 ]
60 8f df 2 N( }* f/ d Q9 S
60 90 00 ) b- M& i# ~8 A' U2 h* [5 {1 d
60 91 00
: H% t* G7 m' }& r5 b60 9f 00 $ \; g/ t. A1 V8 ]6 X9 [& _+ E4 z
60 a0 00
% O( C! ^ z' D2 e' x+ x+ h60 3A 01
9 {9 s2 }3 V0 D, g7 {: v/ w; $ n" c. {$ q4 H, j. W" P; i4 }
60 24 70 % @) ~; g/ S* m2 P: S$ z
60 25 64
- a0 G$ ]) h) Y: |- ~0 Y( ^: T" u60 26 c3
5 {6 X, i( [( x+ {7 T$ N; E; ' q7 |. Y3 c0 f2 H
60 2a 00 ;00 for 50Hz
% v4 Z% [# F* }9 x; U$ s60 2b 00 ;D2 for 50Hz
5 G' c; N& j, f# U" _;
. _! J+ I+ U4 i$ A;gamma / i" v9 Y& ~5 ~( L
60 6c 40 7 A8 _5 B& n' J
60 6d 30
! |0 H I; u: k/ U# ^2 @60 6e 4b
% g2 j- L2 |- W: K, }60 6f 60
4 l$ s# F g( f8 c) H3 a0 k$ M60 70 70
, B' b& j' K5 ^& P" I4 R1 F8 b60 71 70
/ d0 T4 s( [& T, Q( P0 ~, |7 x, q/ Q60 72 70 6 u! `8 c* D+ u+ j
60 73 70 8 d9 w9 e9 Z1 M' m2 a
60 74 60 ; B% ^ ^( c, k: T! ` P
60 75 60
. S/ ~+ Q; `: L60 76 50 1 L* P1 Z' C3 l9 r8 r+ y; h( U, e' m
60 77 48
1 \' L0 x4 W9 z: l6 x60 78 3a
1 t. K* g: q1 `& S" x) S" p4 `60 79 2e " m: Q5 E- {1 v6 `) @4 ~& s
60 7a 28
: |) J+ `2 R1 s1 V: ]6 i4 o" t) j N5 Q( K60 7b 22
& G) S) M Q5 s- @* \60 7c 04
% }5 l) T. o' g5 |. u/ E$ d9 t60 7d 07
/ E5 X% ]2 v) u8 z# j6 N60 7e 10 0 U, z$ H) X0 m2 ^8 l" ?( w
60 7f 28 ! s' @3 j3 a4 P7 Z+ a
60 80 36
" j/ U# Z- |! h7 X& O( Y9 C- I60 81 44 6 f: Z$ v+ P b
60 82 52
" n, C# ^% Y! b$ |60 83 60 & A6 |6 t/ U9 ^' g8 L
60 84 6c
; a+ x: B' F: H2 {( @6 L! Q9 k% [- C60 85 78 4 p3 I( m8 q7 w0 m
60 86 8c
9 o, @) y3 h4 U( b# S* |" X60 87 9e 0 u! `* |) |; Q
60 88 bb , r+ E, E4 b% C; _" a1 y
60 89 d2 " S" k1 A' W ?- s" }) N6 E
60 8a e6 ) @/ g* ~ H O. f$ i4 y# E
;
& [, K& `# v0 D& S- x3 \$ y# y/ G! \6 n2 U& l- g F4 o
================= . X4 }6 I9 h4 O8 Q5 H6 A& v4 Z
;09032004
7 g) [' U$ F8 Z/ ?# @9 p$ I;OV9650 7 T" H' \ L0 ?
;SXGA YUV $ C* Q- ~0 M2 x% ? m2 ?3 {, z
;7.5fps when 24MHz input clock
- x- w/ s: d- d1 J- N% T0 r7 A8 m;Device Address(Hex)/Register(Hex)/Value(Hex)
3 ~; Y$ L. D+ F4 t# z$ p# n1 s$ m; y' ?! V, ?" G" ]$ N4 k2 D r$ ]
60 12 80
1 S: {. o& F. o- g; e* N7 E60 11 80
7 S8 \: \- Y! Q% ]60 6b 0a
% a4 ^4 T- h! j; o; O1 |( w! @60 6a 41 d4 h6 l/ [; [- H1 d
60 3b 09
1 D8 `! V1 `8 O( W60 13 e0 # }4 v; M4 r% q4 k! H* m% }
60 01 80 # ^- _" O6 J M6 a7 `7 ~; [) U8 n
60 02 80 ( j9 u$ s; c# N2 I4 T
60 00 00
- N4 T0 s4 C: E+ ?60 10 00
/ d6 I) r p- Z60 13 e5 ; v, Z1 C+ }5 V1 I4 o e* t
;
( b$ ~$ C, I# s% N5 Q% e/ M2 T60 39 43 ;50 for 15fps ) C G* Q! U8 n
60 38 12 ;93 for 15fps 6 f0 B# V+ k; D5 w- I6 ~5 w @
60 37 00 1 J% g2 p8 v' ~+ W7 x6 A0 j
60 35 91 ;81 for 15fps
! [# R& a N% g5 o60 0e 20
. N+ y) Y- K3 o60 1e 04
0 k; u( Y$ d K6 ?- |! w6 Q;
6 ]" `( p+ \& B& y! M2 p60 A8 80
/ ^$ ?$ D5 R6 K1 T3 Z: N60 12 00 * d7 R+ q" |' r5 u& O% l! s
60 04 00 1 C" T) I6 q5 h( O4 U. n
60 0c 00 ) _6 o3 S% {6 J+ \ J8 i
60 0d 00
7 Y# I. }- j0 l8 s. ~$ r6 e60 18 bd
$ O$ |* K$ n. x! K6 o60 17 1d
, L) E: ]5 c' ^' t9 n. K+ \60 32 ad % q- [9 G6 F: w- }$ M, T* Q
60 03 12 ( L) p# N. a1 M6 b: G7 j
60 1a 81 * H0 \0 Q, G; `
60 19 01
0 {' w- v! o7 f+ Z60 14 2e
) s; _, G1 I t3 Z+ s( S+ _60 15 00 $ ^! I" M9 |' z5 p! G5 P! F- ]
60 3f a6
g5 D2 W3 r# o$ \5 I% x60 41 02 ) Z# w" c+ R/ U
60 42 08
& T4 m$ |$ f6 K0 U;
' O* p. E: v9 h# U% R1 K( O9 |8 Y60 1b 00 ! ^! {& ~0 l+ ^3 U
60 16 06
: {+ ~ t+ P$ B. m) ]4 g" l2 A60 33 e2 ;c0 for internal regulator # Y) {* B7 L! ^! S1 A
60 34 bf
9 R$ h4 Q; W% [% l& `" w60 96 04 0 X- R, K9 f3 Y( K" S* e% M& {# m
60 3a 00
q" ]; K9 }$ \+ E6 w- K8 a/ P60 8e 00
3 L. }+ x7 \ G; - c6 N0 Q9 J8 ^/ w/ v: B7 n
60 3c 77
% k$ A6 `: S" x, D60 8B 06
( } C9 v) p( s3 P) F) Y. R; X( m60 94 88
( Q+ @: h3 S5 K60 95 88 5 D) c# B/ a* B& S2 D
60 40 c1 4 R+ S% f/ o2 p8 N
60 29 3f ;2f for internal regulator
+ M6 @, K# j4 D( u- p5 c0 D$ \60 0f 42
1 u7 ^# d7 w( D* v" A9 A; 9 N/ h4 X/ Y7 i
60 3d 92
( H* s2 w( P) I" ]! b60 69 40
' Y' F1 \) ]) j4 {60 5C b9
9 C$ @8 z: z! `; V5 @1 Z+ ^60 5D 96 - A1 K( q4 b2 R3 s K
60 5E 10 8 o- \; |; z1 B9 F1 ]
60 59 c0
, h: L0 ]9 y* z! g60 5A af
, x' i5 @. g( Q+ j$ l: G8 l2 }60 5B 55 # t5 f* m& t& p: e4 Q# L& K
60 43 f0
8 y" ^! W6 I3 X2 Y( h" ^60 44 10
6 C# W# I; z S, {3 X60 45 68 , V& Y9 ~) ^8 k2 I
60 46 96
/ p1 H+ f) G7 X8 A0 [3 y60 47 60 5 C1 d6 k8 U. P. A6 ~4 g; C
60 48 80 / Z3 l/ p: F7 l) a
60 5F e0
8 Y0 d% B. w) {: D. U60 60 8C ;0c for advanced AWB (Related to lens)
8 ^1 l: F% `& N3 h60 61 20 $ r/ R- L3 d* ]/ G/ W8 b. N
60 a5 d9
/ y6 [% }+ x% {: w, G1 K7 a60 a4 74
2 z4 X* V7 [1 z. K9 |3 B60 8d 02 2 U" z7 J0 A$ ^. Y1 U
60 13 e7 2 B1 R* m2 g' O6 i
;
' v- }: p! \% D! R& a60 4f 3a
8 H$ }- H4 A" a, z5 N6 U4 T60 50 3d 3 O- q2 |# y/ A
60 51 03
, y% e9 U" S! k9 f% Y/ ?9 Y60 52 12 / c \7 R! \) y, x: t2 \* H
60 53 26
) U* N; n3 D$ s& W2 ]. D5 Z: R60 54 38 4 \& T) }1 [: }5 E# Q0 L" _/ z; b
60 55 40
9 a6 F. F1 }4 q/ @! j6 O# Q7 R60 56 40 7 ]6 g; ^8 d0 Y, u4 i
60 57 40 * [' a% s: q' o0 s2 {
60 58 0d
2 p7 D" B6 e% B0 ]3 ?;
3 @1 Y+ I6 Q' u# s60 8C 23 & ~+ u, @$ f: a' p$ P. u
60 3E 02 - Q( [; {2 a- d# u/ T
60 a9 b8 3 b3 H ?7 k+ |" f
60 aa 92 j+ b3 @7 x- F" p+ O8 m# o& ?* G% y
60 ab 0a 7 {) ~: V2 f0 U: n+ a( A
;
7 G+ ?5 v) H4 v# b60 8f df
4 V" f* K6 g! B3 Y5 K60 90 00
: [; k& ]7 k& C9 u8 w0 F, O60 91 00 ' A0 |9 R4 ^8 \* n! G* r2 W; }
60 9f 00
1 ^! }" l5 U8 c+ d8 F60 a0 00 " W1 Q3 d T+ p0 f: w0 j" U
60 3A 01 # x: Z+ {& d' J8 G0 V% R8 C0 N$ D
; 0 d; Q# [' d9 M6 J% e
60 24 70 " s7 X* K4 h( U2 V
60 25 64
& }# Y! u; [& P! w/ w3 \& e3 i) |. I60 26 c3 1 D9 e/ P2 ~- J) \1 f
;
# e; f, _# X9 U' }5 u60 2a 00 ;10 for 50Hz
S6 O, Q/ \6 M% ~60 2b 00 ;34 for 50Hz
7 G; r- X3 y) h& Z) c; # [" K- \( \5 a1 u+ Q* ~& A
;gamma
, G3 w5 O* d: J I0 f! u60 6c 40
% E# B4 ]* M1 o% J, J6 D60 6d 30
4 j8 Q/ b& M3 S$ E Y/ w! m2 I2 A60 6e 4b
0 x7 h" Z% e) N9 {60 6f 60 ( Y/ B+ T( {; `$ v4 _/ V3 d2 f5 M* |
60 70 70
9 g+ _' w) ?6 `1 T, b60 71 70
* l' A3 a) }6 ^8 t; }60 72 70
$ ]: {: J# ^9 }9 H. @60 73 70
* V, m: _, Y; `& u60 74 60
3 `: |7 W! B6 |3 e4 l8 e5 f r+ k60 75 60 + ^$ s4 ^7 S; e+ N h; A
60 76 50
' t( o4 Q# `# l* K% i- ]& {60 77 48 " k2 }: N t1 d% ]- F: i! R
60 78 3a
" F) k5 r/ s& y. ~60 79 2e : r) h! Y8 I+ Z- ]1 f
60 7a 28
3 n5 a, S; u( n5 t* A7 A60 7b 22 6 _+ a+ C2 ?$ g
60 7c 04
$ [$ E/ q1 r/ o60 7d 07 L' m9 |8 u6 B3 N
60 7e 10
9 t& r* y9 A/ M3 q7 r5 V60 7f 28
6 ^4 ~8 M3 x' J; F# j60 80 36
9 P/ H$ H! w, o7 C, b60 81 44
+ F7 X+ F, e' q* {# c* E7 o60 82 52
. d. E! y0 h9 Z- m. p: o5 `60 83 60 # a, E/ N W- j2 {& I( f, `/ N4 D& O
60 84 6c - I. t2 }, n5 s, p! L
60 85 78 3 X x+ W- U F! P y" L4 H1 {! h
60 86 8c
! f3 U9 j) \7 Z7 i2 d. E Y7 }60 87 9e ) S* N2 a8 g6 m7 q
60 88 bb # F( ]: v2 k, Q
60 89 d2 ! e+ Z$ ]; P# Q r) }4 Z
60 8a e6) s% E0 A9 [+ G$ r$ v- h" b
9 f: M$ @, M2 Z8 c5 Q* o! j
非常感谢网友李鹏分享他的调试经验,让我在调试中得到一些启发,OV9650的datasheet写得太模糊了,而且125个寄存器每一个都要配置!而且有个偏门的SCCB协议,ov9650明明兼容I2C协议的,可是datasheet上就是不说!2 a0 B1 \; ]3 L) F, M
——————————————————————————
& Y6 b t: S6 N, `/ b5 e原文链接! d4 c6 ?! \' ] Z5 `* z0 W/ p
b4 W' L) N, W5 k- ^
Camera调试 & `. N0 c# `& |* y' p
基本上调试camera都是找得平台得技术支持。呵呵,代码合进去应该就没问题了。如果有问题,主要调试一下几个方面:
. W0 ]) f5 H. ?/ G! l1,提供给CMAERA得MCLK是否太快或者不正常; Z3 A) Y' L6 l1 ^
2,camera输出得PCLK是否正常,因改是有MCLK时候,就有PCLK输出。
D' Z) q5 T0 U+ z7 j/ B3,查V、H信号,看是否和程序设计一致,如果一致,说明通信正常。8 Q1 a& ~( R0 C( @. ^
4,量量数据线有无波形,等等
& s9 C( a4 _5 O5 W至于发挥sensor得性能要找技术支持了。
3 F+ b- z1 H4 K4 _9 q3 H供电,检查时钟,送初始化代码,查看输出信号,是否显示正常 ( S6 N6 y% u4 g& a9 g
下面是我在调试OV9650的一些总结:# A1 S# K' E9 ]
, c) t1 O+ {/ `7 N, A步骤一:读取OV9650的ProducaitonID寄存器【0x0A】。
" a$ a3 o+ @* n1 x; O3 w如果读回来的值为预期的0x96,则表明后端芯片跟OV9650能够IIC通信上。函数如下:
/ F* F0 `( ?/ n: S+ X0 r& O RESULT IsiCheckSensorIss( void ) |9 T4 o/ l& \8 N- N3 _/ L; g
{
+ p9 q- y# n/ J UINT8 pucValue;
J% F. T# f. |6 j h; C" D% Q/ Y, c U- F3 I$ S) b- [/ F
IsiReadRegister(OV9650_BASEADR,OV9650_PID , &pucValue);( m7 w* V6 q8 Z# S6 q
if(pucValue ==0x96)//pid value of OV96502 G; D( G1 G- F
return RET_SUCCESS;
, ?: l) Y) M8 \; u3 Q3 ~7 [ else
j/ ]: ^/ t: `& Z: B return RET_FAILURE;
% J' y7 N' B. @( K! g }
/ G! A. g' ?2 v8 E( E9 B2 T& _, @5 K) j; U
步骤二:按OmniVision公司所提供的参数对OV9650进行设置,并进行回读检验。
: V4 g: L8 \6 V0 }% pOmniVision公司会提供每种图象尺寸下的OV9650配置参数。通过IIC口把这次参数写到相应的寄存器去。在调试时最好加段代码进行回读检验,以保证我们对OV9650的设置是正确的。在调试完成后,可去除这段代码。* q) M3 r# @& h1 U, K* b% c
8 m+ C L/ W4 }; Y( U4 O9 B
步骤三:用示波器对OV9650的输出管脚PClk,HSync,VSync进行测量。
4 ~: q" h- p: u' s0 B" I9 Y) W 如果能测到PClk,HSync和VSync信号,并且这些信号是和我们寄存器配置是相吻合的,则表明OV9650已经开始正确工作了。& g. X/ `0 v% s) H* \ |
: L! d. E1 Y4 `3 P& V9 ]
步骤四:配置OV9650为U、V固定值输出,看能否在后端芯片正确接受到固定值的U、V输入。4 z8 A4 r) C& V
置位【0x3A】寄存器的bit4,同时对【0x67】【0x68】寄存器进行设置,这样OV9650就被配置成固定U、V输出了。为验证全部8跟数据线,建议设置【0x67】为0x55,【0x68】为0xAA。如果能在后端芯片正确接收到0x55和0xAA,则表明0v9650和后端芯片数据通路完好,对控制线的极性理解一致。, L X% ^# `. h5 f8 d( w
o2 q! ~- P3 R9 y" b至此,OV9650跟后端芯片的通信已经基本正确。清空【0x3A】寄存器的bit4,让OV9650输出实际的U、V值。0 D( n$ O4 n& o6 ^/ E. E
后面的工作就是如何控制后端芯片(Cx832)Marvin功能块来实现图象的Preview/Capture/Resume等功能了。
9 @' ~7 Y4 q K2 c6 J摄像头初始化时,没有将数据写入I2C,一般问题会出现在哪里?+ \5 g% D" ^9 ^9 {+ M
SENSOR的各路电源是否接好,
1 Y3 Z: S, _, F$ XCMCLK是否正确, q1 `% r0 t- @
RESET sensor
0 C/ ?5 h0 i4 p5 E: p7 rI2C总线上拉电阻是否匹配正确,
! V2 I: U# l7 r2 A" @访问sensor时使用的 device ID是否正确,
, L M, |' E/ B# h5 iI2C的时钟CLK速率是否太高,
z" t) K9 P2 t+ K" O两次I2C连续读写之间是否有spec规定的delay时间
# m2 y2 j5 H( p( @# K0 _CAMERA POWER UP 时序是否符合 SPEC。) o, j5 }3 p5 }8 ~; B
camera的工作过程(从进入相机到拍下照片为止)
* v$ p1 n; y* F3 h% {; l1 A一般先给电源 ,然后给 MCLK SENSOR的 时钟 然后复位 PWDN改变极性使SENSOR 进入工作状态,让后再过几百ms 进行 IIC 操作, 然后就进入 PREVIEW 模式了,拍照的话 是 截取完整的一帧信号而已,有时会关闭SENSOR 的AWB AE功能。 |
|