|
|
+ b+ Z2 m. z" F& d# c8 ~0 C) V 基本上调试camera都是找得平台得技术支持。呵呵,代码合进去应该就没问题了。如果有问题,主要调试一下几个方面: y* D/ [# N# m& T
1,提供给CMAERA得MCLK是否太快或者不正常+ R+ A/ `8 L4 N- W# H% v: M Z
2,camera输出得PCLK是否正常,因改是有MCLK时候,就有PCLK输出。
7 N" F$ P7 ~$ K7 _' k* C3,查V、H信号,看是否和程序设计一致,如果一致,说明通信正常。 N3 F) K! Z! g S
4,量量数据线有无波形,等等. z" M5 f# c8 X) `
6 n1 }5 m+ J3 F, x: P
至于发挥sensor得性能要找技术支持了。
3 J! v+ ^2 L: F9 L( E/ E供电,检查时钟,送初始化代码,查看输出信号,是否显示正常
. ]- _+ W! C- Y0 `9 W下面是我在调试OV9650的一些总结:
6 J# I- n" I# F9 z5 C. j" O, i
6 R+ p7 \) y, @7 f: @步骤一:读取OV9650的ProducaitonID寄存器【0x0A】。7 i! e) J/ w3 W! w% ]1 Q; X. s
如果读回来的值为预期的0x96,则表明后端芯片跟OV9650能够IIC通信上。函数如下:
. @2 w% k% g" h9 M RESULT IsiCheckSensorIss( void )1 h, Y+ K. u' F6 `+ v; [7 m
{
8 k# }- q) T" v8 I, t5 Z UINT8 pucValue;
+ W: b/ Z; D0 ]* f( S' y8 y
5 }9 T& p9 C; [) M9 ]7 D3 E IsiReadRegister(OV9650_BASEADR,OV9650_PID , &pucValue);
! ]9 U; k7 F; u, r- L4 G4 V if(pucValue ==0x96)//pid value of OV9650
: D3 C0 I( J8 x' l$ W return RET_SUCCESS;& G' q" u( H: I: A! U- A3 N
else: K3 b u9 i: F6 R0 b9 [$ d
return RET_FAILURE;, i d4 t2 U) C9 T; d
} . [7 @# `% A! L% B- x& |" s1 _+ D9 Y
$ l) G N+ W1 h6 V8 Z
步骤二:按OmniVision公司所提供的参数对OV9650进行设置,并进行回读检验。4 I D+ }" k3 ~$ P5 C
OmniVision公司会提供每种图象尺寸下的OV9650配置参数。通过IIC口把这次参数写到相应的寄存器去。在调试时最好加段代码进行回读检验,以保证我们对OV9650的设置是正确的。在调试完成后,可去除这段代码。$ y$ |4 Q: A4 Z9 a
" K" X2 \; ^4 {/ \步骤三:用示波器对OV9650的输出管脚PClk,HSync,VSync进行测量。
; v# \' i0 {% v& B& F9 v* E 如果能测到PClk,HSync和VSync信号,并且这些信号是和我们寄存器配置是相吻合的,则表明OV9650已经开始正确工作了。
+ Y) z. b( c; i6 a: W
/ z& W K- R1 |& _步骤四:配置OV9650为U、V固定值输出,看能否在后端芯片正确接受到固定值的U、V输入。* n; T6 r! c4 F+ p1 e9 J0 I9 D5 O
置 位【0x3A】寄存器的bit4,同时对【0x67】【0x68】寄存器进行设置,这样OV9650就被配置成固定U、V输出了。为验证全部8跟数据线, 建议设置【0x67】为0x55,【0x68】为0xAA。如果能在后端芯片正确接收到0x55和0xAA,则表明0v9650和后端芯片数据通路完好, 对控制线的极性理解一致。' z. K6 w) ~4 { H: w
# k! e/ q* p6 A9 q" \. g ]
至此,OV9650跟后端芯片的通信已经基本正确。清空【0x3A】寄存器的bit4,让OV9650输出实际的U、V值。
+ P- F3 _: Y( V* d4 X% |后面的工作就是如何控制后端芯片(Cx832)Marvin功能块来实现图象的Preview/Capture/Resume等功能了。6 D8 j, l' {7 g% v
摄像头初始化时,没有将数据写入I2C,一般问题会出现在哪里?
) t S- i$ _; m. g+ o! V' kSENSOR的各路电源是否接好,
) j p& L& ~% g/ b( sCMCLK是否正确
( O3 \: n/ e6 [( P; pRESET sensor
! {" ^) F4 I& Y' N1 @I2C总线上拉电阻是否匹配正确,
2 b3 ?; x6 C. Z3 j) b! I访问sensor时使用的 device ID是否正确,; }5 F9 u8 B U' C
I2C的时钟CLK速率是否太高,# Y* @4 f3 u5 ?3 u. v( ^" J
两次I2C连续读写之间是否有spec规定的delay时间% B, H" Q/ I* j/ N, |
CAMERA POWER UP 时序是否符合 SPEC。
: ^+ S% b! ?8 M& Y4 b5 Gcamera的工作过程(从进入相机到拍下照片为止) / A9 Z+ T, s; f% M& q
一般先给电源 ,然后给 MCLK SENSOR的 时钟 然后复位 PWDN改变极性使SENSOR 进入工作状态,让后再过几百ms 进行 IIC 操作, 然后就进入 PREVIEW 模式了,拍照的话 是 截取完整的一帧信号而已,有时会关闭SENSOR 的AWB AE功能。
# n- T: k( N# E% R6 s5 f, q' L
4 N: s" G2 d' k+ ?/ k0 C+ Y+ \" U4 P: d3 j
|
|