← micropython-hardware docs

Pydisplay display boards (bring-up notes)

Bring-up notes for pydisplay board_configs — panel resolution, touch, interface module, and quirks — for boards exercised in the July 2026 DotClock / mipidsi / busdisplay (spibus / i80bus) + LVGL (lv_test_timer) campaign.

Paths are under micropython-hardware board_configs/fbdisplay/<name>/ unless a busdisplay/… path is given. Device roles (eager / lazy): device-matrix.md (Pages). Native drivers live in pydevices displayif (displayif.DotClockFramebuffer or mipidsi). Soft-reset / scanout lessons: displayif docs/SOFT_RESET_AND_BRINGUP.md.

Typical MicroPython flash for the ESP32-S3 RGB boards below: ESP32_GENERIC_S3 + SPIRAM_OCT (8 MB octal PSRAM). P4 uses its own board variant (C6_WIFI in inventory fixture #1).


Summary table

Product / nickname board_config dir Resolution Panel / bus Touch Expander / IO Inventory #
Waveshare ESP32-P4-WIFI6-Touch-LCD-4B esp32-p4-wifi6-touch-lcd-4b 720×720 ST7703 MIPI DSI (mipidsi) GT911 #1
Adafruit Qualia S3 + TL040HDS20 qualia_tl040hds20 (+ CP under cp/fbdisplay/qualia_tl040hds20) 720×720 RGB-666→565 DotClock FT6x36 @ 0x48 PCA9554 @ 0x3f #8
Waveshare ESP32-S3-Touch-LCD-4.3 esp32-s3-touch-lcd-4_3 800×480 ST7262 RGB DotClock GT911 @ 0x5D CH422G (not yet a Detect fixture)
LILYGO T-RGB 2.1″ round t-rgb_480 480×480 ST7701 RGB DotClock CST820 (cst8xx) XL9535 (not yet a Detect fixture)
Waveshare ESP32-S3-Touch-LCD-7 (sku 27078) esp32-s3-touch-lcd-7 800×480 ST7262 RGB DotClock GT911 @ 0x5D CH422G (not yet a Detect fixture)
LILYGO T-Embed busdisplay/spi/t-embed 170×320 ST7789 SPI (spibus) — (rotary) GPIO46 power (not yet a Detect fixture)
LILYGO T-HMI busdisplay/i80/t-hmi 240×320 ST7789 I80 (i80bus) XPT2046 SPI GPIO14/10 power (not yet a Detect fixture)
Waveshare RP2040-Touch-LCD-1.28 busdisplay/spi/rp2040-touch-lcd-1.28 (+ CP under cp/busdisplay/spi/rp2040-touch-lcd-1.28) 240×240 round GC9A01A SPI (spibus / FourWire) CST816 (cst8xx / cst816) (not yet a Detect fixture)
Adafruit Metro M7 + 2.8″ TFT Touch Shield (1947) busdisplay/spi/metro_m7_tft_touch_shield_1947 240×320 ILI9341 SPI (spibus SoftSPI or SPI0) FT6206 @ 0x38 Onboard AirLift (NINA) (not yet a Detect fixture)
ST NUCLEO-H743ZI2 + Adafruit 2.8″ TFT Touch Shield (1947) busdisplay/spi/nucleo_h743zi2_tft_touch_shield_1947 240×320 ILI9341 SPI (spibus SPI1 / SoftSPI) FT6206 @ 0x38 #25

Per-board detail

Waveshare ESP32-P4-WIFI6-Touch-LCD-4B

Adafruit Qualia S3 RGB666 + TL040HDS20

Waveshare ESP32-S3-Touch-LCD-4.3

LILYGO T-RGB 480 (2.1″ round)

Waveshare ESP32-S3-Touch-LCD-7 (sku 27078)

LILYGO T-Embed (SPI ST7789)

LILYGO T-HMI (I80 ST7789)

Waveshare RP2040-Touch-LCD-1.28 (round GC9A01A)

Adafruit Metro M7 + 2.8″ TFT Touch Shield (cap, product 1947)

ST NUCLEO-H743ZI2 + Adafruit 2.8″ TFT Touch Shield (cap, product 1947)


DotClock knobs (cross-cutting)

Do not conflate these (full write-up in displayif docs/SOFT_RESET_AND_BRINGUP.md):

Knob Role
Bounce buffer DRAM staging for PSRAM DPI — always on for large panels
Double panel FBs Tear-free present when LVGL blits the panel FB
auto_refresh=False (MP) FBDisplay.show()refresh() promote; CP Qualia’s True needs a separate Bitmap

Smoke: after fill_rect, call display_drv.show(). LVGL via display_driver already sets refresh_cb=display_drv.show.


Seeded 2026-07-20 from the pydisplay + displayif bring-up chat; T-Embed / T-HMI busdisplay notes expanded 2026-07-21; Waveshare RP2040-Touch-LCD-1.28 added 2026-07-21; Adafruit Metro M7 + TFT Touch Shield 1947 added 2026-07-21; ST NUCLEO-H743ZI2 + TFT Touch Shield 1947 added 2026-07-21. Add a row when a new display board is verified; note inventory fixture numbers when Detect has captured the silicon.