Files
xInfo/docs/epaper_refresh_mechanism.md
2026-08-31 15:05:13 +08:00

9.5 KiB
Raw Permalink Blame History

xInfo 墨水屏刷新机制与显示管理技术文档

本文档详细介绍了 xInfo 环境监控终端中 DEPG0420 / YMS400300(400×300)电子墨水屏 的硬件特性、引脚分配、多级刷新机制、显存架构以及应用层智能自适应调度策略。


1. 硬件规格与物理特性

参数项 参数值 / 说明
屏幕型号 DEPG0420 / YMS400300
物理尺寸 91 × 77 mm(不含排线)
排线规格 24 Pin (24P)
屏幕分辨率 400 × 300 像素
色彩模式 黑 / 白 / 红 三色(BWR) 或 纯黑白模式(BW)
快刷特性 三色(BWR)模式下不支持快刷(必须全量三色刷新);在纯黑白(BW)模式下支持快速刷新
显示特性 双稳态显示(Bistable Display):断电后画面永久保持,仅在刷新瞬间消耗电量
通信接口 4-Wire SPI 接口(3.3V 供电)
显存占用 BWR 模式约 30KB(双 15KB FrameBuffer),BW 模式约 15KB

1.1 ESP32-C3 接线定义表

墨水屏引脚 ESP32-C3 引脚 功能描述 物理特性说明
BUSY GPIO 1 忙碌状态输出 高电平表示空闲(Idle),低电平表示忙碌中(Busy)
RST GPIO 2 硬件复位引脚 低电平复位,高电平正常工作
DC GPIO 3 数据 / 命令控制 低电平写命令(CMD),高电平写数据(DATA)
CS GPIO 4 SPI 片选 (SPI CS) 低电平有效选通
CLK (SCL) GPIO 5 SPI 时钟 (SPI SCK) 时钟输入
DIN (SDA) GPIO 6 SPI 数据输入 (MOSI) 数据输入
GND GND 电源地 系统参考地
VCC 3.3V 供电正极 3.3V 电源

2. 刷新机制三层架构

┌─────────────────────────────────────────────────────────────┐
│ 3. 业务调度层 (App.cpp)                                     │
│    - 数据变化检测 (跳过无意义刷新)                          │
│    - 红色图层变更指纹检测                                   │
│    - 连续快刷计数与周期性残影消除算法                       │
└──────────────────────────────┬──────────────────────────────┘
                               │ 调度决策
┌──────────────────────────────▼──────────────────────────────┐
│ 2. 显示管理层 (DisplayManager.cpp)                          │
│    - 400×300 区域布局与组件排版                             │
│    - 双图层/单图层显存分配与色彩切换 (switchColor)          │
│    - 中英文矢量/点阵字库渲染 (Unifont 16×16)                │
└──────────────────────────────┬──────────────────────────────┘
                               │ 驱动调用
┌──────────────────────────────▼──────────────────────────────┐
│ 1. 硬件驱动层 (epdiy_bwr: EPD.cpp / EPD_SPI.cpp)            │
│    - 全量刷新波形 (Full Refresh Waveform, ~12-15s)          │
│    - 快速刷新波形 (Fast Refresh Waveform, ~1.5s, 仅黑白)    │
│    - 硬件控制器深度休眠 (Deep Sleep Command 0x10)           │
└─────────────────────────────────────────────────────────────┘

3. 底层硬件刷新波形与接口

在驱动层 components/epdiy_bwr/ 中,针对电子墨水微胶囊粒子的电泳物理特性,实现了两种不同驱动波形:

3.1 全量刷新 (Full Refresh)

  • 对应 API:EPD_HW_Init_GUI() + EPD_Display(ImageBW, ImageRW)
  • 耗时:三色模式 ~12 ~ 15 秒;纯黑白模式 ~3 ~ 4 秒
  • 物理过程: 控制器连续输出多阶段高低反转电压脉冲,驱动黑、白、红三色微胶囊粒子充分迁移。屏幕会经历数次黑白红剧烈翻转闪烁。
  • 主要作用:
    1. 驱动红色粒子:全量波形是激活红色微胶囊电泳迁移的唯一方式(DEPG0420 三色模式必须使用此波形);
    2. 彻底清除残影:中和残留在微胶囊两端的历史电荷,还原纯净白底。

3.2 快速刷新 (Fast Refresh)

  • 对应 API:EPD_HW_Init_Fast() + EPD_WhiteScreen_ALL_Fast(ImageBW, ImageRW)
  • 耗时:约 1.5 秒
  • 物理过程: 精简了电荷反转清屏步骤,仅针对黑白粒子施加单向短脉冲快速翻转。
  • 主要作用:
    1. 极佳观感:刷新极快且完全不闪烁,仅在**纯黑白模式(BW)**或仅更新黑白数据时适用;
    2. 局限性:不支持三色红白刷新,若长时间仅用快刷,屏幕背景会微弱累积灰度残影。

3.3 控制器深度休眠 (Deep Sleep)

  • 对应 API:EPD_DeepSleep()
  • 执行时机:无论是全刷还是快刷,在数据写入屏幕完成后的第一时间,必须调用此函数向控制器发送 0x10 深度休眠命令。
  • 重要意义:
    1. 极致省电:休眠状态功耗仅为微安级(µA);
    2. 保护屏幕面板:避免墨水屏长期处于工作电压导致液晶层极化损坏。

4. 显存与颜色图层管理

系统在编译期通过 Kconfig(CONFIG_DISPLAY_BWR / CONFIG_DISPLAY_BW)进行显存与图层模式切换:

4.1 黑白红三色模式 (BWR)

  • 显存分配:
    • ImageBW:黑白位图缓冲区(400 × 300 / 8 = 15,000 字节),0=黑,1=白
    • ImageRW:红白位图缓冲区(15,000 字节),0=红,1=白/无色
  • 绘制流程: 调用 switchColor(true) 切换到红色图层绘制红底顶部横幅;调用 switchColor(false) 返回黑白图层绘制常规文字与数值。

4.2 纯黑白模式 (BW)

  • 显存分配: 仅分配单块 ImageBW(15KB),不分配红色图层,显著降低 ESP32 内存占用,同时原生支持快速刷新。

5. 应用层自适应刷新策略

在 App.cpp 的主循环中,系统整合了一套自适应仲裁算法:

flowchart TD
    Start([定时采集本地传感器]) --> Fetch[获取本地温湿度与空气质量数据]
    Fetch --> CheckDiff{数据与上一帧相比<br/>是否有变化?}
    CheckDiff -- 完全相同 --> Skip[跳过本次刷新<br/>延长墨水屏物理寿命]
    CheckDiff -- 有变化 --> CheckMode{当前色彩模式?}
    CheckMode -- BWR 三色模式 --> CheckCondition{是否满足全刷条件?<br/>1. 红色图层内容发生变动<br/>2. 快刷连续达阈值 约3小时}
    CheckMode -- BW 纯黑白模式 --> DoFast[执行 1.5s 极速快刷<br/>无闪烁更新]
    CheckCondition -- 是 --> DoFull[执行全量三色刷新<br/>消除残影 / 渲染红色图层]
    CheckCondition -- 否 --> DoFast
    DoFull --> Sleep[EPD_DeepSleep 硬件休眠]
    DoFast --> Sleep
    Skip --> Delay[等待下一个采样周期]
    Sleep --> Delay

策略 1:数据无变化跳刷(Data Diff Bypass)

  • 逻辑:每次采集后,将新生成的 DashboardData 与上一帧 lastDashData_ 进行结构体全字段比对。
  • 优势:如果室内环境稳定无变动,墨水屏完全不工作,极大延长电泳微胶囊的使用寿命。

策略 2:红色图层变更感知(Red Fingerprint Tracking)

  • 逻辑:记录上一次全刷时红色区域的文本指纹 lastRedContent_(例如顶部 WiFi 连接状态)。
  • 优势:当网络从 WiFi: Home 变为 [Offline] 时,由于涉及红底白字变化,系统自动由快刷升阶为全量三色刷新,确保红色像素不缺失。

策略 3:周期性全刷消残影(Anti-Ghosting Maintenance)

  • 逻辑:维护快速刷新计数器 fullRefreshCounter_。
  • 计算公式: \text{maxFastRefreshes} = \frac{180\text{ 分钟}}{\text{CONFIG\_DISPLAY\_REFRESH\_INTERVAL\_MIN}}
  • 优势:日常采用 1.5 秒无感快刷,每累积运行约 3 小时 强制触发一次全量反转全刷,彻底清空物理残影,兼顾观感与画质纯净度。

6. 相关配置文件与源码索引