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