摄像头调试步骤
1.确认AVDD、DVDD和IOVDD电压是否正确,不同的Sensor要求会有所不同。
2.确认MCLK是否有信号,频率是否正确。
3.确认RST拉高拉低的时序是否满足要求。
4.I2C通信,读取Sensor ID,确认是否正确;通过I2C配置Sensor寄存器,注意I2C要满足时序要求,尤其是stop信号;还要确认I2C电平满足Sensor要求。
5.对于并行接口摄像头,注意PCLK、HSYNC和VSYNC极性是否正确。
6.对于使用MIPI协议的串行接口摄像头,注意是否满足MIPI时序要求,尤其是
T
H
S
−
S
E
T
T
E
L
T_{HS-SETTEL}
THS−SETTEL。某些MIPI摄像头的发送不同数据包的时候
T
H
S
−
Z
E
R
O
T_{HS-ZERO}
THS−ZERO是不同的,有时候会特别长,如果误将接收端的延迟OR等待时间也配得太长了的话,当
T
H
S
−
Z
E
R
O
T_{HS-ZERO}
THS−ZERO短的时候就可能不符合
T
H
S
−
S
E
T
T
E
L
T_{HS-SETTEL}
THS−SETTEL的时序要求了。
I2C通信
1.注意有无时钟信号,假如芯片没有时钟输出,检查引脚输出的模式,比如AFIO是否配置为XCLK或者CSI MCLK。
2.I2C的时间间隔是否满足CMOS Sensor的要求,尤其是stop信号。国产CMOS的I2C很可能比较挑剔,一定要保证有足够的裕量。
3.I2C读写操作有异常时要加打印信息,不要偷懒,否则可能配置摄像头没有成功都不知道。
CMOS Sensor
1.输入时钟的频率与寄存器配置是否匹配;
2.从PCLK、HSYNC和VSYNC观察摄像头是否工作,接收端这3个信号要配置成相应的边沿或电平去读取数据,尤其是PCLK是上升沿还是下降沿,假如图像花屏很可能就是没有配置正确。
接收端
1.中断的配置,异常中断要加处理的函数,不要偷懒(不要只有接收到完整的一帧后才进入中断处理),否则都不知道卡死在了哪里。
2.中断程序中不要忘记在清中断,否则频繁进入中断会导致程序运行不正常。
3.假如Sensor能够用I2C通信成功,但是接收到的数据总是有错误,或者进入中断错误,需要检查信号,每一根信号线(eg.并口的D0-D7,CSI的D0P、D0N、CLKP、CLKN and so on)都检查,以防止某根信号线断掉或者接到错误的地方(如接地了)导致问题。