ST7789 TFT Display

Sitronix

ST7789 is a color TFT display controller commonly used in compact display modules. ST7789-based modules are available in different resolutions and configurations, making them suitable for graphical interfaces, dashboards, data visualization and embedded control panels.

Specifications

Controller ST7789 family
Color capability 262K colors
Maximum documented resolution 240RGB × 320
Pixel formats RGB444, RGB565, RGB666
Common interface SPI on display modules
Controller I/O supply range Variant-dependent; ST7789V listed at 1.65–3.3 V VDDI
Display supply range Variant-dependent; ST7789V listed at 2.4–3.3 V VDD
Transparency Notice

Some links on this page are affiliate links. If you purchase through them, Embedded Nerd may earn a small commission at no additional cost to you. This helps support the website and allows us to continue creating free tutorials and guides. Thank you for your support!

Related Topics

Introduction

The ST7789 is a color TFT display controller widely used in compact graphical display modules.

ST7789-based displays are commonly connected to microcontrollers through SPI and can provide a practical color interface for embedded projects. They are available in several physical sizes and resolutions, so the exact characteristics of a display module depend on the panel and breakout board used.

The controller is particularly common in projects using Arduino and ESP32, where it can be used for graphical user interfaces, sensor dashboards, menus, status screens and data visualization.

The ST7789 controller itself should not be confused with a single standardized display module. Different ST7789 modules can have different resolutions, pinouts, power arrangements and initialization requirements.

Key Features

  • Color TFT display controller
  • 262K-color capability
  • Integrated display RAM
  • RGB444, RGB565 and RGB666 pixel formats
  • Supports multiple display interfaces
  • Commonly used with SPI-based breakout modules
  • Available in multiple display resolutions
  • Suitable for graphical embedded interfaces
  • Supported by popular Arduino display libraries
  • Commonly used with ESP32 projects

Applications

ST7789 displays are suitable for applications such as:

  • ESP32 graphical interfaces
  • Arduino display projects
  • IoT dashboards
  • Sensor data visualization
  • Portable instruments
  • Robotics interfaces
  • Home automation controllers
  • Embedded control panels
  • Status displays
  • Data loggers
  • Educational electronics
  • Maker and embedded projects

Pinout

The exact pinout depends on the ST7789 display module.

A typical SPI breakout can expose connections such as:

Pin Function
VCC Module power
GND Ground
SCL / CLK SPI clock
SDA / MOSI SPI data
CS Chip select
DC Data / command control
RST Hardware reset
BL / LED Backlight control

Not every ST7789 module exposes all of these pins. Some modules omit CS, while others include additional connections for features such as touch input or microSD storage.

Always check the documentation for the specific display board before wiring it to a microcontroller.

How It Works

The ST7789 receives display commands and pixel data from the host controller and uses its internal display memory to control the TFT panel.

When an image or graphical element is sent to the display, the microcontroller transfers the corresponding pixel data through the configured interface. With an SPI breakout, this normally involves sending commands and pixel data over the SPI bus while using additional control signals such as DC, CS and RST when provided by the module.

For color graphics, RGB565 is commonly used because each pixel requires 16 bits of data while still providing a useful range of colors.

A 240 × 240 image using RGB565 requires:

240 × 240 × 2 = 115,200 bytes

of pixel data.

ST7789 SPI Interface

SPI is commonly used by ST7789 breakout boards because it allows graphical data to be transferred using relatively few microcontroller pins.

A typical SPI connection uses:

  • SPI clock
  • MOSI
  • Chip select, when provided
  • Data/command control
  • Reset, when provided

The exact wiring depends on the display module and the microcontroller board.

ST7789 modules can therefore be used with different microcontrollers as long as the required electrical interface and software configuration are supported.

Compatible Boards

ST7789 displays can be used with microcontrollers that provide a compatible interface and suitable electrical levels.

Common development platforms include:

  • Arduino-compatible boards
  • ESP32 development boards
  • Other SPI-capable microcontrollers

The exact compatibility depends on the display breakout rather than the ST7789 controller alone.

In particular, the display module’s power requirements and logic-level compatibility should be checked before connecting it to a board.

ST7789 with ESP32

The ST7789 is a practical display controller for ESP32 projects because the ESP32 provides hardware SPI interfaces suitable for transferring graphical data.

Typical projects include:

  • Wi-Fi status displays
  • Sensor dashboards
  • Graphical menus
  • Portable instruments
  • IoT control panels
  • Game interfaces
  • Robotics displays

The ESP32 can also process sensor data or network information while the ST7789 handles the graphical output.

For a project using an existing Embedded Nerd display, the SSD1306 OLED Display provides a simpler monochrome alternative when a color TFT is not required.

Common ST7789 Resolutions

ST7789-based modules are available with different physical resolutions.

Common examples include:

  • 240 × 240
  • 240 × 280
  • 240 × 320
  • 320 × 170

These resolutions are examples of ST7789-based display modules rather than a single universal ST7789 module specification.

The Sitronix ST7789V controller family is documented for 240RGB × 320 addressing, while commercial breakout boards can expose different portions or configurations of the controller’s display memory.

This is why the display dimensions normally need to be specified when initializing an ST7789 library.

RGB565

RGB565 is one of the most commonly used color formats with ST7789 displays.

Each pixel is represented using 16 bits:

  • 5 bits for red
  • 6 bits for green
  • 5 bits for blue

RGB565 is particularly useful for microcontrollers with limited RAM because it requires only two bytes per pixel.

Technical Details

The ST7789V family is listed by Sitronix as a 262K-color display driver with RAM and a 240RGB × 320 resolution.

Sitronix lists the ST7789V with:

  • VDDI: 1.65–3.3 V
  • VDD: 2.4–3.3 V
  • 262K-color capability
  • Integrated RAM
  • Multiple interface options

These are controller-level specifications. A complete breakout board can have additional circuitry, such as voltage regulation or level shifting, which changes how the finished module should be powered.

For this reason, the specifications printed for a particular ST7789 display module should take priority over generic controller specifications.

Display Initialization

One of the most important considerations when using an ST7789 module is correct initialization.

The software normally needs to know the display’s:

  • Width
  • Height
  • Rotation
  • Color order
  • Initialization sequence
  • X/Y offsets where applicable
  • SPI configuration

Two displays using the ST7789 controller can therefore require different initialization parameters.

Arduino Library

Arduino projects can use the Adafruit ST7735 and ST7789 Library together with the Adafruit GFX Library.

The display initialization must match the actual resolution and configuration of the module.

The Arduino Library Manager can be used to install the Adafruit ST7735 and ST7789 library and its required dependencies.

TFT_eSPI

TFT_eSPI is another widely used graphics library for ST7789 displays, particularly in ESP32 projects.

Its configuration system provides ST7789-specific setup files where parameters such as display dimensions, color order, SPI pins and control pins can be selected.

This makes it important to select a configuration matching the exact ST7789 display being used.

Why Choose ST7789?

The ST7789 is useful when a project needs a compact color graphical display rather than a simple text or monochrome screen.

Its main practical advantages include:

  • Color graphics
  • SPI connectivity on many breakout boards
  • Support for 16-bit RGB565 graphics
  • Availability in different display sizes
  • Good support in common embedded graphics libraries
  • Suitable for ESP32 and Arduino projects
  • Practical for dashboards and graphical interfaces

The main limitation is that the ST7789 name does not identify one standardized module. The exact display hardware must therefore be checked before wiring or programming.

Project Ideas

ST7789 displays can be used as the visual interface for many Embedded Nerd projects.

ESP32 Sensor Dashboard

Combine an ESP32 with sensors and an ST7789 display to show live measurements, system status and graphical indicators.

Portable Environmental Monitor

Create a portable device that displays environmental measurements such as temperature, humidity or pressure.

ESP32 Wi-Fi Status Display

Use an ESP32 to connect to a Wi-Fi network and display connection information, signal status and other system data.

Graphical Menu System

Build a reusable graphical interface with menus, settings and status screens.

Miniature Embedded Game

Use the color display together with buttons, a joystick or another input device to create a small graphical game.

Documentation

The most reliable source for controller-level information is the official Sitronix documentation.

For Arduino development, the Adafruit GFX and Adafruit ST7735 and ST7789 libraries provide a practical software interface for compatible displays.

For ESP32 projects, TFT_eSPI provides ST7789-specific configurations and driver support.

When configuring a display, always identify the exact module resolution and pinout first. Generic ST7789 settings should not automatically be assumed to work with every breakout board.

The Embedded Nerd product catalog includes components that can be useful alongside an ST7789 display:

Frequently Asked Questions

What is an ST7789 display?

ST7789 is a display controller family used in color TFT display modules. The controller provides display memory and receives commands and pixel data from a host microcontroller.

Is ST7789 an SPI display?

Many ST7789 breakout modules use SPI, making SPI the most common interface encountered in Arduino and ESP32 projects. The controller itself supports several interface configurations, so the exact interface depends on the module.

Can I use an ST7789 with an ESP32?

Yes. ST7789 breakout displays with a compatible SPI interface can be used with ESP32 development boards. The exact wiring and software configuration depend on the display module.

Can I use an ST7789 with Arduino?

Yes. ST7789-compatible displays are supported by Arduino libraries such as the Adafruit ST7735 and ST7789 Library. The display resolution and initialization parameters must match the module.

Does every ST7789 display have the same resolution?

No. ST7789-based modules are sold with different resolutions and physical configurations. The exact resolution should be checked for the specific display module.

What is RGB565?

RGB565 is a 16-bit pixel format that allocates 5 bits to red, 6 bits to green and 5 bits to blue. It is commonly used with ST7789 displays because it provides a practical balance between color depth and memory usage.

Why is my ST7789 display blank?

A blank screen can result from incorrect wiring, power, SPI configuration, reset or DC connections, incorrect display dimensions, wrong initialization parameters or an incompatible library configuration.

Does an ST7789 module require a library?

The microcontroller needs software capable of communicating with and controlling the display. Arduino projects can use libraries such as Adafruit ST7735 and ST7789 or TFT_eSPI. The exact library configuration depends on the display module.

Summary

The ST7789 is a widely used color TFT display controller for compact graphical embedded displays.

Its support for color graphics, integrated display RAM and common SPI-based breakout modules makes it particularly useful for Arduino, ESP32 and other microcontroller projects.

The most important point when working with an ST7789 display is to identify the exact module. Resolution, pinout, power requirements, offsets and initialization settings can vary between different ST7789-based displays.

For reliable projects, configure the software according to the specific display module rather than relying only on the ST7789 controller name.