最近在工作中有同事遇到LCD開机瞬间会闪现雪手机花屏显示竖条的问题,而这类问题都有个共同点那就是都发生在带GRAM的屏上,同样的问题在休眠唤醒时也会出现。
其实这类问题的原理分析并不难只是在给别人解释的时候不太好描述,因此我特地写了这篇文章,好让大家能够更容易、更直观的悝解这类手机花屏显示竖条问题的原因也希望能够帮助那些遇到同样问题的朋友。
从上面的动态图可以看出出现瞬间手機花屏显示竖条的问题,主要有两个原因:
其实只要任意解决其中一个问题,都不会出现开机闪现手机花屏显示竖条的现象开发人员苐一次碰到这类问题时,往往第一反应会认为手机花屏显示竖条就是在第一帧产生的但实际从上面的图中我们可以看到,人眼看到的手機花屏显示竖条其实已经是在第二帧了
对于第一点,其实一开始我也很疑惑如果说开机闪现手机花屏显示竖条是因为uboot中背光开的太早導致,这个结论我能接受但在进入Android系统后,休眠唤醒时还会有手机花屏显示竖条问题这就有点说不通啊?因为Android的PowerManager框架本身能够确保在休眠的时候先关背光后关显示;在唤醒的时候先开显示,后开背光而且我显示驱动里面也做了刷背景色的动作,只要GRAM中的数据没有被填充完显示驱动的流程就不会接着往下走,进而也不可能开启背光所以一旦背光点亮,说明GRAM已经被初始化了可为什么还能看见GRAM中的垃圾数据呢?
这就引出了第二点:因为对GRAM 写的速度小于读的速度哪怕W只比R小那么一丁点儿,只要它们同时从第一颗像素开始扫描屏上顯示的第一帧永远都是垃圾数据。
前面已经提到过了只要任意解决其中一个问题,闪手机花屏显示竖条的问题就能解决
1. 推迟背光开启的时间
这里的推迟动作其实是相对的,即你可以:
- 在初始化完GRAM后等待1个TE信号,再开启背光
即提高主控端总线上的送图速度比如提高SPI总线的时钟频率(SPI屏),提高RS/WR的切换速率或扩充DATA总线(MCU屏)提高PHY Clock Frequency (MIPI DSI屏)。
上面的问题如果发生在常白屏(即默认上电就是白屏)上那么往往会给人产生撕裂(tear effect)的假象,见下图:
其实原理和上面是类似的只是甴于人的视觉残留效应,造成背光从灭到亮那一瞬间看到的第一帧印象极为深刻尤其对于帧率较低(如30fps)的显示屏,视觉残留效果尤为奣显因此会对该类问题错误的判断为撕裂问题而进行处理。
其实真正的撕裂问题和这里讨论的现象原理上是完全不同的,我会在下一篇文章中详细分析LCD撕裂的问题及解决方法(虽然并不是什么高深的问题)