Page 1 of 1

How to get a GC9A01 TFT working with an ESP32-S3-N16R8 module?

Posted: Thu Aug 20, 2026 3:33 pm
by Alama32
"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:

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);
}
Has anyone faced this issue before?