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