TFT / Color
Interfacing ILI9341 2.8" TFT TFT / Color with STM32 Blue Pill
What is the ILI9341 2.8" TFT?
ILI9341 2.8" TFT practical reference
The ILI9341 2.8-inch TFT display is a versatile color screen that brings vibrant visuals and touch interactivity to your projects. With a 320×240 resolution and support for 65K colors, it delivers crisp, bright images suitable for GUIs, dashboards, and multimedia applications.
The display is built around the ILI9341 driver chip, which includes a built-in video RAM buffer and supports SPI communication. A resistive touchscreen, controlled by an XPT2046 controller, enables intuitive user interaction. Many modules also feature a microSD card slot for storing images and assets.
Available in both SPI and 8-bit parallel interface variants, the SPI version is the most common and requires only a few I/O pins to operate. The module operates at 3.3V–5V, making it compatible with a wide range of microcontrollers. Onboard level-shifting circuitry ensures safe operation with both 3.3V and 5V logic.
Note: This entry covers the SPI version of the display, which is the most widely available and easiest to interface with. Parallel versions exist but are less common and require more I/O pins.
Key specifications
- Resolution: 320 × 240 pixels (QVGA)
- Color depth: 65K colors (RGB 16-bit 565)
- Display type: TFT, transmissive
- Touchscreen: Resistive (XPT2046 controller)
- Interface: SPI (4-wire) or 8-bit parallel
- Operating voltage: 3.3V – 5V (with onboard level shifter)
- Logic voltage: 3.3V
- Backlight: 4 white LEDs
- Active area: 43.2 × 57.6 mm
- Module dimensions: ~50 × 86 mm
- Operating temperature: -20°C to 60°C
- Storage temperature: -30°C to 70°C
- Extra features: microSD card slot
Pinout and connection notes
Critical usage notes:
- SPI vs Parallel: Most modules are SPI versions. Verify your module's interface before wiring — SPI uses fewer pins and is recommended for most projects.
- Level shifting: While many modules include onboard level shifters and accept 5V power, the logic pins are 3.3V. On 5V boards like the Uno, the onboard level shifter handles this — but check your specific module.
- Backlight: The LED pin controls the backlight. Connect to a PWM-capable pin for brightness control, or tie to VCC for always-on.
- Touch controller: The resistive touch uses an XPT2046 controller over SPI. Touch pins share the same SPI bus as the display but use a separate CS pin.
- Library support: The Adafruit_ILI9341 and TFT_eSPI libraries are the most widely used and well-documented options.
- SD card: If your module has an SD slot, it uses a separate SPI CS pin — typically Pin 4 on Arduino — and shares MOSI/MISO/SCK with the display.
- VCC: Power — 3.3V to 5V (onboard regulator/level shifter)
- GND: Ground
- CS: SPI chip select (active low)
- RESET: Reset, active low
- DC/RS: Data/Command select — high for data, low for command
- SDI/MOSI: SPI data in (Master Out Slave In)
- SCK: SPI clock
- LED: Backlight control — high to enable, or connect to 3.3V
- SDO/MISO: SPI data out (optional, for reading)
- T_CS: Touch SPI chip select (XPT2046)
- T_CLK: Touch SPI clock
- T_DIN: Touch SPI data in
- T_DO: Touch SPI data out
- T_IRQ: Touch interrupt — goes low when touch detected
Integration checklist
- Confirm the exact part number and breakout-board revision.
- Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
- Check controller pin assignments and bus address or interface mode against the example code.
- Power up with external loads disconnected, then test signals before full integration.
- If readings or communication fail, check power and ground first, then pin mapping, interface settings, and library initialization.
Troubleshooting and reproducibility
Record the board used, wiring, library/version, supply arrangement, and measured behavior. Use the selected board-specific wiring example as the source of truth. Never assume visually similar modules share identical voltage tolerance or pin order.
Setting Up ILI9341 2.8" TFT with STM32 Blue Pill
Library
Adafruit_ILI9341 by Adafruit
STM32duino: Boards Manager → add STM32duino URL → install "STM32 MCU based boards" → Library Manager → search "Adafruit ILI9341" → Install
Wiring
| Component pin | STM32 Blue Pill pin | Note |
|---|---|---|
| VCC | 3.3V | |
| GND | GND | |
| CS | PA4 | |
| RESET | PA3 | |
| DC/RS | PA2 | |
| SDI/MOSI | PA7 | |
| SCK | PA5 | |
| LED | 3.3V | Or PWM pin |
| SDO/MISO | PA6 | Optional |
| T_CS | PB0 | Touch chip select |
Swipe sideways to see every column →
- Blue Pill is 3.3V-native — matches the display's logic level directly.
- Flash over SWD with an ST-Link for reliable programming and debug output.
- The STM32's hardware SPI is fast enough for smooth GUI rendering — use the full 72 MHz clock.
Related Components
GDEW0154
Compact e-ink panel for badges and low-power info displays.
LCD1602 I2C
The classic 16x2 text display made simple with I2C — just 4 wires and you're up and running.
LCD2004 I2C
The bigger 20x4 text display — more room for menus, logs, and multi-field status screens.
ST7789 1.3" TFT
Compact 240×240 IPS display with vivid colours and wide viewing angles.
Related Guides & Projects
STM32 Low-Power Modes: Sleep, Stop, and Standby Explained (With Working Code)
A practical guide to STM32's three-tier low-power system — Sleep, Stop, and Standby — with working STM32duino code, measured current draw on a Blue Pill, and a battery-powered project example.
STM32 Blue Pill Pinout: Every GPIO, ADC, and Alternate Function Explained
A complete STM32F103C8T6 Blue Pill pinout reference: every GPIO port, ADC channel, timer, and communication bus mapped, plus the 5V-tolerance and clone-board considerations that affect wiring decisions.
STM32 Black Pill Pinout: Every GPIO, ADC, and Peripheral Explained
Complete STM32 Black Pill (STM32F411CEU6) pinout reference: GPIO ports, 12-bit ADC, timers/PWM, USART, SPI, I2C, and the 3.3V-only pins to watch out for.
STM32 Nucleo Pinout: Arduino Headers, Morpho Connectors, and GPIO Explained
Complete STM32 Nucleo pinout reference: Arduino-compatible headers vs ST Morpho connectors, the built-in ST-LINK debugger, ADC voltage limits, and every peripheral pin mapped.