2. ePaper 硬件接口基础
本章聚焦于驱动墨水屏所需的硬件底层知识。你将理解 SPI 通信协议的核心机制、掌握 ePaper 模块 FPC 连接器的引脚定义,并明确驱动电压与时序的关键要求。这是后续封装驱动接口与适配灰度算法的硬件基石。
2.1 SPI 通信协议详解
SPI(Serial Peripheral Interface)是 ePaper 驱动中最常用的同步串行通信接口。它采用主从架构,由主机(MCU)控制时钟并选择从机(ePaper 驱动 IC)。
2.1.1 SPI 四线信号定义
| 信号线 | 方向 | 功能描述 |
|---|---|---|
| SCLK | 主机 → 从机 | 串行时钟,由主机产生,决定数据传输速率 |
| MOSI | 主机 → 从机 | 主机输出/从机输入,数据线 |
| MISO | 从机 → 主机 | 从机输出/主机输入,数据线(部分 ePaper 模块未使用) |
| CS | 主机 → 从机 | 片选信号,低电平有效,选中目标从机 |
关键提示: 多数 ePaper 驱动 IC(如 SSD1680、UC8151)仅使用 SCLK、MOSI、CS 三线进行写操作,MISO 线通常用于读取状态寄存器或内置温度传感器数据,非必需时可悬空。
2.1.2 SPI 通信时序与模式
SPI 协议通过时钟极性(CPOL)和时钟相位(CPHA)组合定义四种工作模式。ePaper 驱动 IC 通常工作在 模式 0(CPOL=0, CPHA=0) 或 模式 3(CPOL=1, CPHA=1)。
- 模式 0: 空闲时 SCLK 为低电平,数据在 SCLK 上升沿采样。
- 模式 3: 空闲时 SCLK 为高电平,数据在 SCLK 上升沿采样。
适配建议: 初始化 MCU 的 SPI 外设时,务必查阅目标 ePaper 驱动 IC 的数据手册,确认其支持的 SPI 模式。错误的模式配置将导致通信完全失败。
2.2 ePaper 模块引脚定义 (FPC 连接器)
ePaper 模块通过 FPC(柔性印刷电路)排线与主板连接。不同尺寸和厂商的模块引脚定义略有差异,但核心功能引脚高度一致。以下以常见的 24-Pin FPC 接口 为例进行说明。
2.2.1 标准 24-Pin FPC 引脚功能表
| Pin# | 符号 | 类型 | 功能描述 |
|---|---|---|---|
| 1 | CS | 数字输入 | SPI 片选,低电平有效 |
| 2 | SCLK | 数字输入 | SPI 时钟 |
| 3 | MOSI | 数字输入 | SPI 数据输入 |
| 4 | MISO | 数字输出 | SPI 数据输出(可选) |
| 5 | DC | 数字输入 | 数据/命令控制:低电平=命令,高电平=数据 |
| 6 | RST | 数字输入 | 硬件复位,低电平有效 |
| 7 | BUSY | 数字输出 | 忙状态指示:低电平=忙,高电平=空闲 |
| 8 | VCC | 电源 | 逻辑电源 (3.3V) |
| 9 | VDD | 电源 | 驱动电源 (3.3V / 5V,视模块而定) |
| 10 | VEE | 电源 | 负压电源 (-20V ~ -15V,用于驱动) |
| 11 | GND | 电源 | 地 |
| 12-24 | NC / 备用 | - | 未连接或厂商保留引脚 |
硬件设计警告: VEE 负压电源是 ePaper 模块特有的电源轨,用于产生驱动电场。MCU 无法直接提供,必须使用专用的 DC-DC 转换芯片(如 TPS65185、MAX17135)生成。错误的电源设计可能导致屏幕无法刷新或永久损坏。
2.2.2 关键控制引脚说明
- DC (Data/Command): 这是 SPI 通信之外最重要的控制线。当 DC 为低电平时,SPI 传输的数据被解释为寄存器地址或命令;当 DC 为高电平时,SPI 传输的数据被写入当前选中的寄存器或 RAM。
- RST (Reset): 硬件复位引脚。在初始化流程中,MCU 需要先拉低 RST 至少 10ms,然后释放,以复位驱动 IC 的内部状态机。
- BUSY: 状态反馈引脚。在刷新过程中,驱动 IC 会拉低 BUSY 表示正在处理。MCU 必须在发送新命令前等待 BUSY 变为高电平,否则可能导致操作冲突。
2.3 驱动电压与时序要求
ePaper 的刷新依赖于精确的电压序列和时序控制。错误的电压或时序会导致显示残影、刷新不全甚至屏幕损坏。
2.3.1 电源轨与电压域
一个典型的 ePaper 模块需要以下电源轨:
| 电源轨 | 典型电压 | 用途 |
|---|---|---|
| VCC | 3.3V | 驱动 IC 逻辑电源 |
| VDD | 3.3V | 源极驱动电源 |
| VEE | -20V ~ -15V | 栅极驱动负压 |
| VCOM | 可调 (通常 -2.5V ~ -1.5V) | 公共电极电压,影响对比度 |
关键指标: VCOM 电压的精度直接影响显示效果。通常需要在模块初始化阶段通过 SPI 写入 VCOM 寄存器,或通过外部电位器校准。偏差过大会导致屏幕整体偏暗或出现不可逆的烧屏现象。
2.3.2 上电与复位时序
驱动 ePaper 必须遵循严格的上电顺序。以下是一个标准的上电流程:
- 上电 VCC 和 VDD: 先给逻辑部分供电。
- 等待电源稳定: 至少等待 10ms。
- 拉低 RST 引脚: 保持低电平至少 10ms。
- 释放 RST: 拉高 RST,等待驱动 IC 内部初始化完成。
- 等待 BUSY 变高: 确认驱动 IC 就绪。
- 使能 DC-DC 转换器: 通过 SPI 命令开启 VEE 和 VCOM 输出。
- 等待电源稳定: 等待约 50ms,确保负压建立。
2.3.3 刷新时序与帧率
ePaper 的刷新过程不是瞬间完成的。一个完整的刷新周期包括多个阶段:
- 初始化阶段: 设置驱动参数、VCOM、波形表(LUT)。
- 数据写入阶段: 通过 SPI 将图像数据写入 SRAM。
- 显示刷新阶段: 驱动 IC 根据 LUT 输出一系列高压脉冲,驱动墨水粒子运动。此阶段 BUSY 引脚保持低电平。
- 空闲阶段: 刷新完成,BUSY 变高,可进入低功耗模式。
性能考量: 全屏刷新时间通常在 1~3 秒之间,局部刷新可缩短至 200~500ms。在 BUSY 为低电平时,绝对禁止发送新的刷新命令或写入图像数据,否则会导致时序错乱和显示异常。
2.3.4 典型初始化代码片段
以下代码展示了在 MCU 上实现标准上电和复位时序的 C 语言逻辑:
// ePaper 初始化函数示例
void ePaper_Init(void) {
// 1. 上电 VCC 和 VDD (假设由 GPIO 控制电源使能)
GPIO_SetPin(POWER_EN_PIN, HIGH);
Delay_ms(10); // 等待电源稳定
// 2. 硬件复位
GPIO_SetPin(RST_PIN, LOW);
Delay_ms(10); // 保持复位至少 10ms
GPIO_SetPin(RST_PIN, HIGH);
Delay_ms(10); // 等待内部复位完成
// 3. 等待 BUSY 释放
while (GPIO_GetPin(BUSY_PIN) == LOW) {
// 等待驱动 IC 就绪
}
// 4. 通过 SPI 发送初始化命令序列
ePaper_SendCommand(0x01); // 驱动输出控制
ePaper_SendData(0x03);
// ... 其他初始化命令
// 5. 开启 DC-DC 转换器
ePaper_SendCommand(0x04); // 电源控制
ePaper_SendData(0x03);
Delay_ms(50); // 等待负压建立
// 6. 设置 VCOM 电压
ePaper_SendCommand(0x2C); // VCOM 寄存器
ePaper_SendData(0x1C); // 根据模块校准值设定
}
调试建议: 在开发初期,建议使用逻辑分析仪抓取 SCLK、MOSI、CS、DC、BUSY 五根线的波形。通过观察 BUSY 的脉宽和 SPI 数据包的完整性,可以快速定位硬件连接或时序配置问题。