【Camera专题】概率性读不到id~二

系列文章
【Camera专题】I2C不通或地址读错总结
【Camera专题】概率性读不到id~二
上一篇文章总结了很多读不到id的经验,本文在讲一些比较细的点子,可能你从未考虑到的!

1.顺序影响
平台:qcom-429
上篇文章也讲过这个顺序的影响,是前后id的读取顺序和otp的加载顺序不一致,导致概率性读不到id的。
但是最近调试429新平台时,高通在点亮gc8034时,也遇到概率性读不到id的情况。后来和他们沟通,是两个sensor上电相互影响了。

//ov8856
   <CameraModuleConfig>
···
    <SensorName>ov8856</SensorName>
···
  </CameraModuleConfig>
//gc8034
   <CameraModuleConfig>
···
    <SensorName>gc8034</SensorName>
···
  </CameraModuleConfig>

按照高通的意思是,ov8856先上电,会影响到gc8034的上电,导致gc8034读不到id!
换一下顺序就可以了。

2.OTP上电影响
平台:8909
这个平台配OTP上电时序是在kernel的dtsi文件里配置的,
高通的文档配置如下:
【Camera专题】概率性读不到id~二_第1张图片

qcom,cam-power-seq-cfg-val代表了上电时序,1表示拉高或者供电!
这里的上电时序:
dvdd拉高->avdd拉高->io拉高->设置mclk为24M->reset脚拉高->standby脚拉高

但是这里并没有配置下电时序,如果你跟踪源码,你会发现,
下电时序就是把qcom,cam-power-seq-cfg-va倒过来执行一遍。
下电时序是:

standby脚拉高->reset脚拉高->设置mclk为24M->io拉高->avdd拉高->dvdd拉高
这就有问题了,下电时相应的脚没有被拉低!

怎么优化呢?

以reset为例子吧,我们只讲一个脚,其他的类似!

eeprom0: qcom,eeprom@5a {
        ···
        qcom,cam-power-seq-type =
        "sensor_vreg","sensor_vreg","sensor_gpio", "sensor_gpio","sensor_gpio","sensor_clk";
        qcom,cam-power-seq-val =
        "cam_vdig",
        "cam_vio",
        "sensor_gpio_standby",
        "sensor_gpio_reset",
        "sensor_gpio_reset",
        "sensor_cam_mclk";
        qcom,cam-power-seq-cfg-val = <1 1 1 0 1 24000000>;
        qcom,cam-power-seq-delay = <10 10 10 10 10 5>;
        ···
};

我们这里关键的点在哪里呢?

“sensor_gpio_reset”,->0先拉低
“sensor_gpio_reset”,->1在拉高
因此,
qcom,cam-power-seq-cfg-val = <1 1 1 0 1 24000000>;
这个配置对应的上电时序:
dvdd拉高->io拉高->reset脚拉低->reset脚拉高->standby脚拉高->设置mclk为24M
下电的时候,是反过来执行的,
下电时序为:
设置mclk为24M-standby脚拉高->reset脚拉高->reset脚拉低->io拉高->dvdd拉高
最终,reset脚会被拉低,这样reset脚就没问题了!
因此,概率性读不到id问题也可能跟这个有关系!
因为我们前后摄供电都是用的同一路供电,挂在相同的i2c总线上。
前摄 OTP下电是时候,如果reset脚还是一直拉高着,i2c总线会觉得前摄还在工作,
这时候代码跑到后摄otp上电了,就可能会导致i2c地址读错或者read_id failed!

继续当一名咸鱼(* ̄︶ ̄)!

Stay Hungry,Stay Foolish!

你可能感兴趣的:(Camera专题)