This popular breakout board uses a 2.8” 320x240 TFT display with a large display area (43.2mm x 57.6mm) at good pixel density. It comes with voltage regulators to support both 3.3V and 5V.
Compared to a standard 0.96” 128x64 OLED display, the active screen area is a different league.
Overview
The board uses the older (but still capable and widely supported) ILI9341 display driver and a large 2.8” 320x240 TFT display. The display can be controlled via SPI interface. There is no support for other display interfaces such as parallel.
SD Card Reader
It has a built-in SD-Card Reader on the backside, making it an excellent choice for locally storing/exporting sensor data and simple playback of large video files.
Optional Touch
There are two board versions: touch and non-touch. Both versions differ only by one chip: U2 (the touch controller) is present on touch versions and misses on non-touch versions.
The picture below shows a non-touch version. You can clearly see the solder pads for U2, and the missing touch controller chip:
MSP2807 often refers to the touch version, and MSP2806 to the non-touch version. However, this board design appears to be available from various sources using various model numbers.
SPI Interface
This board uses SPI to control display, touch, and SD Card reader.
Item | Description |
---|---|
Supply Voltage | 3.2-5.0V |
Resolution | 320x240 |
Pixel Size | 0.1335x0.1335mm |
Colors | 262K (18bit) |
Controller | ILI9341 |
Module Size | 50mm x 86mm |
Screen Size | 50mm x 69.1mm |
Visible Size | 43.2mm x 57.6mm |
Weight | 34g (no touch)/43g (touch) |
Pins
Since the breakout board optionally supports touch, there are 14 interface pins. Only nine of them are used for the board and display. The remainder are used by the touch controller (if present).
On the other side of the board, there are four additional through-holes that can be used to access the built-in SD-Card Reader.
Display Interface Pins
Pin | Description |
---|---|
VCC | 3.3V/5V |
GND | ground |
CS | Chip select (low active) |
RESET | Reset |
DC | Data/Command (Data=high, Command=low) |
SDI(MOSI) | SPI MOSI (SDA) |
SCK | SPI Clock (SCLK/SCL) |
LED | Backlight, connect to 3.3V for continuous full brightness, else PWM signal |
SDO(MISO) | SPI MISO |
Touch Pins
These pins can be used for boards that have a touch controller chip (U2). On boards where U2 is not equipped with a chip, they are without function.
Pin | Description |
---|---|
T_CLK | Clock |
T_CS | Chip select (low active) |
T_DIN | Data input |
T_DO | Data output |
T_IRQ | Interrupt |
SD-Card Pins
The SD-Card reader has four connectors on the opposite side:
Pin | Description |
---|---|
SD-CS | Chip select (low active) |
SD_MOSI | SPI MOSI |
SD_MISO | SPI MISO |
SD_CLK | SPI Clock (SCK/SCLK/SCL) |
For examples on how to use the SD-Card reader, refer to this article. The built-in SD-Card reader uses a default SPI interface and can be used like any other dedicated SD-Card reader.
Backlight
The display backlight is controlled via pin LED:
- Fixed: for simplicity or testing, connect CLK to 3.3V for continuous maximum brightness.
- On/Off: for basic on/off control, connect LED to a GPIO output pin. Make sure the pin supplies 3.3V.
- Dimmable: for a dimmable backlight, connect LED to any PWM pin.
Reset
The RESET pin is important only when you intend to reset the display controller manually. Else, pull this pin high (o.e. by connecting it to VCC), ensuring that the device won’t reset itself randomly.
Unless you have a real reason why you wanted to ever manually reset the display controller, connecting RESET to the Reset Pin of your microcontroller appears to be the best value (provided your development board exposes this pin).
This pin is low active, and when pulled low, it resets the display controller. If you do plan to use this pin, these are the typical use cases:
- Sync With Microcontroller: when your microcontroller breakout board exposes its own Reset pin, you can connect RESET to the reset pin of your microcontroller. This way, you don’t waste a precious GPIO and get basic reset behavior: when you reset your microcontroller (i.e. by pressing its Reset button), the display is resetted as well. This may be invaluable because else, when you reset your microcontroller, the display would still continue to show its previous content. This can be highly confusing, especially when you flash the microcontroller with fresh firmware (without removing its power). If the new firmware isn’t drawing content on the display, after the firmware update, the board would still show the old display content, and users could be led to believe the firmare update wasn’t successful.
- Manual: when wiring RESET to any output GPIO, you can control when to reset the display. Make sure the GPIO has a pullup resistor enabled, and pull the GPIO low to reset the display controller.
Programming
The display boards use the ILI9341 controller which is widely supported by many libraries and components:
ESPHome
ESPHome has dedicated support for ILI9341 through the ILI9XXX component.
PlatformIO/Arduino
- Adafruit ILI9341: specific library for this driver, well documented, enables the use of the hardware-neutral Adafruit GFX library on top of it
- TFT_eSPI: generic library for a wide range of TFT displays. Requires slightly confusing selection of the driver type you intend to use
- ucglib: universal library for color TFT displays, well documented, the ILI9341 driver is selected through the classes
Ucglib_ILI9341_18x240x320_SWSPI
andUcglib_ILI9341_18x240x320_HWSPI
.
Materials
Board Schematics
TFT Datasheet
Slow Website?
This website is very fast, and pages should appear instantly. If this site is slow for you, then your routing may be messed up, and this issue does not only affect done.land, but potentially a few other websites and downloads as well. Here are simple steps to speed up your Internet experience and fix issues with slow websites and downloads..
Comments
Please do leave comments below. I am using utteran.ce, an open-source and ad-free light-weight commenting system.
Here is how your comments are stored
Whenever you leave a comment, a new github issue is created on your behalf.
-
All comments become trackable issues in the Github Issues section, and I (and you) can follow up on them.
-
There is no third-party provider, no disrupting ads, and everything remains transparent inside github.
Github Users Yes, Spammers No
To keep spammers out and comments attributable, all you do is log in using your (free) github account and grant utteranc.es the permission to submit issues on your behalf.
If you don’t have a github account yet, go get yourself one - it’s free and simple.
If for any reason you do not feel comfortable with letting the commenting system submit issues for you, then visit Github Issues directly, i.e. by clicking the red button Submit Issue at the bottom of each page, and submit your issue manually. You control everything.
Discussions
For chit-chat and quick questions, feel free to visit and participate in Discussions. They work much like classic forums or bulletin boards. Just keep in mind: your valued input isn’t equally well trackable there.
(content created Jan 18, 2025)