Drive ILI9341 (8-bit parallel) using ESP32-S3 (ESP32-S3-DevKitC-1) in Arduino Framework

This post show how to driver 2.8" 320x240 ILI9341 TFT with 8-bit parallel interface using Espressif ESP32-S3-DevKitC-1, in Arduino framework, using TFT_eSPI library.

Connection: 

For my 2.8 inch 320x240 ili9341 TFT with 8/16BIT parallel interface, it's set in 16-bit data bus mode by default.

To make it in 8-bit mode:
Solder R4 with 0Ω resistor or short circuit directly,
and disconnect R5.
In 8-bit data bus mode, use DB8~DB15 data pin.


Connection between Espressif ESP32-S3-DevKitC-1 and
2.8" 320x240 ili9341 TFT in 8-bit parallel interface:

    ESP32-S3 GPIO
    |                  |
    V	               V
	+------------+
	| CLK	T_CS |	
	| F_CS	PEN  |
	| MOSI	MISO |
	| NC	GND  | GND
    GND	| GND	VDD  | 3V3
    3V3	| VDD	BL   | 3V3
	| SDCS	DB15 | 3
    14	| DB14	DB13 | 8
    13	| DB12	DB11 | 18
    12  | DB10	DB9  | 17
    11	| DB8	DB7  |
	| DB6	DB5  |
	| DB4	DB3  |
	| DB2	DB1  |
	| DB0	RST  | 46
    10  | RD	WR   | 16
    9	| RS	CS   | 15
	+------------+
	ILI9341 TFT (parallel i/f)

Library:

Install TFT_eSPI in Arduino IDE's Library Manager.

Prepare user setup file, refer to Tips section in TFT_eSPI page:

If you load a new copy of TFT_eSPI then it will overwrite your setups if they are kept within the TFT_eSPI folder. One way around this is to create a new folder in your Arduino library folder called "TFT_eSPI_Setups". You then place your custom setup.h files in there. After an upgrade simply edit the User_Setup_Select.h file to point to your custom setup file.

mySetup14_ILI9341_Parallel.h, my custom setup.h file in new created "TFT_eSPI_Setups" folder.
// See SetupX_Template.h for all options available
#define USER_SETUP_ID 14

#define TFT_PARALLEL_8_BIT


#define ILI9341_DRIVER

/*
// ESP32 pins used for the parallel interface TFT
#define TFT_CS   33  // Chip select control pin
#define TFT_DC   15  // Data Command control pin - must use a pin in the range 0-31
#define TFT_RST  32  // Reset pin

#define TFT_WR    4  // Write strobe control pin - must use a pin in the range 0-31
#define TFT_RD    2

#define TFT_D0   12  // Must use pins in the range 0-31 for the data bus
#define TFT_D1   13  // so a single register write sets/clears all bits
#define TFT_D2   26
#define TFT_D3   25
#define TFT_D4   17
#define TFT_D5   16
#define TFT_D6   27
#define TFT_D7   14
*/
// ESP32 pins used for the parallel interface TFT
#define TFT_CS   15  // Chip select control pin
#define TFT_DC   9   // Data Command control pin - must use a pin in the range 0-31
#define TFT_RST  46  // Reset pin

#define TFT_WR   16  // Write strobe control pin - must use a pin in the range 0-31
#define TFT_RD   10

#define TFT_D0   11  // Must use pins in the range 0-31 for the data bus
#define TFT_D1   17  // so a single register write sets/clears all bits
#define TFT_D2   12
#define TFT_D3   18
#define TFT_D4   13
#define TFT_D5   8
#define TFT_D6   14
#define TFT_D7   3

#define LOAD_GLCD   // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2  // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4  // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6  // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7  // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:.
#define LOAD_FONT8  // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
#define LOAD_GFXFF  // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts

#define SMOOTH_FONT


Edit the User_Setup_Select.h file to point to my custom setup file.

//#include <User_Setup.h>           // Default setup is root library folder
#include <../TFT_eSPI_Setups/mySetup14_ILI9341_Parallel.h>

Then you can run TFT_eSPI examples.


related:
Drive 320x240 ILI9341 SPI TFT using ESP32-S3 (NodeMCU ESP-S3-12K-Kit) using TFT_eSPI library, in Arduino Framework.


Comments

Popular posts from this blog

MicroPython/ESP32-C3 + 1.8" 128x160 TFT ST7735 SPI, using boochow/MicroPython-ST7735 library.

CameraWebServe: ESP32-S3 (arduino-esp32) + OV5640 camera module