Boards / All-in-one boards

Waveshare ESP32-S3-Touch-LCD-4 (V4.0)

4" 480x480 square ST7701 panel (RGB) with GT911 touch, a TF card slot, RS485, CAN, a PCF85063 RTC, a buzzer and a battery charger. A CH32V003 helper chip handles the resets, backlight, buzzer and battery reading.

Waveshare ESP32-S3-Touch-LCD-4: a 480 by 480 panel, drawn from the preset
Drawn from the preset - no vendor photograph of this board was published.
Design a UI for this boardTest my boardPurchase this boardRead the quick start

Affiliate link: LCD Wizard may earn a commission if you buy through it.

Building for it

A project is made for one toolchain, picked when you start it. For this board you can use three of the four:

Toolchain
Arduino (C++)Every board, every widget and every peripheral here. The most control, and the most to set up. Start a project
MicroPythonChange a screen by editing a file on the board. No compiler once it is flashed. Start a project
ESPHomeAn ST7701 needs a register load written for its particular panel, sent over SPI alongside the RGB bus, and there is no generic one. ESPHome carries the sequence inside its model for a few named boards - the Guition ESP32-4848S040 among them - so pick one of those on the Board tab, or use the Arduino export, which can send every sequence the Display tab offers.
ESP-IDF (C)Espressif's own framework: esp_lcd, the component registry and idf.py, with nothing of Arduino in it. Start a project

At a glance

PartDetail
MakerWaveshare
MCUESP32-S3
Xtensa LX7 dual-core @ 240 MHz, 512 KB SRAM (+ 2-16 MB PSRAM on most modules)
DisplaySitronix ST7701 / ST7701S, 480 x 480 px, RGB565 parallel (DPI), 16-bit colour
TouchGoodix GT911 (capacitive, I2C)
BacklightAlways on, or controlled by the board
Memory16 MB flash, 8 MB octal PSRAM (N16R8)
Graphics libraryGFX Library for Arduino

Display pins

ST7701 / ST7701S on RGB565 parallel (DPI): RGB colour order, inversion off.

SignalPin
DEGPIO 40
VSYNCGPIO 39
HSYNCGPIO 38
PCLKGPIO 41
R0 - R4GPIO 46, 3, 8, 18, 17
G0 - G5GPIO 14, 13, 12, 11, 10, 9
B0 - B4GPIO 5, 45, 48, 47, 21
CS (init only)GPIO 42
SCK (init only)GPIO 2
MOSI (init only)GPIO 1
RESETnot connected

Touch pins

GT911: I2C address 0x5D, 400 kHz, shares the display bus.

SignalPin
SDAGPIO 15
SCLGPIO 7
RESETnot connected

Also on the board

The preset adds these to the Hardware tab with the board, so a sensor can go straight onto the connector.

Check your revision. For the V4.0 board ("Rev4.0" under the screen). Earlier boards (no mark, V1.1, V3.0) have a TCA9554 at 0x20 where this has Waveshare's CH32V003 helper at 0x24, and their touch INT on GPIO 16: this preset will not light them. Pins from Waveshare's V4.0 schematic and their V4 Arduino demos: the ST7701 on RGB with its register load over CS 42, SCL 2, SDA 1 (GFX Library's type 1 table, as their demo), 12 MHz with hsync 10/8/50 and vsync 10/8/20, turned half round as their demo turns it; touch (GT911, 0x5D), the CH32 and the PCF85063 RTC (0x51) on I2C 15/7. The CH32 holds the panel's reset (EXIO3), the touch's reset (EXIO1) and INT (EXIO2), the TF card's D3 (EXIO4), the battery hold (EXIO5), the buzzer (EXIO6), the RTC's interrupt (EXIO7) and the charger's status (EXIO0); the sketch starts it as Waveshare's WS_CH32_IO does. The backlight is the CH32's PWM, left as the CH32 sets it (Waveshare's start-up never writes it), so Set backlight does nothing on this board yet. The TF card is SD_MMC with one data line (CLK 2, CMD 1, D0 4), on the panel's load wires. RS485 sends on GPIO 44 and receives on 43; CAN is TX 6, RX 0 (the BOOT pin): both arrive switched off. The battery reads through the CH32's ADC (x3). The PWRKEY reads on GPIO 16 (low while pressed) and is not in the kit. Not run on a board here. The ESP32-S3-LCD-4 is the same board without touch: set Touch to None.

Designing for it in LCD Wizard

The parts

ST7701 / ST7701S. RGB data plus a 3-wire SPI init sequence. You must wire CS/SCK/MOSI as well, and pick the init sequence your panel wants.

GT911. The address is selected by the INT pin level during reset, so wire INT and RST if you can.

ESP32-S3. The only common Arduino target with a hardware RGB565 LCD peripheral. PSRAM is effectively required for RGB panels.

GFX Library for Arduino. Moshi Liu's library. Best QSPI/AMOLED and RGB coverage. Configured in code.

The pinout on one page

Every pin above, laid out to print and keep beside the bench. Generated from this preset, so it says exactly what the designer writes into lcd_pins.h.

Download the pinout (PNG)Open it as SVG

The same pins as data - board.json and pins.csv - are in the open pinout dataset on GitHub, free to reuse under CC BY 4.0.

From the people who made it

The board’s own documentation. Pinouts on vendor pages do sometimes disagree with the hardware in front of you - where this page and that one differ, trust your board and tell us.

Designs for this board

Nobody has published a design for this board yet. Publish yours from the designer and it appears here and in the gallery.

Waveshare ESP32-S3-Touch-LCD-2.8B2.8" 480x640 IPS panel (ST7701, RGB) with GT911 touch, a TF card slot, QMI8658 IMU, PCF85063 RTC and battery sense. A TCA9554 expander handles the panel's reset and chip select and the touch reset.ESP32-S3 · ST7701 / ST7701S 480 x 640 · GT911 touchPurchase this board
Waveshare ESP32-S3-Touch-LCD-2.8C2.8" 480x480 round IPS panel (ST7701, RGB) with GT911 touch, a TF card slot, QMI8658 IMU, PCF85063 RTC, a buzzer and battery sense. A TCA9554 expander handles the panel's reset and chip select and the touch reset.ESP32-S3 · ST7701 / ST7701S 480 x 480 · GT911 touch
Waveshare ESP32-S3-Touch-LCD-4B4" 480x480 square ST7701 panel (RGB) in an 86-box case, with GT911 touch, an ES8311 speaker codec and ES7210 microphones, a QMI8658 IMU, a PCF85063 RTC and an AXP2101 battery charger. A TCA9554 expander carries the panel's register load, itESP32-S3 · ST7701 / ST7701S 480 x 480 · GT911 touch
Waveshare ESP32-S3-Touch-LCD-77" 800x480 RGB panel with GT911 touch, a TF card slot, RS485, CAN and a sensor input. Same wiring as the 4.3" board, its own timings.ESP32-S3 · Generic RGB565 panel 800 x 480 · GT911 touchPurchase this board
Waveshare ESP32-S3-Touch-LCD-4.34.3" 800x480 RGB panel with GT911 touch, a TF card slot, RS485, CAN and a sensor input. An I/O expander handles the reset lines.ESP32-S3 · Generic RGB565 panel 800 x 480 · GT911 touchPurchase this board
ESP32-S3 + ST7701S 480x480 round480x480 RGB panel that needs a 3-wire SPI init sequence alongside the RGB bus.ESP32-S3 · ST7701 / ST7701S 480 x 480 · CST328 touch

Next