feat: add support for Waveshare 3.52" EPD (EPD3IN52)#254
Closed
cogwheel886 wants to merge 3 commits intorust-embedded-community:mainfrom
Closed
feat: add support for Waveshare 3.52" EPD (EPD3IN52)#254cogwheel886 wants to merge 3 commits intorust-embedded-community:mainfrom
cogwheel886 wants to merge 3 commits intorust-embedded-community:mainfrom
Conversation
added 3 commits
April 11, 2026 01:53
- 240x360 resolution, UC8179 controller - Hardware-verified LUT waveform tables (GC and DU) - Alternating R22/R23 waveform tables in display_frame() - IS_BUSY_LOW: true, verified on Raspberry Pi 5 with lgpio - Includes Display3in52 type alias for graphics feature - 56 unit tests passing (54 original + 2 new)
- Fix clear_frame() sending 8x too many bytes (WIDTH*HEIGHT → buffer_len) - Fix refresh command: 0x12 → 0x17 + 0xA5 matching Python reference - Rename EPD3in52 → Epd3in52 (naming convention)
Author
|
Consolidating into #255 which now includes the UC8253 (3.52") driver alongside the SSD1680 (2.13" V4) driver. Both share interface.rs changes and have been through the same hardware-verified fix passes. Keeping them in separate PRs risks divergence — the 3.52" driver fixes in #255 are not present on this branch. |
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Waveshare 3.52" E-Paper Display (EPD3IN52)
Adds driver support for the Waveshare 3.52" e-paper display (360×240px, UC8179 controller).
Display characteristics
This display has an unusual refresh sequence not seen in other supported displays —
display_frame()must explicitly send LUT waveform tables before triggering refresh. Most Waveshare displays handle this internally; the 3.52" does not. Additionally, the waveform tables alternate between two configurations (R22/R23) on each refresh cycle via alut_flag: boolfield on the driver struct.Hardware verification
IS_BUSY_LOW: trueconfirmed empiricallyWhat's included
command.rs: 17 SPI commands for the UC8179 controllerconstants.rs: 10 LUT waveform tables (5× GC global clear, 5× DU differential update)mod.rs: Full driver implementation with alternating waveform logicDisplay3in52type alias under#[cfg(feature = "graphics")]epd_sizeandcommand_addrNot yet implemented
update_partial_frame()— markedtodo!(), hardware validation pendingconstants.rsbut not yet wired into a fast-refresh code pathReferences
Hardware validation ongoing — opening as draft pending display refresh test on target hardware.