Skip to content

支持 XIAO ESP32S3 与 7.5 寸 GDEY075Z08 三色墨水屏#96

Open
YCD12 wants to merge 7 commits into
datascale-ai:mainfrom
YCD12:feat/xiao-gdey075z08
Open

支持 XIAO ESP32S3 与 7.5 寸 GDEY075Z08 三色墨水屏#96
YCD12 wants to merge 7 commits into
datascale-ai:mainfrom
YCD12:feat/xiao-gdey075z08

Conversation

@YCD12

@YCD12 YCD12 commented Apr 9, 2026

Copy link
Copy Markdown

变更说明

本次修改主要完成了 XIAO ESP32S3 搭配 7.5 寸 GDEY075Z08 三色墨水屏的适配,并修正了相关编译与显示时序问题。

主要改动

  • 调整 UC8179 驱动时序,使其与 GDEY075Z08 面板初始化和刷新流程匹配
  • 保留 XIAO ESP32S3 下电池采样与 EPD_DC 复用 GPIO10 的兼容处理
  • 将面板颜色能力抽成统一宏 EPD_COLOR_CAPABILITY
  • 保持 EPD_BPP=2,并将三色面板能力单独表示为 EPD_COLOR_CAPABILITY=3

说明

  • EPD_BPP 表示图像传输编码位深,不等同于面板实际颜色数
  • GDEY075Z08 虽然是三色屏,但当前项目的数据通路仍然是 2bpp
  • 因此这里保留 EPD_BPP=2,同时通过 EPD_COLOR_CAPABILITY=3 向后端声明实际颜色能力

影响范围

  • XIAO ESP32S3
  • 7.5 寸 GDEY075Z08 / UC8179 三色屏相关驱动与网络渲染参数

YCD12 and others added 7 commits April 9, 2026 14:09
Adjust UC8179 timing for the GDEY075Z08 tricolor panel.
Keep XIAO ESP32S3-specific battery ADC handling when EPD_DC shares GPIO10.
Expose LED feedback with external linkage and centralize panel color capability config.

Signed-off-by: Dongyuchen6 <1227562610@qq.com>
2、7.5寸 uc8179 去掉先刷白再刷新的操作

Signed-off-by: DYC <1227562610@qq.com>
新增:
- src/epd_driver_hink_ssd1683.cpp:4.2" HINK 黑白红三色屏独立驱动
  参考 GxEPD2/GDEY042Z98(SSD1683)初始化时序,不走 GxEPD2 库
- platformio.ini:env 重命名为 epd_42_hink_ssd1683_xiao_esp32s3,
  宏由 EPD_PANEL_42_HINK_SSD16XX 改为 EPD_PANEL_42_HINK_SSD1683
- config.h / epd_driver.cpp:同步更新宏守卫

修复 (SSD1683 驱动三个坑):

1. 下半部分全黑/全白 ← 根本原因
   decodeRaw2bppToTriColorPlanes 在解码前调用了
   memset(color_plane, 0x00, IMG_BUF_LEN)。
   color_plane 复用 colorBuf 上半段(colorBuf + IMG_BUF_LEN),
   raw2bpp 源数据正好存放在整个 colorBuf(包含上半段)。
   memset 直接把后半段 2bpp 源数据清零,导致 out >= IMG_BUF_LEN/2
   的所有像素读到的都是 0x00(= 黑色码),下半屏整体黑色。
   修复:去掉 memset(color_plane),循环本身覆盖全部输出字节,无需预清零。
   解码约定改为与 uc8179/gdey0583 一致的 active-LOW(0=黑/彩,1=白/无彩)。

2. 黑白颜色反转
   SSD1683 的 0x24 BW RAM 为 active-LOW(0=黑,1=白),
   而原始解码输出为 active-HIGH(1=黑)。修复:直接写入 active-LOW
   解码结果;0x26 彩色 RAM 为 active-HIGH(1=红),需取反写入。

3. 屏幕下半部分不更新(RAM 地址未复位)
   每个数据面写入前仅重置地址指针(0x4E/0x4F),未重新声明窗口。
   SSD1683 在写完一帧后 Y 地址计数器状态不确定,需在每次写入前
   完整重设窗口(0x11/0x44/0x45)和指针,与 GDEY042Z98 参考驱动一致。

4. 刷新序列错误(0xC7 → 0xF7)
   原 0x22 刷新命令使用 0xC7(不加载 OTP LUT),导致波形未初始化,
   画面仅部分刷新。改为 0xF7(加载 LUT + 温度 + 显示),每次刷新
   都从 OTP 完整加载波形,与 SSD1683 datasheet 标准全刷流程一致。

修复 (GDEY0583Z21 5.83寸 BWY):
- 颜色面极性反转:0x13 彩色面需取反写入(1=黄),黑色面直接写入
- 刷新序列去掉多余的 0x91/0x92 partial in/out 包裹(参考 GDEQ0583Z31)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: DYC <1227562610@qq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant