|
|
, n8 q9 j" ~, }5 p- Z; B 基本上调试camera都是找得平台得技术支持。呵呵,代码合进去应该就没问题了。如果有问题,主要调试一下几个方面:. V. Z% _3 y; i- K$ b) k# N
1,提供给CMAERA得MCLK是否太快或者不正常
* p7 o8 ~$ l M5 s2,camera输出得PCLK是否正常,因改是有MCLK时候,就有PCLK输出。- ?8 _& d. C; V4 j. G2 P
3,查V、H信号,看是否和程序设计一致,如果一致,说明通信正常。$ T/ A: w Y l# e
4,量量数据线有无波形,等等
! y9 m! i q7 i4 h4 y" @2 K3 U
# Y7 ^) h& A1 [- ?0 u至于发挥sensor得性能要找技术支持了。
8 A$ L$ X* e! ^4 `9 C/ |; a供电,检查时钟,送初始化代码,查看输出信号,是否显示正常
; e- ]& H# u3 x; `/ B下面是我在调试OV9650的一些总结:- ^9 c# q# Z6 Y
* X @4 E3 i% b8 n
步骤一:读取OV9650的ProducaitonID寄存器【0x0A】。7 Z, ], w2 \! S
如果读回来的值为预期的0x96,则表明后端芯片跟OV9650能够IIC通信上。函数如下:0 C* s" z: |* S, W. N+ f; r, ?# Z
RESULT IsiCheckSensorIss( void )
$ L- V2 W! ?2 s, }" t! o* l2 p {
$ H8 y, X; H5 F6 p UINT8 pucValue;1 T) n2 p% J3 p& z3 @
7 g) C3 U8 c. F- y5 z& V% Z* Z IsiReadRegister(OV9650_BASEADR,OV9650_PID , &pucValue);0 G* n) y* m: U& V. b. G" E# K E
if(pucValue ==0x96)//pid value of OV9650! v& l2 O: b: W5 z) w& G
return RET_SUCCESS;
; F4 @" h: U; m( G* D5 h else% h0 m m4 ?, j; O
return RET_FAILURE;/ n6 G5 G( G+ }% t
} b; {' w5 O3 Q$ t. C
$ E- v& G a8 U4 z1 J. G% }0 A8 N* n
步骤二:按OmniVision公司所提供的参数对OV9650进行设置,并进行回读检验。# \' m! ]2 f, A9 h8 E6 | U
OmniVision公司会提供每种图象尺寸下的OV9650配置参数。通过IIC口把这次参数写到相应的寄存器去。在调试时最好加段代码进行回读检验,以保证我们对OV9650的设置是正确的。在调试完成后,可去除这段代码。$ D* G/ h$ f. j) `3 k- n
, p( V8 o* ? e3 K5 o" U( {7 W步骤三:用示波器对OV9650的输出管脚PClk,HSync,VSync进行测量。
5 L/ h, l3 w+ J" E3 W 如果能测到PClk,HSync和VSync信号,并且这些信号是和我们寄存器配置是相吻合的,则表明OV9650已经开始正确工作了。; U+ p8 N" p* q* w# W6 \! z
" f# |( y/ k& |( D8 d步骤四:配置OV9650为U、V固定值输出,看能否在后端芯片正确接受到固定值的U、V输入。
' M6 H/ F4 X5 V! w9 [置 位【0x3A】寄存器的bit4,同时对【0x67】【0x68】寄存器进行设置,这样OV9650就被配置成固定U、V输出了。为验证全部8跟数据线, 建议设置【0x67】为0x55,【0x68】为0xAA。如果能在后端芯片正确接收到0x55和0xAA,则表明0v9650和后端芯片数据通路完好, 对控制线的极性理解一致。
0 f+ H' e( F* j" F" P+ r% z2 K1 e+ f. @- j F
至此,OV9650跟后端芯片的通信已经基本正确。清空【0x3A】寄存器的bit4,让OV9650输出实际的U、V值。
) x5 Z( h5 B( d+ d后面的工作就是如何控制后端芯片(Cx832)Marvin功能块来实现图象的Preview/Capture/Resume等功能了。
0 D( a; ?- g9 N摄像头初始化时,没有将数据写入I2C,一般问题会出现在哪里?
2 `+ W2 J+ q4 D3 \0 PSENSOR的各路电源是否接好,# e8 ~" m7 J3 p x1 s* x
CMCLK是否正确7 L3 Y+ Y- n1 a+ \6 H
RESET sensor( M8 A5 q- Q8 W" A" a& a: G, Y9 k
I2C总线上拉电阻是否匹配正确,2 P1 d/ c+ C) t: _* |& v' V4 z8 n
访问sensor时使用的 device ID是否正确,
3 e' `# ?5 x4 Z v5 e+ S. R. UI2C的时钟CLK速率是否太高,2 D/ ^9 h6 G5 _; V
两次I2C连续读写之间是否有spec规定的delay时间
8 K3 \1 G0 Z4 i e* Z' WCAMERA POWER UP 时序是否符合 SPEC。! m$ [# w1 R: I: w
camera的工作过程(从进入相机到拍下照片为止)
! B5 D2 ^- l5 l2 o: I一般先给电源 ,然后给 MCLK SENSOR的 时钟 然后复位 PWDN改变极性使SENSOR 进入工作状态,让后再过几百ms 进行 IIC 操作, 然后就进入 PREVIEW 模式了,拍照的话 是 截取完整的一帧信号而已,有时会关闭SENSOR 的AWB AE功能。
. o. h2 P% C8 B" [3 ^6 m
8 E# F+ g& z' I8 {/ u$ U/ s
3 o( C! |$ w" [3 _1 t1 a |
|