墨水屏控制器(EPDC)参数设置
前言
显示作为 i.MX 系列芯片功能的重要组成部分,我们将在未来一段时间以i.MX系列芯片为基础,详细说明显示相关模块的工作原理及使能客制化屏幕的步骤及可能遇到的问题。本篇文章将聚焦i.MX系列上的另一种显示接口,EPDC,墨水屏控制接口。
1. 墨水屏的驱动要素
墨水屏的像素驱动控制包括栅极驱动(Gate Driver)和源极驱动(Source driver)两部分,它们共同作用来控制每个像素的电压。通常会以固定刷新频率逐行或者隔行激活TFT开关决定哪一行像素接收数据。当一行被激活时,源极驱动会向这一行中的像素施加电压进而改变像素颜色。
当我们需要使用芯片去驱动墨水屏时,需要以下几部分内容。本篇文章中,我们将逐一进行说明:
l 墨水屏时序控制
l 波形文件 (Waveform)
l 产生驱动电压的电源管理芯片 (PMIC) 及其周围电路
2. 波形文件 (Waveform file)
通过以上墨水屏的基本原理我们了解到,墨水屏想要显示内容,需要通过施加电压控制粒子在微容器中移动。然而,这种移动通常不是一次完成的,需要施加一段电压波形,也就是我们这里说的波形文件 (Waveform File)。Waveform会保存着所有可能的颜色转变所需的电压波形,显示粒子将根据Waveform的定义向上移动显示颜色对应的例子或者将不显示的粒子向下移动。这也就引出了
“不同墨水屏会有自己的Waveform控制粒子的移动。”
与此同时,因为墨水粒子在低温环境下的运动会变得更加缓慢,波形文件需要调整不同温度下的电压和时间参数从而保证墨水屏的显示效果。同时,因为不同模式显示效果不同,所需的过度电压也就不同。因此,控制器还需要依据
“不同的更新模式,状态转换以及工作温度选择对应的电压波形。”
针对墨水屏的刷新,通常情况下对像素施加一次电压称之为一帧。在不同的模式及温度范围下,完成一次完整的像素转变需要10~200帧。这里我们以墨水屏在 ‘25℃’ ‘GC模式’ 下 ‘一个像素从黑色更新到白色’ 所需要的波形为例进行说明:
从上图中可以看到,墨水屏画面更新需要经过施加一段波形完成,而这段更新过程通常伴随着屏幕闪烁。假设屏幕的刷新率为85Hz, 在25℃ GC模式帧数为10帧,则完整的完成一次画面更新所需的时间为
t = frame_count / frame_rate= 10 / 85 = 117.65 ms
正如我们之前所说,墨水屏的一次刷新会包含很多帧,其相关数据将被保存在波形文件中。这里我们便引入了另外一个概念,两帧之间的时间差称之为刷新率(Frame Rate),通常一块屏幕的刷新率在其数据手册中指明,E Ink墨水屏的刷新率为50Hz~120Hz。这里我们以frame_rate = 85Hz为例进行了计算。
在黑白墨水屏的基础上,对于四色粒子的彩色墨水屏,它的控制要比传统的灰阶波形复杂很多,所以它们刷新一帧所需的帧数通常也就要高得多。根据以上公式,完成一次完整画面刷新的时间也就变得更长。
3. 墨水屏时序控制
墨水屏的时序控制负责了栅极驱动和源极驱动的协调工作,从而确保墨水屏的每个像素都能准确的被驱动。与LCD屏幕相似,在计算墨水屏时序时,我们同样需要引入显示的几个参数。
l Line Sync (LS): 指示一行数据的开始
l Line Begin (LB): 一行新的数据开始加载
l Line Data (LD): 每行像素要接收的图像数据
l Line END (LE): 表示当前行的数据已经传输完毕
l Frame Sync (FS): 帧同步信号指示一次完整帧的开始
l Frame Begin (FB): 标志着一帧显示数据的开始
l Frame Data (LD): 表示所有行数据依次传输的阶段
l Frame End (FE): 表示这一帧已经显示完毕
l VSCAN_HOLDOFF: 用于控制帧之间过渡间隔,以防止过快更新
下面公式定义了屏幕一行及帧数据的更新时间:
Line Date (LD) =
RES.H / (pixels_per_sdclk)
Line Time (LT) =
(LS+LB+LD+LE)/sd_clk
Frame Rate (FR) =
1/ (LT * (FS + FB +RES.V+FE))
公式中除了以上提到的屏幕中的参数定义,还包含了以下几个不同参数:
l Line Time (LT): 一行像素数据的更新时间
l Frame Rate (FR): 一帧屏幕数据的更新时间
l sd_clk: 源极驱动时钟
l RES.H: 屏幕的行分辨率
l RES.V: 屏幕的列分辨率
3.2 计算示例
以上计算屏幕时序所需的参数通常可以在屏幕的相关手册中找到。以下我们以一款6英寸的800x600黑白墨水屏的时序参数为例进行计算说明:
l PIXELS_PER_SDCLK = 4
l sd_clk = 8.82 MHz
l LS = 10
l LB = 4
l LE = 71
l FS = 4
l FB = 4
l FE = 10
通过以上参数我们可以计算其对应的LT及FT:
Line Time (LT) =
(10 + 4 + 800 / 4 + 71)
/ 8.82M
= 32.31 us
Frame Rate (FR) =
1/((4 + 4 + 600 + 10) * LT)= 50.08 Hz
产生驱动电压的电源管理芯片 (PMIC)
除了之前提到的波形文件及时序,不同于TFT-LCD,驱动墨水屏通常需要一些特殊电压值,例如:
l Gate Positive/Negative Voltage: 为Gate driver供电,用于激活/关闭Gate line
l Source Positive/Negative Voltage: 为Source driver供电,用于驱动墨水粒子运动
l Common voltage: 公共电压
当我们仔细阅读墨水屏的数据手册,从中我们可以查询到其所需要施加的一些特殊电压。例如,一款黑白墨水屏的手册中标注了,除了3.3V和1.8V信号线外所需的驱动电压,还标注了几个电压所需的特殊电压值。不同于LCD屏幕,像素可能是RGB565(16-bits)或者RGB888(24-bits),墨水屏中像素数据是多路电压的编码值,通常是2-bits或者4-bits。在黑白墨水屏上通常需要2路Source supply控制粒子移动,这时像素格式是2-bits的。而对于四色粒子混合的彩色墨水屏,需要4路或者6路source supply电压轨控制,则像素格式是4-bits的。