2.3 KiB
2.3 KiB
EPD Reference Driver — GDEY075T7 (UC8179)
Source
Repository: ekosboard/firmware
File: src/components/EPD/driver/epd_GDEY075T7.c
Panel Info
- Controller: UC8179
- Panel: GDEY075T7 (Good Display 7.5" B/W, 800×480)
- Platform: ESP-IDF (native SPI)
- Grayscale: 4-level support present but marked as "NOT TESTED"
Key Implementation Details
BUSY Pin Polarity
- Reference driver: HIGH = Busy, LOW = Idle
- ⚠️ Our board is INVERTED: LOW = Busy, HIGH = Idle
- Wait loop polls
gpio_get_level(BUSY) == 0to detect idle (reference) - Our code uses
== 0to wait while busy (opposite meaning, same code pattern)
Clear Screen (White)
- Writes
0xFFto both old (0x10) and new (0x13) data layers 0xFF= White,0x00= Black
Display Image
- Writes
0x00to old data layer (0x10) — assumes previous state was black - Writes actual image data to new data layer (0x13)
Sleep Sequence
0x50with0xF7— VCOM and data interval setting before sleep0x02— Power Off- Wait for BUSY idle
0x07+0xA5— Deep Sleep
Init Sequence (Full Refresh)
- Hardware reset (RST low 10ms, high 10ms)
0x01— Power Setting: VGH=20V, VGL=-20V, VDH=15V, VDL=-15V, VDHR=4.2V0x06— Booster Soft Start: 0x17, 0x17, 0x28, 0x170x04— Power On + 100ms delay + wait busy0x00— Panel Setting:0x1F(KW B/W mode)0x61— Resolution: 800×4800x15— DUSPI disabled0x50— VCOM: 0x10, 0x070x60— TCON: 0x220xE3— PWS: 0x22
Fast Refresh
0xE0→0x02(enable fast mode)0xE5→0x5A(fast refresh timing)
Partial Update
- Uses
0x91(partial in) /0x92(partial out) +0x90(resolution setting) - Writes
~data(inverted) to old layer to force transitions - Sets
0x50→0x21(N2OCP disabled) for partial mode
4-Level Grayscale
- Requires different booster settings:
0x27, 0x27, 0x18, 0x17 0xE5→0x5Ffor grayscale timing- Data encoding: 2 bits per pixel (0xC0=white, 0x00=black, 0x80=gray1, 0x40=gray2)
- Old layer and new layer encode different bit planes, both inverted (
~temp3)