Waveshare · ESP32-S3 · 2.8" · 240×320

Waveshare ESP32-S3 Touch LCD 2.8" specifications

The Waveshare ESP32-S3-Touch-LCD-2.8 is a compact 2.8-inch SPI display board that doubles as a small audio device. Next to the 240×320 ST7789 panel and a 5-point CST328 capacitive touch controller, it has a PCM5101 audio decoder with a power amplifier and a speaker connector — Waveshare suggests an 8 Ω 2 W speaker.

The ESP32-S3R8 brings 8 MB of PSRAM and 16 MB of flash, and the board adds a PCF85063 real-time clock with a backup battery header, a QMI8658 6-axis IMU, a microSD slot and a lithium battery charger with a power button and a volume button.

Its touch controller sits on its own I2C bus, separate from the RTC and IMU — a small design detail that leaves the main I2C bus calmer for your own sensors.

Screen
2.8" · 240×320
Chip
ESP32-S3
Memory
16 MB flash, 8 MB PSRAM
Input
capacitive touch

Key features

  • 2.8-inch 240×320 TFT, ST7789, 260 cd/m²
  • 5-point capacitive touch (CST328)
  • PCM5101 audio with amplifier and speaker connector
  • ESP32-S3R8: 8 MB PSRAM, 16 MB flash
  • PCF85063 RTC, QMI8658 IMU, microSD
  • LiPo charging, power and volume buttons

Specifications

Waveshare ESP32-S3 Touch LCD 2.8" technical specifications
ManufacturerWaveshare
Screen size2.8"
Resolution240×320 px
Colour depth16-bit
Display controllerST7789 (SPI)
Display interfaceSPI
TouchCST328 (I2C, on its own separate bus)
MicrocontrollerESP32-S3
ModuleESP32-S3R8
CPU clock240 MHz
Internal SRAM512 KB
PSRAM8 MB
Flash16 MB
Wi-FiYes
BluetoothYes
Display typeTFT, 262K colours, max 260 cd/m²
TouchCapacitive 5-point, CST328 (own I2C bus)
AudioPCM5101 decoder, amplifier, speaker connector (8 Ω 2 W suggested)
RTCPCF85063 with backup battery header
IMUQMI8658 6-axis
Battery3.7 V lithium via MX1.25, charge manager
AntennaOn-board ceramic, IPEX Gen 1 option
Dimensions73.06 × 50.54 mm
Development platforms (manufacturer)Arduino IDE, ESP-IDF (VS Code plugin)

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.8" GPIO pinout
GPIOFunction
GPIO 1I2C_SDA (CST328 touch, separate bus)
GPIO 2TOUCH_RST (CST328)
GPIO 3I2C_SCL (CST328 touch, separate bus)
GPIO 4TOUCH_INT (CST328)
GPIO 5Backlight (LCD_Backlight_PIN)
GPIO 6PWR_KEY input
GPIO 7PWR_Control (power control)
GPIO 9RTC_INT (PCF85063)
GPIO 10I2C_SCL (RTC/IMU main bus)
GPIO 11I2C_SDA (RTC/IMU main bus)
GPIO 12IMU_INT2 (QMI8658)
GPIO 13IMU_INT1 (QMI8658)
GPIO 14SD_SCK (microSD)
GPIO 16SD_MISO (microSD)
GPIO 17SD_MOSI (microSD)
GPIO 19USB D- (on the header)
GPIO 20USB D+ (on the header)
GPIO 21SD_CS (microSD)
GPIO 38I2S_LRCK (PCM5101 audio)
GPIO 39TFT_RST
GPIO 40TFT_SCLK
GPIO 41TFT_DC
GPIO 42TFT_CS
GPIO 45TFT_MOSI
GPIO 47I2S_DIN (PCM5101 audio)
GPIO 48I2S_BCK (PCM5101 audio)

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.8"
PinCapabilitiesNote
GPIO 0GPIO, BOOTBoot button
GPIO 8GPIO, PWMFree / possibly BAT_ADC, needs verification
GPIO 15GPIO, PWMOn the 12-pin header (spare IO15) — ADC2, not usable as analog input while WiFi is on
GPIO 18GPIO, PWMOn the 12-pin header (spare IO18)
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 15, 18, 43, 44 (IO15, IO18, TX, RX)

    The header also carries USB D- / D+ (GPIO 19 / 20) and the I2C bus (GPIO 11 / 10)

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

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

  • I2C connector — GPIO 11, 10 (SDA, SCL)

    Same I2C bus as the RTC and the IMU (0x51, 0x6B, 0x7E taken) — the touch has its own bus

Good to know before you start

  • Free pins on the 12-pin header are GPIO 15 and 18. GPIO 15 is ADC2 and cannot read analog values while Wi-Fi is on.
  • The main I2C bus (GPIO 11/10) is shared with the RTC and IMU (0x51, 0x6B, 0x7E taken); touch has its own bus.
  • UART0 on the header only works when the USB-to-UART port is not connected.
  • The battery power button needs software support to switch the board off.

What it is good for

  • •Internet radio and audio players with a touch UI
  • •Alarm clocks using the RTC and speaker
  • •Handheld controllers
  • •Compact smart home panels

LVGL support in LCD Ultra Pro

LVGL and LCD Ultra Pro support for the Waveshare ESP32-S3 Touch LCD 2.8"
Driver statusMatched to the manufacturer’s official demo, compile-tested
Arduino exportComplete LVGL 8.4 project with the display driver
USB Live previewNo
Orientations0°, 90°
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

Does the ESP32-S3-Touch-LCD-2.8 have a speaker output?

Yes. A PCM5101 decoder with a power amplifier drives a speaker connector; Waveshare suggests an 8 Ω 2 W speaker.

Which touch controller does it use?

A 5-point CST328 capacitive controller on its own I2C bus.

Which pins are free?

GPIO 15 and 18 on the 12-pin header, plus GPIO 0 (BOOT) and UART0 when the USB-to-UART port is unplugged.

How big is the board?

73.06 × 50.54 mm according to Waveshare.

Sources

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

Last updated: