Matthias "bitluni" Balwierz's Espressif ESP32-S3 VGA Board Pushes Some Serious Pixel Power

Offering support of resolutions up to 1280×720 at eight-bit or 800×600 at 16-bit color depths, this board is a graphical wonder.

Gareth Halfacree
10 months agoHW101 / Displays

German maker Matthias "bitluni" Balwierz has built an Espressif ESP32-based development board with a difference: it offers a high-resolution 16-bit color depth video output: the ESP32 S3 VGA.

"A few years ago I made a VGA library and a few VGA boards for the [Espressif] ESP32," Balwierz recalls. "Many people loved it, but I'm not a manufacturer and I sold only a limited account. Many things have changed since then: the ESP32 API [Application Programming Interface] was updated a few times, and since the ESP32-S3 came out many people asked me to make a new version of the board since it wasn't compatible with my library any more. I decided it's time to give you what you want and this is how the ESP32 S3 VGA was born."

The bitluni VGA board is back, this time revised and updated for the Espressif ESP32-S3. (📹: bitluni)

The refreshed design is, as Balwierz says, designed around the Espressif ESP32-S3 module, a dual-core 32-bit microcontroller built on Tensilica's Xtensa LX7 CPU cores running at up to 240MHz and with 512kB of on-chip static RAM (SRAM). This module is mounted on Balwierz's resistor-ladder-packed carrier, made for breadboard compatibility and boasting a USB Type-C connector for power and data with a classic VGA video connector at the other end for connection to a monitor.

"I [hadn't] really looked at the technical reference manual [for the ESP32-S3]," Balwierz says of the process of getting the software updated to match the new hardware, "and once I did I realized why my old library wasn't working for the S3: Espressif decided to remove the parallel I2S mode and make a peripheral for cameras and LCDs."

That turned out to be a stroke of luck, offering a bus which could operate at twice the speed of the older ESP32 VGA boards — unlocking higher-resolution graphics at a 16-bit color depth. "On top of that," Balwierz adds, "the RGB mode has extra signals for H-sync and V-sync (horizontal and vertical synchronization]. This is amazing."

The exact resolutions you can get out of the board depend on how much memory you have available. For modules with only the on-chip SRAM, only the lower resolutions will work; for the modules with additional off-chip pseudo-static RAM (PSRAM), it's possible to shift the framebuffer out of SRAM and gain room for resolutions up to 800×600 with a 60Hz refresh rate and a 16-bit color depth — rising to 1280×720 by dropping to an eight-bit color depth, though with 1024×768 recommended as the highest resolution without glitches.

Balwierz has published a "first base code" for the project on GitHub under an unspecified open source license; more information is available in the video above.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles