|
|
" U8 f d, j7 k# C a
基本上调试camera都是找得平台得技术支持。呵呵,代码合进去应该就没问题了。如果有问题,主要调试一下几个方面:" t8 `7 S/ ^1 \& j4 A) u6 A
1,提供给CMAERA得MCLK是否太快或者不正常! R2 e0 N$ O; P! r. n/ i! H
2,camera输出得PCLK是否正常,因改是有MCLK时候,就有PCLK输出。
/ k* T) _0 ^9 w0 i2 P: R4 z, `/ |3,查V、H信号,看是否和程序设计一致,如果一致,说明通信正常。7 |5 \: g, B8 P
4,量量数据线有无波形,等等9 v! J9 ~* I: e
+ [3 y$ T I) t1 t+ [9 C) {8 M
至于发挥sensor得性能要找技术支持了。 5 k8 v; Z" D1 ^' d0 s9 x. [
供电,检查时钟,送初始化代码,查看输出信号,是否显示正常 r P9 S3 B& V9 I. R3 q5 n
下面是我在调试OV9650的一些总结:
" Q% ]3 M! P9 W5 Y5 c3 t+ i& o! |1 V+ h: \5 E+ |
步骤一:读取OV9650的ProducaitonID寄存器【0x0A】。 H' z/ t$ y( i! }( [. e4 H( |
如果读回来的值为预期的0x96,则表明后端芯片跟OV9650能够IIC通信上。函数如下:' t4 F0 N1 d1 I6 v
RESULT IsiCheckSensorIss( void )
5 ]0 V+ C" S0 ~( W4 X {
: c, B+ l. T/ Q. y" P UINT8 pucValue;3 E2 B4 \8 o; i2 C8 Q
( ]1 x* K* w/ Q+ H A, ]. V IsiReadRegister(OV9650_BASEADR,OV9650_PID , &pucValue);
5 S5 J! \$ y# \+ R/ S5 A- g. a if(pucValue ==0x96)//pid value of OV9650
/ e' y/ s; F1 L! g* d, j5 q return RET_SUCCESS;
; |' y' ^; Z0 B% ^% k else) d# i4 F& F" z7 N
return RET_FAILURE;# E4 L9 a; _. ?+ _
}
( J" y: k% a, W! W" G0 `+ f0 k) o& O. @/ g* }
步骤二:按OmniVision公司所提供的参数对OV9650进行设置,并进行回读检验。+ W3 \2 t2 z% O8 @3 J s r
OmniVision公司会提供每种图象尺寸下的OV9650配置参数。通过IIC口把这次参数写到相应的寄存器去。在调试时最好加段代码进行回读检验,以保证我们对OV9650的设置是正确的。在调试完成后,可去除这段代码。3 P# p* ~% _2 J0 u8 B2 N
4 _! E/ ]' J, ^2 G Z, n- g" r步骤三:用示波器对OV9650的输出管脚PClk,HSync,VSync进行测量。
+ t8 x8 C" f4 g& z 如果能测到PClk,HSync和VSync信号,并且这些信号是和我们寄存器配置是相吻合的,则表明OV9650已经开始正确工作了。
1 o+ T- t j- J
n. a6 ?" f3 C, z6 S步骤四:配置OV9650为U、V固定值输出,看能否在后端芯片正确接受到固定值的U、V输入。1 Z z9 J# N4 ` G# e( ]+ Z- x
置 位【0x3A】寄存器的bit4,同时对【0x67】【0x68】寄存器进行设置,这样OV9650就被配置成固定U、V输出了。为验证全部8跟数据线, 建议设置【0x67】为0x55,【0x68】为0xAA。如果能在后端芯片正确接收到0x55和0xAA,则表明0v9650和后端芯片数据通路完好, 对控制线的极性理解一致。
% i1 ~- J4 F8 G- D' a9 s5 g: K/ ?) U( {' q, C p
至此,OV9650跟后端芯片的通信已经基本正确。清空【0x3A】寄存器的bit4,让OV9650输出实际的U、V值。1 _5 z3 c0 d* g: Z$ ^% a- e. U
后面的工作就是如何控制后端芯片(Cx832)Marvin功能块来实现图象的Preview/Capture/Resume等功能了。2 k* c+ M( [1 B9 [1 Q4 d! g
摄像头初始化时,没有将数据写入I2C,一般问题会出现在哪里?! V @0 B$ f8 V" a
SENSOR的各路电源是否接好,/ Z9 e* B7 t! W5 r5 M
CMCLK是否正确( M! a) b! [" P- q( d* c1 p
RESET sensor
7 y6 l& R* G- e& ~3 I) Q, UI2C总线上拉电阻是否匹配正确, q- M* I, w- N
访问sensor时使用的 device ID是否正确,
7 f8 Z* F+ D# w% p# s sI2C的时钟CLK速率是否太高,
; X/ w1 J; R4 L; B( n0 q两次I2C连续读写之间是否有spec规定的delay时间. L- a( I. I* ?+ H6 n: f& ]6 ^
CAMERA POWER UP 时序是否符合 SPEC。
# P6 t8 m Y1 K: o& q+ @7 lcamera的工作过程(从进入相机到拍下照片为止)
7 j7 B. j. `1 T: e一般先给电源 ,然后给 MCLK SENSOR的 时钟 然后复位 PWDN改变极性使SENSOR 进入工作状态,让后再过几百ms 进行 IIC 操作, 然后就进入 PREVIEW 模式了,拍照的话 是 截取完整的一帧信号而已,有时会关闭SENSOR 的AWB AE功能。
9 D6 S* m: R8 d9 b
9 Y' j1 M9 S7 m- I4 F D! u1 R; r! L8 \, ?) J
|
|