Skip to content

Conversation

@mnishiguchi
Copy link
Contributor

This PR adds an AtomVM/ESP32 SPI display driver for the ILI948x family (ILI9486 and ILI9488), based on what I ended up with after tinkering with atomgl.

Piyopiyo PCB

Piyopiyo PCB

Background

I built and tested this on an ESP32-S3 custom PCB (Piyopiyo PCB):

It was validated using:

This work also builds on earlier experiments from a Nerves-based LCD project where we tried a few different 3.5" LCD modules:

What’s included

  • New ILI948x SPI display driver implementation for AtomVM/ESP32
  • Support for both:
    • ILI9486 (RGB565 / 16-bit)
    • ILI9488 (RGB666 over SPI / 18-bit, sent as 3 bytes per pixel)
  • Basic runtime options:
    • compatible: ilitek,ili9486 or ilitek,ili9488
    • rotation
    • color_order: rgb / bgr (default: bgr)
    • enable_tft_invon (optional)

Notes

I don’t have deep experience with ESP32 display driver internals, so I would appreciate a careful review of the SPI/DMA usage and any AtomVM conventions I should follow more closely. Functionally, it has been stable on my hardware and test project so far.

Thanks for taking a look.

@bettio
Copy link
Collaborator

bettio commented Dec 27, 2025

Thanks for opening this PR. It looks good.
On the long term maybe we might think about handling rgb666 colors without converting them to rgb565, but anyway it is good for merge as soon as the REUSE issue is fixed.

bettio added a commit that referenced this pull request Dec 28, 2025
Add support for ILI948x displays (ILI9486 / ILI9488)
@bettio bettio merged commit a59116f into atomvm:main Dec 28, 2025
1 check failed
@mnishiguchi mnishiguchi deleted the ili948x branch December 28, 2025 11:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants