mipi sensor 调试流程

之前我的一些博客文章介绍到mipi csi部分信息,也看到收藏、评论、私信比较多的是mipi信号相关的文章,可能大家在移植mipi sensor时遇到比较多的问题吧,今天简单介绍一下,cmos sensor的调试流程(以mipi sensor为主)。

记得刚入行时,实习过程在高通平台点亮sensor,当时什么也不懂,只知道根据文档配置,还有师傅带着,同时当时驱动已经写好了的,就配置一下dts即可,折腾三五天,点亮了,那个惊喜啊。现在回头想想,什么都不懂,有什么好惊喜的呢。后来接触的比较多的都是并口sensor,在真正接触mipi sensor之前,都是听说很难,但是接触下来,慢慢的发现也就是那么回事,问题还是会有,但只要折腾,有什么搞不定的呢,如果有,那就再继续折腾,相信你自己,你也可以的。

移植一款新的sensor,先确认主板和模组硬件接口是否是一致的,根据具体分辨率、帧率等需求,从模组厂获取响应的寄存器配置之后,根据响应的平台要求进行sensor驱动和dts的配置。在完成相应的配置之后,烧录固件进行相应的测试,移植过程可能遇到的问题,下面分两点进行简单介绍。
I2C通信失败

一般的平台在开机过程,camera驱动框架都会对sensor进行探测,如果确实存在相应的硬件,将会产生 /dev/video 节点;如果探测异常,则没有相应的节点。
探测过程一般是通过I2C驱动sensor的chipid,在这个过程遇到最多的就是I2C通信失败。遇到I2C通信失败,可按照以下步骤进行测试确认:

    先确认sensor的I2C地址是否配置正确,由于I2C通信地址是7bit的,而不同的平台关于这个配置可能存在部分差异。有些是配置7bit的;有些则是配置8bit的,最后1bit为读写标志位;
    确认dts中,关于模组的电源、reset、pwdn、mclk等是否配置正确,ldo的连接、电压、引脚等(结合原理图确认);
    确认驱动中,是否在上电过程中,都有按照sensor datasheet的上电流程配置电源和将reset、pwdn拉到相应的电平状态;
    到了这一步,i2c通信还是失败,那么将sensor的掉电函数屏蔽掉,使sensor一直保持上电状态,然后使用万用表测量供电电压是否正确,reset、pwdn电平是否正常,mclk是否有输出,I2C信号是否有上拉;
    如果供电、reset、pwdn、mclk、i2c不对,那么确认驱动和dts的配置,特别需要注意mclk的幅值,mclk的幅值与IOVDD应该一致,如果发现mclk的幅值很小,检查硬件或者软件的关于mclk引脚的配置;
    在测试过程中,如果怀疑硬件电路或者模组的问题,可先拆下模组,单独测试主板信号,确认信号正常后再接上模组测量(有些情况会发现接上模组之后短路,出现这样的情况,可能是模组问题,也可能是主板问题,具体问题具体分析);
    如果测量硬件信号发现,模组供电电压正确,reset、pwdn引脚电平状态满足datasheet要求,mclk波形正确(注意幅值),I2C有正常上拉,以上条件都已满足,但I2C通信还是失败,更新板子、模组进行测试吧,本来这步也可以放到第一步进行的,但是我习惯放到最后,先怀疑自己,再考虑其他;
    任一信号都已满足条件,但I2C通信还是失败,再次确认sensor i2c地址是否正确(可使用i2ctools的i2cdetect命令进行设备探测);

i2c通信,更多的都是和硬件和配置相关,逐步测量,排查,总可以正常通信的,实在不行,拉上硬件一起排除。
MIPI没有接收到数据

当i2c可以正常通信后,意味着soc可以配置sensor,使其输出图像数据。这个过程也会经常性的遇到接收不到图像数据的情况,下面就mipi接收不到图像数据进行分析:

    先测量确认sensor的mipi引脚是否有数据输出,如果有,则正常,如果没有,则确认是否存在虚焊、寄存器配置不正确等情况。和模组厂确认提供的寄存器配置是否正确的,是否可以正常出图的(这点我也是被坑过的,确认自己测量没有问题之后,要敢猜疑);
    sensor驱动中的寄存器配置,确认一下在软复位之后,是否有一定的延时。因为sensor在复位之后,需要一定时间的延时才可以继续配置寄存器,否则可能存在i2c通信失败或者写寄存器没有写成功等问题。
    确认sensor寄存器配置输出的mipi lane数与硬件连接的是否一致,不一致也会存在接收不到数据的情况;
    示波器测量mipi信号,主要是看波形是否正常,符合mipi协议的要求;
    确认soc软件是否正确,是否被修改过代码;
    这部分是由于图像数据在soc mipi接收过程是需要检测到各个lane的LP11-LP10-LP00的一个状态切换后才会切换到高速模式准备接收。如果soc在配置过程,先使能sensor输出,再配置soc mipi,就可能会存在soc mipi控制器一直在等待mipi信号切换,而sensor早已开始输出了。
    这个也是我在csi mipi信号解析说到的将sensor mipi clk lane配置为非连续时钟模式的原因,避免soc错过一开始的LP状态切换后一直接收不到图像数据。配置为非连续时钟模式之后,每帧图像数据,mipi clk lane都会有一个完整的LP状态切换。
    按照csi mipi信号解析中的mipi csi调试介绍,修改sensor的mipi寄存器,从而确认是否可以接收图像;
    先接收RAW数据,排除csi pipeline中其他模块的干扰;
    确认软件配置无效之后,确认板子有没有做阻抗匹配(试过新板子没有接收到数据,重新打板,明确阻抗匹配等,新板子正常接收)、是否存在虚焊,mipi部分引脚短路等情况(手工焊接的经常遇到);

mipi 接收可排除的不多,总结起来就是确认硬件是否存在虚焊、短路等情况,软件确认寄存器配置正确且写入,调节mipi时序,最后总归可以的。

调试过程总是麻烦的,毕竟sensor移植是一个软件结合的过程,可能硬件有问题,也可能软件配置不对,逐步排查,最后都是可以解决的,加油啊。
 

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值