3.5-inch SPI touch display 480*320, Driver IC: ILI9488 Display interface: 4-wire SPI with touch pen

SKU: FA2124-0
Display Diagonal

3.5 inch

Resolution

480 × 320 pixels (RGB)

Driver IC

ILI9488

Display Interface

4-wire SPI

Touch Type

Resistive (4-wire)

Touch Controller

XPT2046

Color Depth

65K / 262K RGB

Operating Voltage (VCC)

3.3V – 5V DC

Logic IO Voltage

3.3V (5V tolerant)

Backlight

White LED (controllable via PWM)

Power Consumption (Full-screen)

Approx. 90mA

Module Dimensions

56.34(W) x 98.00(H) mm

Active Area

48.96 x 73.44 mm

Pin Count

14 Pin (2.54mm pitch header)

Operating Temperature

-20°C to +70°C

Storage Temperature

-30°C to +80°C

Product Overview

The 3.5-inch TFT Touch Display is a vibrant, high-resolution color screen designed to bring graphical user interfaces (GUIs) to your embedded projects. Powered by the ILI9488 driver IC, this display offers a crisp 480×320 pixel resolution (RGB 65K color) . Unlike complex parallel displays that consume many I/O pins, this model communicates via a simple 4-wire SPI interface, requiring as few as 4-5 I/O pins to operate .

This module comes with a resistive touchscreen (using the XPT2046 controller) and includes a stylus pen for precise interaction . An onboard MicroSD card slot is also provided, allowing you to load images, fonts, and data directly from a memory card . The module features a 14-pin 2.54mm pitch header, making it compatible with breadboards and standard female-to-female jumper wires .

Whether you are building an industrial HMI control panel, a smart home touch interface, a portable gaming console, or a data logger, this 3.5-inch display offers the perfect balance of performance and ease of use.

Key Features

  • 3.5-Inch High-Resolution Display: 480×320 pixel resolution with 65K/262K color depth, providing rich graphic capabilities and wide viewing angles .

  • 4-Wire SPI Interface: Uses the SPI serial bus for communication, significantly reducing pin usage compared to parallel interfaces (requires only 4-5 I/O pins) .

  • Integrated Resistive Touchscreen: Includes an XPT2046 touch controller and comes with a stylus pen for precise menu navigation and GUI interaction .

  • Built-in MicroSD Card Slot: Onboard MicroSD card slot for loading images, fonts, and data storage .

  • Wide Voltage Compatibility: Operates with 3.3V – 5V power supply, making it compatible with both 5V (Arduino UNO/Mega) and 3.3V (ESP32/STM32) logic systems .

  • High-Speed SPI Support: Supports SPI transfer rates up to 27MHz for smooth UI animations and real-time data visualization .

  • Adjustable Backlight: Dedicated LED pin allows PWM-based brightness control .

  • Flexible Pin Header: 14-pin 2.54mm pitch header, compatible with standard jumper wires and breadboards .

Technical Specifications

Parameter Operating Value
Display Diagonal 3.5 inch
Resolution 480 × 320 pixels (RGB)
Driver IC ILI9488
Display Interface 4-wire SPI
Touch Type Resistive (4-wire)
Touch Controller XPT2046
Color Depth 65K / 262K RGB
Operating Voltage (VCC) 3.3V – 5V DC
Logic IO Voltage 3.3V (5V tolerant)
Backlight White LED (controllable via PWM)
Power Consumption (Full-screen) Approx. 90mA
Module Dimensions 56.34(W) x 98.00(H) mm
Active Area 48.96 x 73.44 mm
Pin Count 14 Pin (2.54mm pitch header)
Operating Temperature -20°C to +70°C
Storage Temperature -30°C to +80°C

Pinout & Interface Guide

The 3.5-inch ILI9488 SPI module typically features 14 pins (2.54mm pitch) . The following pins are categorized by function for easier reference:

LCD Display Pins

Pin Signal Name Function Description Connection to MCU Notes
1 VCC Power Supply (3.3V-5V) 3.3V / 5V
2 GND Ground GND
3 CS LCD Chip Select (Active LOW) Any Digital Pin (e.g., D10)
4 RESET LCD Reset (Active LOW) Any Digital Pin (e.g., D9)
5 DC (RS) Data/Command Select Any Digital Pin (e.g., D8)
6 SDI (MOSI) SPI Data In (Master Out Slave In) MOSI (e.g., D11 / GPIO23)
7 SCK SPI Clock SCK (e.g., D13 / GPIO18)
8 LED Backlight Control 3.3V, 5V, or PWM Pin High = ON
9 SDO (MISO) SPI Data Out (Not required for basic display) Leave unconnected or MISO

Resistive Touch Pins (XPT2046)

Pin Signal Name Function Description Connection to MCU
10 T_CLK Touch SPI Clock Any Digital Pin (e.g., D6)
11 T_CS Touch Chip Select (Active LOW) Any Digital Pin (e.g., D7)
12 T_DIN Touch SPI Data In (MOSI) Any Digital Pin (e.g., D4)
13 T_DO Touch SPI Data Out (MISO) Any Digital Pin (e.g., D5)
14 T_IRQ Touch Interrupt (Active LOW) Any Digital Pin (e.g., D3)

Note: The SD card slot uses the standard SPI bus and requires a dedicated Chip Select (SD_CS) pin. Common configurations use GPIO4 or pin 4 for SD_CS .

Usage Guide

Hardware Connection

The 14-pin 2.54mm header allows easy connection using female-to-female jumper wires:

LCD Pin Signal ESP32 GPIO (Recommended) Arduino UNO (Recommended) Notes
1 VCC 3.3V / 5V 5V Power
2 GND GND GND Ground
3 CS 15 10 TFT_CS
4 RESET 4 9 TFT_RST
5 DC 2 8 TFT_DC
6 SDI (MOSI) 23 11 Connect to MOSI pin
7 SCK 18 13 Connect to SCK pin
8 LED 3V3 or PWM 3V3 Backlight
11 (T_CS) Touch CS 21 7 TOUCH_CS
13 T_DO 19 12 Touch MISO
SD_CS SD Card CS 4 4 MicroSD Card Slot

Software Setup (Arduino IDE / ESP32)

The best library for this display is TFT_eSPI by Bodmer, which provides excellent performance and supports the ILI9488 over 4-wire SPI.

1. Install Required Libraries

  • Open Arduino IDE → Sketch → Include Library → Manage Libraries

  • Search for and install:

    • TFT_eSPI by Bodmer (for the ILI9488 display)

    • XPT2046_Touchscreen (for resistive touch, if needed)

2. Configure TFT_eSPI (User_Setup.h)

After installing the library, navigate to the TFT_eSPI folder and edit the User_Setup.h file .

Uncomment or add the following configuration:

cpp
// 1. Select your display driver
#define ILI9488_DRIVER

// 2. Define display resolution
#define TFT_WIDTH  320
#define TFT_HEIGHT 480

// 3. Define SPI pins (match your wiring)
#define TFT_MISO  19   // (SDO) - Optional, leave unconnected if not reading
#define TFT_MOSI  23   // (SDI) - SPI Data In
#define TFT_SCLK  18   // (SCK) - SPI Clock
#define TFT_CS    15   // Chip Select (CS)
#define TFT_DC    2    // Data/Command (DC)
#define TFT_RST   4    // Reset (RESET)

// 4. Define Touch (XPT2046) pin
#define TOUCH_CS 21    // Touch Chip Select

// 5. SPI Frequency (Optional)
#define SPI_FREQUENCY  27000000   // 27MHz

3. Initialization Example Code

cpp
#include <SPI.h>
#include <TFT_eSPI.h>

// Create display object
TFT_eSPI tft = TFT_eSPI();

void setup() {
  Serial.begin(115200);
  
  // Initialize the display
  tft.init();
  tft.setRotation(1);          // Adjust screen orientation
  tft.fillScreen(TFT_BLACK);   // Clear screen
  
  tft.setTextColor(TFT_WHITE, TFT_BLACK);
  tft.setTextSize(2);
  tft.drawString("Hello, ILI9488!", 50, 200);
}

void loop() {
  // Your code here
}

Important Notes

  • SPI Bus Sharing: The display, touch controller, and MicroSD card all share the same SPI bus (MOSI, MISO, SCK). Each device requires a unique CS (Chip Select) pin .

  • Touch Calibration: For resistive touch screens, calibration is mandatory for accuracy. Run a calibration sketch to get the raw ADC values (min/max for X/Y axes) and map them to the 480×320 screen resolution .

  • Backlight Control: The LED pin can be controlled by PWM to adjust brightness. Connect to a PWM-capable pin and use analogWrite() .

Q: What is the advantage of SPI over parallel displays?

SPI uses only 4-5 I/O pins, saving your microcontroller’s precious pins for other functions like sensors and actuators. This makes them much easier to wire and integrate .

Q: Is this screen compatible with Arduino Uno, Mega, ESP32, or STM32?

Yes. The module works with all these boards. For 5V boards (Arduino Uno/Mega), the logic is 5V tolerant; for 3.3V boards (ESP32/STM32), connect VCC to 3.3V .

Q: What is the difference between ILI9486 and ILI9488?

The ILI9488 is the newer, improved version of the ILI9486, offering better performance and display quality . The primary functional difference is interface support: the ILI9486 natively supports SPI while the ILI9488 supports both 16-bit parallel and SPI interfaces .

Q: I wired everything correctly, but the screen is white/blank!

This typically indicates the display is powered but not initialized:

  1. Ensure the correct driver (#define ILI9488_DRIVER) is selected in User_Setup.h .

  2. Verify all wiring connections, especially VCC, GND, MOSI, SCK, and CS.

  3. Check the SPI frequency setting (try lowering it to 16MHz if unstable).

  4. Ensure the RESET pin is correctly connected and toggled.

Q: The touch screen is not responding or inaccurate.

Resistive touch requires calibration:

  1. Ensure TOUCH_CS is defined in User_Setup.h .

  2. Run a calibration sketch to get the min/max ADC values for X/Y axes.

  3. Map the raw ADC values to the 480×320 screen resolution .

Q: The SD card and touch screen are both not working together.

This is a common SPI bus conflict. Ensure each device has a unique CS (Chip Select) pin and that only one device is selected at a time. Check that your code de-asserts (sets HIGH) the CS of the other device before communicating with the one you need.

Q: Why are the touch coordinates reversed?

You may need to swap X/Y or invert one axis in your code. In the TFT_eSPI User_Setup.h, you can adjust TOUCH_ORIENTATION to correct axis swapping and inversion.

Q: What can I build with this 3.5-inch touch display?

Popular applications include:

  • Industrial HMI/HMI: Touch control panels for machinery and automation

  • Smart Home Control Panels: Central touch interface for lights, HVAC, and security

  • Portable Gaming Devices: Retro game emulators and handheld consoles

  • Data Loggers: Visualizing sensor data (temperature, humidity) graphically

  • Desktop Event Notifiers: Display system alerts and notifications

Q: Where can I find more code examples and libraries?

The best resources are:

  • TFT_eSPI Library: The most popular Arduino library for ILI9488 displays

  • GitHub: “Bodmer/TFT_eSPI” for extensive examples and documentation

  • Adafruit ILI9341: The ILI9488 is command-compatible with the ILI9341 family