How to get a GC9A01 TFT working with an ESP32-S3-N16R8 module?
Posted: Thu Aug 20, 2026 3:33 pm
"Hello everyone,
I'm trying to connect a 1.28" GC9A01 TFT screen to an ESP32-S3 (N16R8, 44 pins). I've been stuck on this for 3 days and can't get it to work.
The backlight (BL) is working fine since it's hardwired to 3.3V on the module, and some lines briefly appear on the screen, but nothing else.
Here is my current wiring:
VCC 3,3 V
GND GND
SCL/SCK GPIO15
SDA/MOSI GPIO16
DC GPIO9
CS GPIO10
RST écran GPIO11
BL 3,3 V
MISO Not connected
Here is my code:
Has anyone faced this issue before?
I'm trying to connect a 1.28" GC9A01 TFT screen to an ESP32-S3 (N16R8, 44 pins). I've been stuck on this for 3 days and can't get it to work.
The backlight (BL) is working fine since it's hardwired to 3.3V on the module, and some lines briefly appear on the screen, but nothing else.
Here is my current wiring:
VCC 3,3 V
GND GND
SCL/SCK GPIO15
SDA/MOSI GPIO16
DC GPIO9
CS GPIO10
RST écran GPIO11
BL 3,3 V
MISO Not connected
Here is my code:
Code: Select all
#include <Arduino.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_GC9A01A.h>
// Câblage réel du GC9A01
#define TFT_SCK 15
#define TFT_MOSI 16
#define TFT_DC 9
#define TFT_CS 10
#define TFT_RST 11
// Deuxième CS du dashboard, maintenu désactivé
#define TFT_CS2 12
SPIClass displaySPI(FSPI);
Adafruit_GC9A01A tft(
&displaySPI,
TFT_DC,
TFT_CS,
TFT_RST
);
void setup()
{
Serial.begin(115200);
delay(1000);
Serial.println("Demarrage du test GC9A01");
// Désactive le deuxième écran
pinMode(TFT_CS2, OUTPUT);
digitalWrite(TFT_CS2, HIGH);
// SCK, MISO inutilisé, MOSI, CS
displaySPI.begin(TFT_SCK, -1, TFT_MOSI, TFT_CS);
// Test prudent à 10 MHz
tft.begin(10000000);
tft.setRotation(0);
Serial.println("Initialisation terminee");
}
void loop()
{
Serial.println("Rouge");
tft.fillScreen(GC9A01A_RED);
delay(2000);
Serial.println("Vert");
tft.fillScreen(GC9A01A_GREEN);
delay(2000);
Serial.println("Bleu");
tft.fillScreen(GC9A01A_BLUE);
delay(2000);
Serial.println("Blanc");
tft.fillScreen(GC9A01A_WHITE);
delay(2000);
Serial.println("Noir");
tft.fillScreen(GC9A01A_BLACK);
delay(2000);
}