4. LUT 数据结构总览:整体结构、行、列与深度的含义
LUT(Look-Up Table,查找表)是墨水屏驱动中控制电子墨水粒子运动的核心数据结构。它本质上是一个三维数组,定义了从当前灰度到目标灰度转换过程中,每个像素在每一帧(Phase)所施加的电压波形。理解 LUT 的行、列、深度(Depth)是修改和优化驱动波形的第一步。
核心概念: LUT 不是一张简单的“颜色映射表”,而是一张 时序波形表。它告诉驱动芯片:对于每一种灰度跳变,在接下来的 N 个帧周期内,每个帧应该输出什么电压。
4.1 LUT 的三维结构模型
一个标准的墨水屏 LUT 可以抽象为一个三维立方体,其三个维度分别是:行(Row)、列(Column) 和 深度(Depth)。
上图展示了一个典型的 LUT 立方体。其中:
- 行(Row):代表当前像素的 起始灰度(Source Gray Level)。
- 列(Column):代表像素的 目标灰度(Target Gray Level)。
- 深度(Depth):代表波形中的 帧序号(Phase / Frame Number)。
4.2 行与列:灰度跳变矩阵
行和列共同构成了一个 灰度跳变矩阵。假设墨水屏支持 4 级灰度(0, 1, 2, 3),则 LUT 的行数和列数均为 4。矩阵中的每个元素 (Row, Col) 对应一种特定的灰度转换过程。
| 起始灰度 \ 目标灰度 | Col 0 (白) | Col 1 (浅灰) | Col 2 (深灰) | Col 3 (黑) |
|---|---|---|---|---|
| Row 0 (白) | 保持白 | 白→浅灰 | 白→深灰 | 白→黑 |
| Row 1 (浅灰) | 浅灰→白 | 保持浅灰 | 浅灰→深灰 | 浅灰→黑 |
| Row 2 (深灰) | 深灰→白 | 深灰→浅灰 | 保持深灰 | 深灰→黑 |
| Row 3 (黑) | 黑→白 | 黑→浅灰 | 黑→深灰 | 保持黑 |
关键理解: 对角线上的元素(Row == Col)代表“保持当前灰度”,通常使用最短的波形或零电压序列。非对角线元素则需要更复杂的多帧波形来驱动粒子完成迁移。
4.3 深度(Depth):波形的时序维度
深度是 LUT 中最容易被忽视但最重要的维度。它定义了每个灰度跳变需要经历多少个帧周期,以及每个帧周期内施加什么电压。
例如,对于“白→黑”这个跳变(Row=0, Col=3),深度方向可能包含以下序列:
// 伪代码:LUT[Row=0][Col=3] 的深度序列
Phase 0: VSH (正高压,将白色粒子推至顶部)
Phase 1: VSH (维持正高压)
Phase 2: VSL (负低压,开始拉入黑色粒子)
Phase 3: VSL (维持负低压)
Phase 4: VSS (零电压,粒子静止)
...
Phase N: VSS (结束,显示稳定)
深度值(Depth)通常由驱动芯片的 帧计数器 控制。每刷新一帧,深度索引自动加 1,直到达到预设的最大深度值。
4.4 行、列、深度的实际参数范围
不同厂商、不同型号的墨水屏驱动芯片,其 LUT 的三维尺寸各不相同。以下是常见规格:
| 驱动芯片 | 行数 (起始灰度) | 列数 (目标灰度) | 深度 (帧数) | 灰度等级 |
|---|---|---|---|---|
| SSD1608 (4灰阶) | 4 | 4 | 16~32 | 4 |
| SSD1675A (16灰阶) | 16 | 16 | 32~64 | 16 |
| IT8951 (16灰阶) | 16 | 16 | 24~48 | 16 |
| UC8151 (4灰阶) | 4 | 4 | 20~30 | 4 |
注意: 深度值并非越大越好。深度过大会导致刷新时间过长(例如 32 帧 × 20ms = 640ms),影响用户体验。深度过小则可能导致粒子迁移不充分,出现残影或对比度不足。实际开发中需要在 刷新速度 和 显示质量 之间取得平衡。
4.5 LUT 在内存中的存储布局
在驱动芯片的寄存器或固件中,LUT 通常以 一维数组 的形式连续存储。访问时通过公式计算偏移量:
// 假设 LUT 总大小为 Row * Col * Depth
// 访问 LUT[row][col][depth] 的偏移量计算:
offset = (row * Col + col) * Depth + depth
// 示例:访问第 2 行、第 3 列、第 5 帧
// 假设 Col=4, Depth=16
offset = (2 * 4 + 3) * 16 + 5 = (8 + 3) * 16 + 5 = 11 * 16 + 5 = 181
这种布局方式要求驱动开发者在修改 LUT 时,必须清楚知道每个字节对应的 (Row, Col, Depth) 三元组,否则极易写错波形数据。
4.6 小结:LUT 数据结构的核心要点
- 行(Row):起始灰度,取值范围 0 ~ (GrayLevel-1)。
- 列(Column):目标灰度,取值范围 0 ~ (GrayLevel-1)。
- 深度(Depth):帧序号,取值范围 0 ~ (MaxPhase-1),决定波形的时序长度。
- 存储顺序:通常按行优先(Row-major)排列,每个 (Row, Col) 内部按深度连续存储。
- 电压值:每个单元格存储一个电压编码,常见值包括 VSS(0V)、VSH(+15V)、VSL(-15V)、VGH(+22V) 等。