原因
接下来会通过设置一系列假设条件并结合示意图来详细说明产生屏幕撕裂的原因。为了方便起见,这里将屏幕的刷新过程简化为 写入 和 读取 两个步骤,写入是指主控将渲染得到的色彩数据写入 GRAM 的过程,读取是指屏幕持续从 GRAM 中读取色彩数据并显示到面板上的过程。下面为简化的屏幕刷新示意图。
简化的屏幕刷新示意图
备注
一些 LCD 可以通过命令控制主控写入和屏幕读取的方向,如 ST7789 的 36h 命令,当方向不一致时,也有可能出现屏幕撕裂,后续仅针对读取和写入方向一致的情况进行说明。
当主控在写入时没有进行任何同步操作,即写入的初始位置以及初始时刻都是未知的,如果写入和读取的速度不相等,那么就有可能会出现屏幕撕裂。
假设写入的速度比读取慢(以速度比值为 1:2 举例),在主控写入第二帧图像的过程中,读取的位置会超过写入位置,使得屏幕仅读取到第二帧图像的前半部分,从而导致显示图像出现撕裂,下面为演示过程的示意图。
写入与读取不同步且速度比值为 1:2 时的示意图
假设写入的速度比读取快(以速度比值为 2:1 举例),在屏幕读取第一帧图像的过程中,写入的位置会超过读取的位置,使得屏幕读取到第二帧图像的后半部分,从而导致显示图像出现撕裂,下面为演示过程的示意图。
写入与读取不同步且速度比值为 2:1 时的示意图
当主控在写入时采取了同步操作,即写入的初始位置以及初始时刻和读取是同步的,如果写入和读取的速度不匹配,那么也有可能会出现屏幕撕裂。
假设写入的速度小于读取的二分之一(以速度比值为 1:3 举例),在主控写入第二帧图像的过程中,读取的位置会超过写入的位置,使得屏幕仅读取到第二帧图像的前半部分,从而导致显示图像出现撕裂,下面为演示过程的示意图。
写入与读取同步且速度比值为 1:3 时的示意图
假设写入的速度大于或等于读取的二分之一(以速度比值为 1:2 举例),在主控写入第二帧图像的过程中,读取的位置不会与写入的位置重叠,使得屏幕能够读取完整的第二帧图像,于是显示图像没有出现撕裂,下面为演示过程的示意图。
写入与读取同步且速度比值为 1:2 时的示意图
基于上述假设进行总结,出现屏幕撕裂的主要原因包含以下两点:
写入和读取同时操作同一个 GRAM
写入和读取的初始状态不同步或者速度不匹配