移动平台驱动调试流程(二)--外设调试阶段

来源:互联网 发布:信息技术考试操作题vb 编辑:程序博客网 时间:2024/04/29 18:41
外设最主要的就是LCDTPCamera,下面就分别说下需要注意的地方。

         LCD调试:

        虽然我们多数驱动人员最开始都是从调试LCD开始入手的,但准确来说,LCD算是外设当中最难调试的东西了,之所以这么说,是因为LCD涉及到的接口类型和各种显示问题最多了。其中有CPU接口、RGBMipi之类的接口。那么,遇到这些接口怎么办?

         其实我们现在的调试LCD,算是很表层的,没有深入的去学习接口的类型,各种控制信号的作用,换一个接口很可能就不知道怎么进行下去了。在这里先只说流程和所遇问题,对于接口的学习,可以多查查资料。

         LCD调试难度高的另外一点就是所遇问题的多种多样,以下整理了一些常见问题:

1、  开机花屏、唤醒花屏——在初始化末尾和唤醒当中加入刷黑屏的动作;

2、  屏幕显示反色——LCD的颜色设置是RGB还是GBT、默认选择白屏还是黑屏;

3、  色彩显示错乱、花屏——LCD的数据线的位数选择是否与原理图一致;

4、  屏幕左右、上下颠倒——修改drive output control ,gs,ss

5、  图像显示不全,起始点不对——对一下分辨率设置和数据刷新区域是否配对;

6、  读不到ID——首先确认此ICID,然后校对reset的极性,延长resetdelay时间;

7、  能读到ID,显示白屏——可能是静电干扰,可以换屏或者不要将屏放到主板上再看看,此外如果是backend icbypass也要检查看看;

8、  背光闪烁——量PWM信号频率,看与屏是否有干扰,检查背光芯片的供电能力是否满足要求;

9、  某些画面下,LCD显示星星点点——时序设置是否有问题,会不会太快;

 

TP调试:

TP的调试相对原理比较简单,核心就是I2C驱动。如果TP无法使用,第一怀疑方向就是I2C是否通,最好的检查方法就是打log了,从log中可以看出问题所在。如果出现I2C没有通,那就按照软硬件两方面去查:1、软件上I2C地址是否正确,是否和其他器件冲突;2、硬件上器件供电有没有问题,时序是否正确,I2C的上拉是否有问题。

软件方面查起来比较容易,查看datasheet、检查代码足以。I2C地址通常可以从ICdatasheet中查到。由于I2C地址分为两种,7I2C地址和8I2C地址,我们8810平台上用的7I2C地址,所以如果地址大于0x80,那就大胆怀疑是地址的问题。此外有些TP用的是软件I2C地址(譬如我们常用的msg2133),遇到这种,我们要多留心——地址很有可能被模组厂修改过,遇到了问题要多与模组厂的技术人员沟通确认。对于I2C冲突的问题,基本上很少遇到,检查起来也不难,只需要查看下每个器件的I2C地址,看看有没有相同的就可以了。

硬件方面的排查按照顺序应该从上电时序-à供电à上拉能力一步一步进行。上电时序——reset的延时是否足够,reset pinINT pin高低电平是否按照IC的要求去配。供电——供电电压、IO电压是否按照需求配置的,会不会存在供电不足的问题。上拉能力——上拉电阻的大小是否合适,这个通常需要与硬件、ICFAE沟通。

 

Camera调试:

        对于我们驱动开发而言,camera的调试说容易也很容易,只要点亮就可以了,说难也非常难,要注意清晰度、帧率、对焦、闪光灯等等一系列的问题。但是想让项目不出问题,让自己的能力得到提升,那就别无选择,只能是把模块吃透才行。调试过程中遇到的问题多分为以下几种:1camera点不亮,I2C不通;2I2C已经通了,但无法预览;3camera显示异常,有绿线。

         对于第一种情况,相比TPI2C不通,camera要复杂一些,除却TP I2C不通时要注意的问题外,还有电源。Camera通常接了三个电源,AVDDDVDDIOVDD,三个电源的电压值不对,或者时序不对,都会导致问题的出现。所以遇到这种问题,别无选择,比对模组的SPEC,老老实实用示波器量信号。

         I2C已经通了,无法预览——这种情况说明sensor本身已经起来了,加电都是对的,那么怀疑的方向要从供电方面转向时钟、同步信号。Camera无论是拍照还是预览,都需要有时钟和同步信号去控制,如果出了问题,还是老办法,用示波器量信号。另外可能要注意的一点是:时钟的极性需要注意与寄存器相匹配(对于不同的sensor,可以找FAE咨询)。

         可以预览,但显示异常——到了这一步,问题通常出在干扰,驱动能力上面。排除是否是干扰,可以和硬件同事一起,通过屏蔽、接地等方法来确认。另一方面,驱动能力都有寄存器来设置,可以自己尝试修改寄存器来解决。同样的,是否是干扰或者驱动能力不足,也可以用示波器测量信号的质量来判断。