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