Debug
对于使用MIPI出现的问题,如果Tearing,屏幕错位等,总结了如下方法:
1. 当Tearing发生时,测量TE信号,是否和panel刷新率一致;测量TE和DATA PIN相位是否固定,以确定CPU是否配置好了。
2. 确保lcd的vertical front/back porch 以及 pulse width都是否符合要求了。不正常的值会导致mdp同步工作会不正常。
3. 测量clock是否符合设置要求。测量data信号是否正常。
4. 一般每个模块都有寄存器状态可以来读取以方便开发人员调试,lcd也不例外,举例如TE正常工作的时候,有个叫MDP_PRIM_INT_CNT_VAL 的寄存器是用于技术的,来一个TE signal就加一,如果不加那就知道TE同步不正常了。当然,对于其他的registers,如果有需要的话我们可以全部dump出来查找我们需要的信息。
花屏举例
有遇到个别手机开机会一直花屏的状况,不过将FPC重新扣一下就好了。
从现象上我们只能怀疑是接触不良,下面利用MIPI的原理来分析这个问题。
用到的知识:
a) 当发送控制命令的时候,默认都用的模式是LPDT,也就是说只用data0, clock和data 1 pin都没有用到。
b) 当CPU从panel接收返回的信息时,用的也只有data0 pin。
c) 在HS mode的时候发送显示数据,那么data 0, data 1, clock将都会被用到。
d) 使用BTA时,CPU将总线交给panel,panel driver IC会返回用户所需要的数据。
e) 另外一点,花屏表示系统已经初始化完成,而显示数据发送失败了,当然发送失败可能是CPU没发送,或者是PANEL没接收成功,都有可能。
通过以上d)原理得知,花屏手机表示data0连接正常了.那么又如何确定clock或者data1连接不成功,而不是其他原因导致的花屏呢。
思路如下:
- 发送command数据也用HS mode来发送,这里我们以发送读取panel driver IC的vendor ID号为command, 所以在HS mode下,command会以clock作同步,在data0和data1上同时发送。
- 触发BTA事件,这样,如果发送command失败,panel 会返回error report供我们读取。
- 读取vendor ID, 看是否和文档上规定的值一样。如果不一样,那么就证明发送command失败了。当然,根据b)原理,排除了读取失败的可能。
- 现在已经确定clock或 data1 pin有问题了。那么如何再进一步确认呢? Step 2不是发送了个BTA吗,如果发送数据失败,会返回error report。对于clock和data连接不同,返回的error report也不一样。接着再读取Qualcomm自带的MIPI寄存器就可知是哪个pin出问题了!

本文档分享了MIPI屏调试的经验,包括如何处理Tearing和花屏问题。针对Tearing,提出了检查TE信号、垂直前/后porch、clock和data信号的建议。对于花屏,通过分析MIPI协议原理,提出利用HS模式发送命令和BTA事件来判断clock或data1连接问题,并通过读取错误报告和MIPI寄存器确定具体故障点。
1万+

被折叠的 条评论
为什么被折叠?



