专栏首页linux驱动个人学习LCD显示异常分析——开机闪现花屏【转】

LCD显示异常分析——开机闪现花屏【转】

转自LCD显示异常分析——开机闪现花屏

最近在工作中,有同事遇到LCD开机瞬间会闪现雪花屏的问题,而这类问题都有个共同点,那就是都发生在带GRAM的屏上,同样的问题,在休眠唤醒时也会出现。

其实这类问题的原理分析并不难,只是在给别人解释的时候不太好描述,因此,我特地写了这篇文章,好让大家能够更容易、更直观的理解这类花屏问题的原因,也希望能够帮助那些遇到同样问题的朋友。

环境

  • 软件:Android
  • 硬件:带GRAM的LCD(如SPI屏,DSI CMD屏)

现象

分析

从上面的动态图可以看出,出现瞬间花屏的问题,主要有两个原因:

  1. 背光开启的时间过早
  2. 对GRAM的写速度(W) < 对GRAM的读速度(R)

其实,只要任意解决其中一个问题,都不会出现开机闪现花屏的现象。开发人员第一次碰到这类问题时,往往第一反应会认为花屏就是在第一帧产生的,但实际从上面的图中我们可以看到,人眼看到的花屏其实已经是在第二帧了。

对于第一点,其实一开始我也很疑惑,如果说开机闪现花屏是因为uboot中背光开的太早导致,这个结论我能接受。但在进入Android系统后,休眠唤醒时还会有花屏问题,这就有点说不通啊?因为Android的PowerManager框架本身能够确保在休眠的时候先关背光,后关显示;在唤醒的时候先开显示,后开背光,而且我显示驱动里面也做了刷背景色的动作,只要GRAM中的数据没有被填充完,显示驱动的流程就不会接着往下走,进而也不可能开启背光。所以一旦背光点亮,说明GRAM已经被初始化了,可为什么还能看见GRAM中的垃圾数据呢?

这就引出了第二点:因为对GRAM 写的速度小于读的速度,哪怕W只比R小那么一丁点儿,只要它们同时从第一颗像素开始扫描,屏上显示的第一帧永远都是垃圾数据。

解决方法

前面已经提到过了,只要任意解决其中一个问题,闪花屏的问题就能解决。

1. 推迟背光开启的时间

这里的推迟动作其实是相对的,即你可以:

  1. 在初始化完GRAM后,等待1个TE信号,再开启背光
  2. 或者在给屏幕发送Sleep Out (0x11)、Display On (0x29)指令前,先通过Write Memory Start (0x2C)指令将GRAM初始化好

亲测第一种方法简单粗暴;

2. 提高GRAM的写速度

即提高主控端总线上的送图速度,比如提高SPI总线的时钟频率(SPI屏),提高RS/WR的切换速率或扩充DATA总线(MCU屏),提高PHY Clock Frequency (MIPI DSI屏)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 编译选项含义

    编译选项: 现在我们Makefile中的编译选项有: ? -g :可执行程序包含调试信息;(给gdb调试使用) -O2:该优化选项会牺牲部分编译速度,除了执行-...

    233333
  • 哈夫曼编码的理解(Huffman Coding)

    哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全...

    233333
  • Android Healthd电池服务分析

    healthd是安卓4.4之后提出来的,监听来自kernel的电池事件,并向上传递电池数据给framework层的BatteryService。BatteryS...

    233333
  • WordPress代码实现自动拒绝包含特定关键词的垃圾评论

    经常受到类似的垃圾评论,有点懒得动手删了,于是百度出自动拒绝特定关键字的评论的方法并记于此处。

    WindCoder
  • java 容器 --- Collections

    yuxiaofei93
  • 【Leetcode】107. 二叉树的层次遍历 II

    给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

    Leetcode名企之路
  • 扩展Ribbon支持Nacos权重的三种方式

    •把性能差的机器权重设低,性能好的机器权重设高,让请求优先打到性能高的机器上去;•某个实例出现异常时,把权重设低,排查问题,问题排查完再把权重恢复;•想要下线某...

    用户1516716
  • 企业商机转化效率太低?AI来破题!

      许多有大量主动联络需求的科技金融、保险、在线教育等行业受制于传统联络中心的弊端,企业的商机转化效率低下等诸多问题开始逐一显现。如何提升商机转化效率也成为了科...

    互联时代
  • 速读原著-TCP/IP(sock程序)

    在本书中一直使用一个称为 s o c k的小测试程序,用来生成 T C P和U D P数据。它既可以用作一个客户进程,也可以用作一个服务器进程。有这样一个可以从...

    cwl_java
  • 大数据之数据采集

    浏览器页面采集: 主要是收集页面的 浏览日志(PV/UV等) 和 交互操作日志(操作事件)。

    奎哥

扫码关注云+社区

领取腾讯云代金券