4. 波形表数据结构:存储格式、LUT结构、时序参数与电压序列编码
波形表(Waveform Table)是电子纸驱动中连接像素灰度目标与物理驱动电压的核心数据结构。本章深入剖析波形表在嵌入式系统中的存储格式、查找表(LUT)的组织方式、时序参数的量化方法以及电压序列的编码策略,为后续的传输优化与波形合成奠定数据基础。
4.1 波形表存储格式
波形表通常以二进制或十六进制数组形式存储在MCU的Flash或外部SPI Flash中。其基本存储单元为帧(Frame),每个帧对应一次全局刷新操作中的一段电压施加周期。
| 存储字段 | 字节数 | 说明 |
|---|---|---|
| 波形表头 | 8 ~ 16 | 包含版本号、温度范围、分辨率、帧总数 |
| 温度区间表 | N × 2 | 每个温度区间的起始温度与结束温度 |
| LUT索引表 | M × 1 | 每个灰度组合对应的LUT起始偏移 |
| 帧数据块 | K × 帧大小 | 实际电压序列编码数据 |
存储格式要点: 波形表采用偏移量索引方式,避免在Flash中存储大量重复的帧序列。每个温度区间独立维护一组LUT,以适应不同温度下电泳粒子迁移率的差异。
4.2 LUT(查找表)结构
LUT是波形表的核心索引机制,它将源灰度与目标灰度的二元组映射到一段具体的电压帧序列。典型的LUT结构如下:
// LUT条目结构体(C语言描述)
typedef struct {
uint8_t source_gray; // 源灰度级 (0~15)
uint8_t target_gray; // 目标灰度级 (0~15)
uint16_t frame_offset; // 帧序列在波形表中的起始偏移
uint8_t frame_count; // 该序列包含的帧数
uint8_t temperature_idx; // 适用的温度区间索引
} LUT_Entry;
对于16级灰度的电子纸,LUT表共包含 16 × 16 = 256 个条目。实际应用中,许多灰度转换(如0→0、15→15)可共享空操作序列,因此LUT表通常经过压缩,仅存储有效的转换条目。
工程提示: 在资源受限的MCU上,LUT表应使用二分查找或哈希索引加速匹配,避免线性遍历256个条目导致的刷新延迟。
4.3 时序参数
时序参数决定了每个帧的持续时间、相位关系以及帧间间隔。这些参数直接影响电子纸的刷新速度与显示质量。
| 参数名称 | 单位 | 典型值范围 | 作用 |
|---|---|---|---|
| 帧周期(Frame Period) | ms | 10 ~ 50 | 单个帧的持续时间 |
| 栅极扫描周期 | μs | 20 ~ 100 | 每行像素的选通时间 |
| 预充电时间 | ms | 0 ~ 5 | 电压建立前的稳定等待 |
| 帧间间隔 | ms | 0 ~ 2 | 相邻帧之间的电压归零时间 |
| 总刷新时间 | s | 0.5 ~ 5 | 所有帧执行完毕的总耗时 |
时序冲突风险: 帧周期过短会导致电泳粒子来不及迁移到位,造成残影;帧周期过长则刷新速度下降,用户体验变差。实际调优时需结合温度补偿曲线动态调整帧周期。
4.4 电压序列编码
电压序列编码是将每个像素在连续帧中的驱动电压进行压缩表示。常见的编码方式包括:
- 直接编码: 每个帧存储一个电压值(如0V、+15V、-15V),占用2位/帧。
- 差分编码: 仅存储电压变化量,适用于连续帧间电压变化较小的场景。
- 游程编码(RLE): 对连续相同的电压值进行压缩,适合长序列的稳定驱动。
- 波形模板索引: 预定义若干标准波形模板,帧序列仅存储模板ID和重复次数。
// 电压序列编码示例(RLE方式)
// 原始序列: +15, +15, +15, -15, -15, 0, 0, 0, 0
// RLE编码: (3, +15), (2, -15), (4, 0)
typedef struct {
uint8_t repeat_count; // 重复次数 (1~255)
int8_t voltage_level; // 电压等级 (-15, 0, +15)
} RLE_Entry;
4.5 波形表数据结构总览
以下SVG图展示了波形表从存储到解码的完整数据流结构:
4.6 波形表数据结构的工程实践要点
- 对齐访问: 波形表数据在Flash中应按照4字节对齐,避免MCU非对齐访问导致异常。
- 校验机制: 在波形表头中加入CRC16校验,防止Flash数据损坏导致显示异常。
- 缓存策略: 将当前温度区间的LUT表加载到SRAM中,减少Flash读取延迟。
- 版本兼容: 波形表头中的版本号用于驱动固件识别不同波形格式,支持向后兼容。
核心结论: 波形表数据结构的合理设计直接决定了电子纸刷新效率与显示质量。LUT索引机制将256种灰度转换压缩为高效的偏移查找,而电压序列编码则通过RLE或差分方式大幅降低存储空间。时序参数的精细调优是消除残影、提升刷新速度的关键工程环节。