ESP32 S3 VGA

Introduction

The ESP32 S3 VGA board is a ESP32 S3 based microcontroller board with VGA output on board.
It’s an update of my former implementations of extension boards based of the ESP32 Mini Kit. The S3 microcontroller has some changed peripherals so the old implementation can’t be used with it.

The new board is a complete solution with refreshed hardware. It comes with the Microcontroller chip on board, two buttons and USB-C. On top of these changes the board supports upto 16 bit color instead of 14 bit before. The use of 16 bit modes is a little bit limited currently due to bugs on the S3 silicon.

With the built-in 8MB of PSRAM with an octal SPI interface the framebuffer can be stored in the extended memory and allow upto 1280x720p resolutions. The library is experimental at the moment and extended as we develop additional features.

Hardware

Specification

ESP32 S3 N8R8
8MB SPI RAM
8MB Flash
16 bit VGA DAC

Pins

pinleftright side
1VBUS (USB 5V)GND
25V after fuse3.3V
3GNDTX
40 (right button)RX
5342
6EN (pulled up, left button)41
7GND40
83.3V39
938
1037
1136
1235
1346 (LED)
1447
1548
1645

VGA DAC Pins

FunctionPin
R0 (LSB)4
R15
R26
R37
R4 (MSB)8
G09
G110
G211
G312
G413
G514
B015
B116
B217
B318
B421
H-Sync1
V-Sync2

Schematic

Software

The current software support is limited to the Arduino development environment. Any other contribution is welcome.

Requirements

  1. ESP32 Microcontroller support needs to be installed
    If not present yet go to File -> Preferences and add to Additinal Bards Manager URLs the url https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json
Adding ESP32 support
  1. Adafruit GFX Library is required for some of the examples. This can be installed using the Library Manager in Sketch -> Include Library ->Manage Libraries…
Installing Adafruit GFX
  1. Copy the ESP32 S3 VGA library into your Arduino library folder (details in section Library below)

Library

The alpha version of the Arduino Library can be found in the ESP32 S3 VGA Github repository it’s not registered with the library manager yet as the structure isn’t finalized yet. However it can be placed in the Arduino library folder. It provides simple examples that show how it can be used in combination with the Adafruit GFX library. Using Adafruit GFX allows to port existing code quite easily and provides a vast pool of existing projects.
The library can be used directly for maximum performance, but the it will be limited in functionality to keep it maintainable.

Examples

The examples will be listed in File -> examples -> bitluni ESP32 S3 VGA as soon the target board is set to ESP32 S3 Dev Module in Tools -> Board -> ESP32 Arduino

Upload configuration

In Tools the following options need to be selected to be able to use the VGA board properly:

Required:
Board: ESP32S3 Dev Module
CPU Frequency: “240MHz (WiFi)
Flash Size: “8MB (64Mb)”
PSRAM: “OPI PSRAM”

Recommended:
USB Mode: “CDC and JTAG” (for USB serial and upload)
USB CDC On Boot: “Enabled”

Pick the port that appears when plugging in the device. It should show “(ESP32S3 Dev Module)” or similar if another board library claimend the driver.

Uploading / Troubleshooting

After the first upload which will happen on testing the device in my lab the upload should work straight forward. However if the device is somehow bricked or in a boot loop it can be forced into programming mode by keeping button 0 (right from the USB) pressed while pressing reset (left button), then releasing botton 0. That might have changes to the port so make sure you check the selection there.

Possible causes of problems might be a wrong configuration (check above), bad USB cable, wrong port selection, problems with attached hardware.

The board is equipped with a poly fuse. If that is tripped please disconnect the board and give it a moment to recover.

Support

Please check out our Discord. There are plenty of helpful people even when I’m sleeping. You can ping me with @bitluni or writ me a driect message.