$npx -y skills add easyzoom/aix-skills --skill epd-integrationUse when integrating, porting, or debugging e-paper EPD displays, waveform initialization, SPI drivers, busy pins, partial refresh, ghosting, or low-power display updates
| 1 | # EPD Integration |
| 2 | |
| 3 | ## Overview |
| 4 | |
| 5 | Use this skill to integrate e-paper displays by proving power sequencing, reset, SPI commands, busy timing, framebuffer layout, waveform/LUT setup, and refresh mode. EPD failures are timing and panel-variant sensitive, so driver code must match the exact module. |
| 6 | |
| 7 | ## When To Use |
| 8 | |
| 9 | Use this skill when: |
| 10 | |
| 11 | - The user wants to add or debug e-paper/e-ink display panels on MCUs or embedded Linux. |
| 12 | - The issue involves blank screen, stuck busy pin, mirrored image, ghosting, partial refresh artifacts, slow refresh, or high sleep current. |
| 13 | - The project uses SPI, GPIO reset/DC/CS/busy pins, external boost power, partial update, deep sleep, or multiple color planes. |
| 14 | |
| 15 | Do not use this skill for generic GUI widget logic. Use `lvgl-integration` or `u8g2-integration` after the panel refresh path is proven. |
| 16 | |
| 17 | ## First Questions |
| 18 | |
| 19 | Ask for: |
| 20 | |
| 21 | - Exact panel/module part number, resolution, color planes, controller IC, and vendor demo code. |
| 22 | - Pin mapping for SPI, CS, DC, reset, busy, panel power, and optional enable pins. |
| 23 | - SPI mode/speed, reset timing, init commands, LUT/waveform source, and refresh mode. |
| 24 | - Framebuffer format, bit order, rotation, and partial update area. |
| 25 | - Current symptom, busy pin behavior, and photos if visual output is wrong. |
| 26 | |
| 27 | ## Integration Checklist |
| 28 | |
| 29 | 1. Match the exact panel. |
| 30 | Resolution, controller, LUT, color planes, and command set must match the purchased module. |
| 31 | |
| 32 | 1. Prove power and reset timing. |
| 33 | Check panel power, reset pulse, busy pin level, and required delays before SPI commands. |
| 34 | |
| 35 | 1. Send a minimal pattern. |
| 36 | Render full white, full black, and checkerboard before fonts or images. |
| 37 | |
| 38 | 1. Validate framebuffer layout. |
| 39 | Confirm bit order, row stride, rotation, black/red planes, and RAM window commands. |
| 40 | |
| 41 | 1. Add refresh policy. |
| 42 | Separate full refresh, partial refresh, deep sleep, and wake-up flows. |
| 43 | |
| 44 | 1. Measure low-power behavior. |
| 45 | Confirm panel sleep command, rail shutdown, and MCU pin states after update. |
| 46 | |
| 47 | ## Common Failures |
| 48 | |
| 49 | - Driver targets a similar-looking panel with different controller or LUT. |
| 50 | - Busy pin polarity is wrong or not waited long enough. |
| 51 | - SPI DC/CS timing is violated during command/data transitions. |
| 52 | - Image is mirrored because bit order or RAM direction is wrong. |
| 53 | - Partial refresh causes ghosting because periodic full refresh is missing. |
| 54 | - Deep sleep requires a full reinitialization before the next update. |
| 55 | |
| 56 | ## Verification |
| 57 | |
| 58 | Before claiming EPD works: |
| 59 | |
| 60 | - State exact panel, controller, resolution, color planes, and refresh mode. |
| 61 | - Confirm solid black, solid white, and checkerboard output. |
| 62 | - Confirm busy timing and full refresh completion. |
| 63 | - Confirm partial refresh limitations and deep-sleep current if relevant. |
| 64 | |
| 65 | ## Example |
| 66 | |
| 67 | User: |
| 68 | |
| 69 | ```text |
| 70 | 墨水屏偶尔 busy 一直不释放。 |
| 71 | ``` |
| 72 | |
| 73 | Agent: |
| 74 | |
| 75 | 1. Checks panel part number, busy polarity, reset timing, and power rails. |
| 76 | 1. Compares init sequence with the vendor demo for the exact controller. |
| 77 | 1. Tests full-refresh-only path before enabling partial refresh or sleep. |