Waveshare · ESP32-S3 · 2.1" · 480×480

Waveshare ESP32-S3 Touch LCD 2.1" round specifications

The ESP32-S3-Touch-LCD-2.1 is a round 2.1-inch display with 480×480 pixels — four times the pixel count of the popular 1.28-inch round boards — driven by an ST7701 over a 16-bit RGB interface. Touch comes from a CST820 capacitive controller on I2C.

Waveshare packs the 75 mm round board with extras: a PCF85063 real-time clock with backup battery header, a QMI8658 6-axis IMU, a buzzer, a lithium battery charger with power button, and a TCA9554 I/O expander. The ESP32-S3R8 provides 8 MB of PSRAM and 16 MB of flash for smooth full-screen graphics.

Two USB-C ports — native USB and a CH343P USB-to-UART — plus an IPEX connector for an external antenna make it a well-equipped base for a smart thermostat or a round control panel.

Screen
2.1" · 480×480
Chip
ESP32-S3
Memory
16 MB flash, 8 MB PSRAM
Input
capacitive touch

Key features

  • Round 2.1-inch, 480×480, ST7701 over RGB
  • Capacitive touch (CST820)
  • ESP32-S3R8: 8 MB PSRAM, 16 MB flash
  • PCF85063 RTC, QMI8658 IMU, buzzer
  • LiPo charging with power button
  • Two USB-C ports, TF slot, IPEX antenna option

Specifications

Waveshare ESP32-S3 Touch LCD 2.1" round technical specifications
ManufacturerWaveshare
Screen size2.1"
Resolution480×480 px
Colour depth16-bit
Display controllerST7701 (RGB Parallel + 3-wire SPI init)
Display interfaceRGB565 Parallel (DPI) + SPI init sequence
TouchCST820 (I2C)
MicrocontrollerESP32-S3
ModuleESP32-S3R8
CPU clock240 MHz
Internal SRAM512 KB
PSRAM8 MB
Flash16 MB
Wi-FiYes
BluetoothYes
Display typeTFT, round, RGB interface (RGB565 in practice)
TouchCapacitive, CST820 (I2C), single touch
RTCPCF85063 with backup battery header
IMUQMI8658 6-axis
AudioOn-board buzzer
Battery3.7 V lithium via MX1.25, charge manager, power button
USBUSB-C native + USB-C CH343P USB-to-UART
Diameter75 mm
Development platforms (manufacturer)Arduino IDE, ESP-IDF 5.3.1+

GPIO pinout

The GPIOs the board itself uses — display, touch and on-board peripherals — as published in the manufacturer’s documentation.

Waveshare ESP32-S3 Touch LCD 2.1" round GPIO pinout
GPIOFunction
GPIO 1LCD_MOSI (init SPI)
GPIO 2LCD_CLK (init SPI)
GPIO 3LCD_DATA12 (RGB)
GPIO 4BAT_ADC (battery voltage)
GPIO 5LCD_DATA0 (RGB)
GPIO 6Backlight (LCD_Backlight_PIN)
GPIO 7I2C_SCL (touch / RTC / IMU / IO expander)
GPIO 8LCD_DATA13 (RGB)
GPIO 9LCD_DATA10 (RGB)
GPIO 10LCD_DATA9 (RGB)
GPIO 11LCD_DATA8 (RGB)
GPIO 12LCD_DATA7 (RGB)
GPIO 13LCD_DATA6 (RGB)
GPIO 14LCD_DATA5 (RGB)
GPIO 15I2C_SDA (touch / RTC / IMU / IO expander)
GPIO 16TOUCH_INT (CST820)
GPIO 17LCD_DATA15 (RGB)
GPIO 18LCD_DATA14 (RGB)
GPIO 19USB D- (on the header, usable as GPIO only without native USB)
GPIO 20USB D+ (on the header, usable as GPIO only without native USB)
GPIO 21LCD_DATA4 (RGB)
GPIO 38LCD_HSYNC
GPIO 39LCD_VSYNC
GPIO 40LCD_DE
GPIO 41LCD_PCLK
GPIO 42SD_MISO (microSD; MOSI / SCK share GPIO 1 / 2 with the LCD init bus, CS on EXIO4)
GPIO 45LCD_DATA1 (RGB)
GPIO 46LCD_DATA11 (RGB)
GPIO 47LCD_DATA3 (RGB)
GPIO 48LCD_DATA2 (RGB)

Source: www.waveshare.com. Always check against your board revision before wiring.

Free GPIOs and connectors

These GPIOs are not used by the display, touch or on-board peripherals, so you can wire your own sensors, buttons or relays to them.

Free GPIO pins of the Waveshare ESP32-S3 Touch LCD 2.1" round
PinCapabilitiesNote
GPIO 0GPIO, BOOTBOOT button — also on the 12-pin header
GPIO 43/TXGPIO, UART_TXUART0 TX — on the UART connector and the 12-pin header (only when the USB-to-UART Type-C port is not connected)
GPIO 44/RXGPIO, UART_RXUART0 RX — on the UART connector and the 12-pin header (only when the USB-to-UART Type-C port is not connected)
  • 12-pin header — GPIO 0, 43, 44 (IO0, TX, RX)

    The header also carries USB D- / D+ (GPIO 19 / 20) and the I2C bus (GPIO 15 / 7) — GPIO 0 is the BOOT button (keep it high at power-up)

  • UART connector — GPIO 43, 44 (TX, RX)

    Only when the USB-to-UART Type-C port is not connected

  • I2C connector — GPIO 15, 7 (SDA, SCL)

    Same I2C bus as the touch controller, the IO expander, the RTC and the IMU (addresses 0x15/0x5D, 0x20, 0x51, 0x6B, 0x7E taken)

Good to know before you start

  • The I2C bus is busy: addresses 0x15, 0x20, 0x51, 0x6B and 0x7E are taken by touch, expander, RTC and IMU — choose sensors with other addresses.
  • The TCA9554 expander is fully used internally and not exposed.
  • UART0 on the header only works when the USB-to-UART port is not connected.
  • Free GPIOs are scarce: plan expansion over I2C.

What it is good for

  • •Smart thermostats with a clock
  • •Round smart home controllers
  • •Instrument-style gauges at high resolution
  • •Alarm clocks using the RTC and buzzer

LVGL support in LCD Ultra Pro

LVGL and LCD Ultra Pro support for the Waveshare ESP32-S3 Touch LCD 2.1" round
Driver statusMatched to the manufacturer’s official demo, compile-tested
Arduino exportComplete LVGL 8.4 project with the display driver
USB Live previewNo
Orientations0°
Brightness controlHardware backlight dimming

Pick this board in the editor and the canvas matches its exact resolution and shape. Build the interface with widgets, add events without code, try it in Live Preview, then export it as a ready-to-compile Arduino project. See the documentation for the workflow.

Frequently asked questions

What resolution is the Waveshare 2.1-inch round display?

480×480 pixels, driven by an ST7701 over a 16-bit RGB interface.

Does it have a real-time clock?

Yes, a PCF85063 RTC with a header for a backup battery.

Which I2C addresses are already used?

0x15, 0x20, 0x51, 0x6B and 0x7E (touch, I/O expander, RTC and IMU).

Does it support multi-touch?

No. The CST820 controller reports a single touch point.

Sources

Specifications cross-checked against the manufacturer’s documentation (last checked 2026-10-27):

Last updated: