概述

在上一篇《LCD显示异常分析——开机闪现花屏》中,我们一起分析了开机花屏的问题,在这一篇中,我将对LCD撕裂(tear effect)问题进行详细分析,以及给出这类问题的常用解决方法。

本文适用范围:

  • 对象:LCD驱动调试人员
  • 硬件:带GRAM的LCD (如SPI/MCU/DSI CMD屏)
  • 软件:所有嵌入式操作系统

现象

首先贴一张动态图,让大家能直观的感受撕裂形成的过程:

分析

从上面的动态图我们可以看到,在第二帧出现了新旧画面各显示一部分的现象,该现象即为撕裂,英文又叫tear effect。tear effect的根本原因是对GRAM的读、写速度不一致,导致在一帧之内,GRAM的读指针®与写指针(W)发生了重叠导致。

这个现象其实包含2个信息:

  1. W和R指针重叠了
  2. 指针重叠后的画面在屏上静止不动保持了整整1帧的时间(60fps的话就是16.7ms),这个时间是足以被人眼察觉到的

有经验的开发人员都知道,出现这类问题往往都是因为有个2倍关系没有调整好。何为“2倍关系”?即必须保证W:R > 1:2(这里的W、R都指的是速率),否则势必会出现撕裂的现象(如上面的W:R=1:3)。

理想情况

为什么是2倍?请看下图(W:R=1:2):

因为W < R,所以R指针跑在前面,因此读出来的数据都是旧数据,屏幕第1帧显示的还是上一帧的图像,直到第2帧才将GRAM中的图像完整的显示出来。如果R再稍微快那么一点,那么在第2帧R指针就又会赶上W指针,这样就会再次出现tear effect现象。所以W:R=1:2是撕裂发生的临界值。

同理,那如果对于W > R的情况,是否也存在这个2倍关系
回答这个问题前,我们先来看看下面这两幅图:


图1 (W:R=3:1)


图2 (W:R=2:1)

从上面的图中我们可以看到,对于W > R这中情况,确实也存在2倍关系。但是这种由于W > R而造成的撕裂现象一般是不可能发生的,因为大部分显示驱动都是等到TE信号到来时才开始刷图的,所以只要R指针还没有扫描完当前帧的画面,W指针是不可能立即去GRAM中刷画面“B”的,一定会等到画面“A”彻底显示完毕后才开始绘制,所以上面的图1、图2两种情况都不会发生。

因此为了防止撕裂的发生,只需要保证W > 12\frac{1}{2}21​R (这里指速率)即可。

实际情况

前面分析的现象都是基于一个前提条件的,那就是:

指针W和R都是基于同一个时间点同一个GRAM起始位置开始扫描的

只要上面的2点有一个不满足,那么2倍关系就不成立了。
因为对于这类带GRAM的LCD ,驱动软件或LCD Controller硬件都会做成等待TE信号到来时才会开始刷图,所以对于第1点这里不做详细描述,只针对第2点进行讲解。在LCD的实际显示过程中,其实是有消隐区的(即Porch区域),而且一般屏厂会将TE信号默认放在内部DriverIC的VSYNC阶段送出,这就导致了指针W无法满足和R从同一GRAM起始位置开始扫描,具体过程如下图:

从上图我们可以看到,虽然W:R=2:3,满足W > 12\frac{1}{2}21​R的条件,但是由于它们不是从GRAM的同一起始位置开始扫描,所以仍然会出现W和R指针碰头的情况,最终导致撕裂的现象。

那么对于上述这种情况,有什么方法可以解决吗?是时候召唤出TE Output Line了!

TE Output Line

LCD DriverIC厂商还是很贴心的,为了解决上述问题,工程师们专门预留了一个TE Output Line寄存器,该寄存器的作用就是用来调节TE信号(又叫FMARK信号)的输出位置。默认情况下,该寄存器的值为0,即DriverIC内部刷新时的VSYNC期间。那么对于上述情况,我们只需要将TE Output Line的值设置为VSYNC+VBP的值即可。

小提示:

  • 对于主控端,Vporch往往由VSYNC+VBP+VFP构成;
  • 对于LCD DriverIC厂商,他们定义的VBP其实往往是包含VSYNC的;

如下图:

结论

撕裂的本质:

  1. 在1帧时间内,W和R重叠了
  2. 撕裂的画面停留了1帧的时间,被人眼所觉察

解决方法:

  • W > 12\frac{1}{2}21​R (这里指速率)
  • 开启TE同步信号
  • 调整TE Output Line

后续

读完本文,可能细心的读者会问这样一个问题:既然tear effect现象只停留了1帧时间(60fps 16.7ms),人眼就能察觉到,但为什么我们却察觉不到LCD画面从上到下更新变化的过程?又或者,对于早期老式的24帧胶卷电影,从这一帧更新到下一帧时,中间过程其实是夹杂着黑屏的,这个黑屏的时间要比16.7ms还要长,可观众为什么没有察觉出来?
对于这类问题,其实已经属于生物医学范畴了,这涉及到人眼的构造、视觉暂留、闪光融合、认知资源等诸多概念,我也在查找相关的资料,等找到可靠的答案了在回来写吧。

LCD显示异常分析——撕裂(tear effect)相关推荐

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

    转自LCD显示异常分析--开机闪现花屏 最近在工作中,有同事遇到LCD开机瞬间会闪现雪花屏的问题,而这类问题都有个共同点,那就是都发生在带GRAM的屏上,同样的问题,在休眠唤醒时也会出现. 其实这类问 ...

  2. LCD显示异常分析——开机闪现花屏

    概述 最近在工作中,有同事遇到LCD开机瞬间会闪现雪花屏的问题,而这类问题都有个共同点,那就是都发生在带GRAM的屏上,同样的问题,在休眠唤醒时也会出现. 其实这类问题的原理分析并不难,只是在给别人解 ...

  3. RootCause深度分析:为什么DCache常会导致LCD显示异常(数据一致性问题)

    DCache导致LCD显示异常RootCause深度分析 问题描述: L1/L2 Cache简介 问题分析: 问题解决: 如何编程: Invalide Clean HyperRAM: Cache cl ...

  4. LCD 显示异常定位分析方法

    第一种情况: 进入kernel或android 后,如果LCM图像示异常,可以通过如下步骤来判断问题出现在哪个层面. step1:通过DMMS截图,来判断上面刷到LCM的数据是否有问题. 若DMMS获 ...

  5. LCD 显示问题分析

    我们说的LCD 显示包括并口的LCD,串行的LVDS 接口的LCD,mipi 接口的LCD, 和edp 接口的LCD,甚至包括VGA,和HDMI. 如果其发生问题,可能有以下问题: 1. 背光不亮 一 ...

  6. RK3399平台开发系列讲解(内核驱动外设篇)6.21、RK LCD显示驱动分析(fb和screen 部分程序)

    平台 内核版本 安卓版本 px3 Linux3.0 Android7.1 查看设备: ls /sys/devices/platform display驱动分析: RK LCD这块首先分为四大块相互依赖 ...

  7. 0640-6.1.1-Hue上SQL查询结果显示不全异常分析-补充

    Fayson的github: https://github.com/fayson/cdhproject 推荐关注微信公众号:"Hadoop实操",ID:gh_c4c535955d0 ...

  8. USB摄像头驱动--LCD显示摄像头图像(附Makefile分析)

    对于一个应用程序,最重要的是明白目的是什么:将摄像头的数据解析出来,按一帧一个图片的方式将数据传到LCD的Framebuffer中去(如果LCD没有自动将Framebuffer中的数据刷到LCD上还需 ...

  9. 【Android】【LCD】LCD开发常见问题分析

    LCD开发常见问题&分析 1.LCD driver的框架(以msm8909为栗子) 2.命名规则: nt35521-720p-video nt35521-wxga-video nt35590- ...

最新文章

  1. linux deepin tar安装jdk8
  2. list 数据类型的应用场景
  3. SQL经典语句(转载)
  4. python学习之字符串函数用法
  5. C#语言-04.OOP基础
  6. 我有一个网站,想提高点权重
  7. 编程基础(四)——cache之一
  8. PHP 文件下载 header设置
  9. 讲师BLOG:http://linuxguest.blog.51cto.com/
  10. 数字电子技术基础(十):SR锁存器
  11. 【JavaWeb】用监听器实现单一登录
  12. Table边框使用总结 ,只显示你要显示的边框
  13. 质量流量计在油品计量中的应用
  14. js中判断一个对象是否存在
  15. C语言三个整蛊程序,很强!!
  16. 转:最好的300款免费软件
  17. 常见电路结构分析三:自锁控制
  18. c语言作文的题目_c语言练习题目
  19. 克拉默法则的通俗理解
  20. 【蓝桥杯练习】100的阶乘有多少个约数?

热门文章

  1. Redis Scard 命令
  2. 用Python实现数据筛选与匹配
  3. 小学生计算机辅助教学系统
  4. 支付宝php40247,支付宝APP支付 显示 系统繁忙 请稍后再试 ALI40247
  5. 高并发(水平扩展,垂直扩展)
  6. 计算机入门在线阅读,计算机应用基础教程(Windows 7+Office 2010)
  7. 大漠穷秋:全面解读Angular 4.0核心特性
  8. 逻辑回归模型(一)——数学模型
  9. word里如何在□里打√!框框里打勾!!!!!
  10. 彩信发送失败原因是什么?如何解决?