|
0 P0 U6 ? z$ Z: E/ v7 ` 基本上调试camera都是找得平台得技术支持。呵呵,代码合进去应该就没问题了。如果有问题,主要调试一下几个方面:
2 B0 _' k9 x6 }. V- z4 b1,提供给CMAERA得MCLK是否太快或者不正常- W: O# b, d' W. u' U# m) I( s
2,camera输出得PCLK是否正常,因改是有MCLK时候,就有PCLK输出。4 v: L. Q' Z! [& ]* @4 u
3,查V、H信号,看是否和程序设计一致,如果一致,说明通信正常。
; A& p, W# w+ f: f4,量量数据线有无波形,等等
7 v; |4 }/ A A1 c/ `5 z
- L/ M& x0 d: J, K3 L+ @; p至于发挥sensor得性能要找技术支持了。 ; O$ l6 S8 w: Q9 S9 s2 n
供电,检查时钟,送初始化代码,查看输出信号,是否显示正常 / y. V7 V" {3 H7 ^' U0 ]
下面是我在调试OV9650的一些总结:: x {/ t0 ?- A" m
+ p3 V( `0 k- E5 `/ D! X2 R1 j
步骤一:读取OV9650的ProducaitonID寄存器【0x0A】。
$ L& l/ m+ ?0 l& r$ W T如果读回来的值为预期的0x96,则表明后端芯片跟OV9650能够IIC通信上。函数如下:( G: t# a1 H0 g) Y! u
RESULT IsiCheckSensorIss( void ), N1 ~# j5 m7 S2 V, i5 F
{
4 J9 S* C2 V! Z$ H( j, ?, k UINT8 pucValue;
" Q9 ~6 o0 ~! d3 b& W* |& \3 n 4 _" z/ p. j$ R! X" c
IsiReadRegister(OV9650_BASEADR,OV9650_PID , &pucValue);4 n* ~7 N+ V# e9 C/ S2 b$ f
if(pucValue ==0x96)//pid value of OV9650
/ x5 ^: K8 X6 u U return RET_SUCCESS;& B: F R, U- Y2 Y+ O
else1 Q7 b! o8 G5 D$ G4 c# H& h
return RET_FAILURE;
H( x! ^8 E G) F+ h }
+ G w7 C2 N5 t5 {
- r: s9 e; N+ B2 H+ I" K2 M步骤二:按OmniVision公司所提供的参数对OV9650进行设置,并进行回读检验。
- G2 J+ t: o' E' dOmniVision公司会提供每种图象尺寸下的OV9650配置参数。通过IIC口把这次参数写到相应的寄存器去。在调试时最好加段代码进行回读检验,以保证我们对OV9650的设置是正确的。在调试完成后,可去除这段代码。! W& ]! Z& S4 O" m. Z
8 e. C) c2 s) H
步骤三:用示波器对OV9650的输出管脚PClk,HSync,VSync进行测量。" k, u# ^8 I+ k* i" r( _8 Q% K
如果能测到PClk,HSync和VSync信号,并且这些信号是和我们寄存器配置是相吻合的,则表明OV9650已经开始正确工作了。4 `, M5 R( W; M2 o7 }
3 k) H; L1 h3 k9 ?4 C/ W3 p, h4 M
步骤四:配置OV9650为U、V固定值输出,看能否在后端芯片正确接受到固定值的U、V输入。9 g7 S; h8 @: a# \3 R+ w
置 位【0x3A】寄存器的bit4,同时对【0x67】【0x68】寄存器进行设置,这样OV9650就被配置成固定U、V输出了。为验证全部8跟数据线, 建议设置【0x67】为0x55,【0x68】为0xAA。如果能在后端芯片正确接收到0x55和0xAA,则表明0v9650和后端芯片数据通路完好, 对控制线的极性理解一致。! D# t1 H; O, w) s4 ]
7 T) Y" N5 }5 Y: p9 g& C: C% T4 S 至此,OV9650跟后端芯片的通信已经基本正确。清空【0x3A】寄存器的bit4,让OV9650输出实际的U、V值。% k. e7 {4 j# d9 F5 a: y
后面的工作就是如何控制后端芯片(Cx832)Marvin功能块来实现图象的Preview/Capture/Resume等功能了。; l$ M( V% U7 Q. `. g
摄像头初始化时,没有将数据写入I2C,一般问题会出现在哪里?2 ?6 T. [2 M; |( I# h
SENSOR的各路电源是否接好,9 J; Y+ S4 ~. \# D2 m0 M# l5 }; Z
CMCLK是否正确
! ]: q# Z# ?/ A4 a- YRESET sensor6 q' j' f) O( A" D2 t$ O
I2C总线上拉电阻是否匹配正确,* @: |4 l. r2 J" m6 _6 l- j( `* s! j$ T
访问sensor时使用的 device ID是否正确,
" W2 g: u% L% \! w# kI2C的时钟CLK速率是否太高,5 L5 t% N& M- ]! {- B2 T
两次I2C连续读写之间是否有spec规定的delay时间& _5 O0 I! |$ X* S4 Q
CAMERA POWER UP 时序是否符合 SPEC。, e0 h& ]0 x2 z' k! \
camera的工作过程(从进入相机到拍下照片为止)
, O! K( ~; K# {1 b: U/ C一般先给电源 ,然后给 MCLK SENSOR的 时钟 然后复位 PWDN改变极性使SENSOR 进入工作状态,让后再过几百ms 进行 IIC 操作, 然后就进入 PREVIEW 模式了,拍照的话 是 截取完整的一帧信号而已,有时会关闭SENSOR 的AWB AE功能。
7 N8 \4 [$ c2 u# e0 k7 X
/ v7 W/ w5 s1 M5 r3 E+ }# j6 z8 c: e8 _ I* ^
|
|