[DESCRIPTION]
客户端反馈的问题中当数读不到Sensor ID和Preview Fail的问题最多,所以我们专门整理了一条FAQ来讲述如何一步一步的查这类问题(这是我们多年的经验总结出来的)。如果你有碰到类似的问题,如果你有认真阅读下面的资料,相信大部分的问题你可以在短时间内解决的同时伴随着Debug能力的提高,当然如果你们觉得哪一条写的不够清楚的地方,也请随时反馈给我们,我们将即时更新。
进入照相机(Camera)时出现"Camera module not ready" or "Failed to preview"一般是有以下两种情况:
Case1. I2C(SCCB) 通信失败,即Sensor ID没有读到,若很快就提示"Failed to preview",则一般属于这种情况。
Case2. I2C(SCCB) 通信是OK的,但是Sensor没有输出正确的Vsync/Hsync/PCLK等信号。若过几秒才提示"Failed to preview",则一般属于这种情况。
[KEYWORD]
Camera MMI
[SOLUTION]
Case1. I2C 通信错误,即Sensor ID没有读到。
一般出现这类问题请按照下面的步骤逐一进行检查:
a、先检查Power是否正确,即Sensor的三路电压AVDD(2.8V), DVDD(1.8V), DOVDD(2.8V)
遇到I2C通信问题的时候最先需要Check的是电压,先Check三路电压是否正确?以及Power On/Off Sequence是否满足Sensor Spec。
b、Reset & Power Down Pin的极性是否正确,量信号确认?
仔细的Check Sensor Datasheet以及HW Application Notes,如果你手边没有ICD工具,可以在Read Sensor ID的前面加一个While(1);然后量信号,因为有些工程师会在显示Failed to preview的这个界面来量信号,这个时候实际上已经调用了Power Off的API了,这些Pin的极性已经是Power Off的状态了。
c、I2C Pin (SDA, SCL)的GPIO Mode是否正确?
若使用SW I2C,则配置为Mode 0,若使用HW I2C,则请参考各平台的Datasheet来配置对应的Mode,或者将I2C Speed降低一点再试试看。
d、I2C 的上拉电阻(Pull up Resistor)是否有接,以及电压是否正确(这个电压跟Step5中的IO电压伏值应该一致)。
一般常用的上拉电阻为4.7K,也有使用1.5K, 2.2K, 10K的
e、BB & Sensor端IO电平是否一致?
MT6235, MT6276,MT6255, MT6236, MT6252, MT6250等平台支持1.8V & 2.8V的IO,那BB和Sensor的IO电平需要匹配置,即要么两边都是1.8V,要么两边都是2.8V
BB:VDD33_CAM的电压决定了BB端的IO电平。
Sensor: DOVDD的电压决定了Sensor端的IO电平。
NOTICS: MT6253只支持2.8V的IO。
f、MCLK是否有输出,以及频率是否正确?
为什么把MCLK的检查放在最后面,因为自从11A之后的版本,已经将MCLK的控制放到CAL层,一般客户不会修改到,所以99%的情况MCLK是可以正常输出的,如果发现没有量到MCLK,请先Check GPIO配置的Mode是否正确。
g、Reset/Power Down & SDA & SCL拉不高的情况
若有量信号的时候有发现Reset Power Down Pin,or SDA & SCL Pin拉不高的情况(即代码有写,也有调用到,但是确拉不高), 首先Check GPIO Mode是否正确。
若SW都正确的情况下,需要注意一下Power Domain [Note1]的问题。
Ex: MT6235的GPIO 15/16 的IO Power Supply就来源于VDD33_CAM。所以要操作这两个GPIO时,VDD33_CAM要有电。
h、检查HW
若还是有问题,则请检查一下硬件线路连接,比如之前有出现琮SCL & SDA接反的情况。
Case2. I2C 通信是OK的,但是Sensor没有输出正确的Vsync/Hsync/PCLK/Data1等信号。
a、用示波器量信号进行检查
请量这些信号HSYNC, VSYNC, PCLK, Data1(量Data的原因是有可能Control信号正常但是Gain or Shutter设置错误导致图像是黑的。)看是否是正常的,若你不知道正常的波形是怎样的,那么你可以找一下能正常Preview的板子,来量这些Pin对比信号。
VSYNC – 请不要超过30fps.
查看这些信号的时候请一并查看频率和振幅(IO Level),下面几个波形图也供你们参考:
b、若出现概率性的不能Preview,或者概率性花屏,等概率性的问题。
请先Check I2C是否Stable,请直接尝试读/写5000~10000次,看I2C是否每次都能成功。若I2C还是比较稳定的情况下,再Double Check Power On/Off Sequence(量信号出来检查)是否有满足Sensor的Spec。
c、Vsync & Hsync极性
若你是自己Porting新的Sensor,那么也请跟Sensor FAE Double Check Initial Setting是否正确,以及VSYNC/HSYNC 极性(Polarity)设置是否正确。若是使用MTK Release的Sensor Driver,则请跳过这一步。
Note1:
Power Domain: 从MT6235开始,以及后面的MT6238/39/68/52/55/76/50等这些平台,我们引入了Power Domain的概念。就是各个模块的Power可以单独去Control。
就拿Camera来讲,Camera Interface的这一组IO的Power Domain就隶属于VDD33_CAM。具体可以Check MT6235 的Datasheet,或附件的文档。VDD33_CAM这根Pin是Input pin, 一般是由PMU给电。而MT6235的GPIO 15/16 的IO Supply就来源于VDD33_CAM。所以要操作这两个GPIO时,VDD33_CAM要有电。