由于MTK平台 camera点亮涉及很多文件,很可能造成点亮失败!!!。I2C不通是点亮失败的重要之一,总结如下做相互学习,也做备忘之效
1、对照spec文档,检查上下电时序(AVDD、DVDD、DOVDD、RST、PowerDown)
2、对照上电,用示波器检查的信号(SDA/SCL)波形
3、检查当前的camera 模组挂载I2C bus。检查模组规格书中I2C芯片地址,和代码中kernel-4.14/drivers/misc/mediatek/dws/项目名.dws
在这文件中搜索i2c,查看对应camera
<device4>
<varName>CAMERA_MAIN</varName>
<channel>I2C_CHANNEL_2</channel>
<address>0x20</address>
</device4>
4、确认内核中驱动代码的读写函数 addr和data的数据长度,要与sensor I2C的接口一致
static kal_uint16 read_cmos_sensor(kal_uint32 addr)
{
kal_uint16 get_byte = 0;
char pu_send_cmd[2] = { (char)(addr >> 8), (char)(addr & 0xFF) };
iReadRegI2C(pu_send_cmd, 2, (u8 *) &get_byte, 1,
imgsensor.i2c_write_id);
return get_byte;
}
static void write_cmos_sensor_byte(kal_uint32 addr, kal_uint32 para)
{
char pu_send_cmd[3] = {
(char)(addr >> 8), (char)(addr & 0xFF), (char)(para & 0xFF) };
iWriteRegI2C(pu_send_cmd, 3, imgsensor.i2c_write_id);
}
5、检查cfg_settting_imgsensor.cpp中函数,getSensorMclkConnection,是否和HW上实际MCLK连接一致