displayif

displayif — C hardware bus engine & usermod drivers.

displayif High-performance C hardware bus engines (SPI, I2C, Intel 8080, RGB/DPI, MIPI DSI) and native usermod display drivers for MicroPython and CircuitPython.

Live Pure-Python Device

Hardware Bus Architecture

Accelerated C usermods registering directly into the MicroPython interpreter.

spibus & i2cbus

High-frequency hardware SPI and I2C panel buses for displaydev.BusDisplay with DMA transfer capability.

i80bus Parallel Bus

8080-style 8-bit / 16-bit parallel bus accelerated via ESP32-S3 LCD peripheral, RP2 PIO+DMA engines, i.MX RT FlexIO, and SAMD51 GPIO.

dotclockframebuffer (RGB)

Parallel RGB dot-clock hardware framebuffer backend supporting large 480x480, 800x480, and 1024x600 IPS displays.

mipidsi & picodvi

MIPI DSI panels on the ESP32-P4 and i.MX RT1176, and DVI output from RP2040 PIO or RP2350 HSTX.

Building MicroPython Firmware with displayif

One manifest line on MicroPython 1.29
# Add one line to the manifest your build already uses:
include("/path/to/displayif/manifest.py")

# Then build as usual, e.g. esp32 after sourcing ESP-IDF's export.sh:
cd micropython/ports/esp32
make BOARD=ESP32_GENERIC_S3

The build picks the modules your port supports; on unix that is usdl2 and jpegio. Your own FROZEN_MANIFEST and builds older than 1.29 are in the README, and micropython-pydevices has presets that build displayif with the rest of the stack.

MicroPython Port & Bus Support Matrix

Port / SoC Architecture SPI / I2C Bus i80 Parallel Bus RGB DotClock DSI / DVI
ESP32-S3 / ESP32-P4 (Espressif) ✓ (SPI DMA) ✓ (LCD Peripheral) ✓ (RGB Peripheral) ✓ (MIPI DSI, P4)
RP2040 / RP2350 (Raspberry Pi) ✓ (SPI DMA) ✓ (PIO + DMA) — ✓ (PicoDVI)
i.MX RT1062 / RT1176 ✓ (LPSPI) ✓ (FlexIO) ✓ (eLCDIF) ✓ (MIPI DSI, RT1176)
SAMD51 (Microchip) ✓ (SERCOM) ✓ (GPIO) — —

Read more

Depth lives in the repository

Newcomer's guide

The board-to-backend map, the firmware boundary, and the lifecycle rules.

Port matrix

Every native module on every port, with its status and constructor notes.

Bring-up

Getting a new panel lit, and the symptoms that point at each mistake.

pydevices

The board configs that hand these buses to displaydev.