Écran TFT SPI (ST7789)

Fiche de référence de l'écran TFT SPI à contrôleur ST7789 utilisé pour afficher le Pong : caractéristiques, brochage et bibliothèque.

Documentation réalisée à 60% 60
Créée par :  Alban Petit

Vue d’ensemble

L’écran TFT de l’atelier est un petit afficheur couleur piloté par un contrôleur ST7789 (parfois ILI9341 selon les modèles), relié à la XIAO ESP32S3 par le bus SPI. C’est la surface d’affichage du Pong puis du Snake.

Le SPI est choisi ici pour sa vitesse : dessiner une image à ~60 images/seconde demande un débit qu’un bus lent (I2C) ne fournirait pas. Voir le concept Les bus de communication.

Caractéristiques

Élément Valeur
Contrôleur ST7789 (ou ILI9341)
Résolution typique 240 × 240 ou 240 × 320 px
Couleurs 16 bits (65 536 couleurs, RGB565)
Interface SPI (écriture seule côté ESP32)
Tension 3,3 V (logique et alimentation)

Brochage SPI

Broche écran Rôle Broche XIAO ESP32S3 (atelier)
VCC Alimentation 3,3 V 3V3
GND Masse GND
SCL / SCK Horloge SPI D9 (GPIO8)
SDA / MOSI Données CPU vers écran D10 (GPIO9)
CS Chip Select (sélection de l’écran) GND (sélection permanente)
DC Commande / donnée D8 (GPIO7)
RST / RESET Reset matériel D7 (GPIO44)
BLK / LED Rétroéclairage 3V3 direct

Sur l’écran, les broches SPI sont souvent sérigraphiées SCL et SDA comme un bus I2C : il s’agit bien de l’horloge et des données SPI.

Le module de l’atelier a un connecteur de 14 broches, dans l’ordre : VCC, GND, CS, RESET, DC, SDI (MOSI), SCK, LED, SDO (MISO), puis les cinq broches de la dalle tactile (T_CLK, T_CS, T_DIN, T_DO, T_IRQ), non utilisées. Vérifiez toujours cet ordre sur la sérigraphie de votre module : il varie d’un fabricant à l’autre.

  MISO non câblé

L’écran ne renvoie pas de données utiles : seul le sens ESP32 vers écran (MOSI) est utilisé. La broche MISO du SPI reste libre.

Bibliothèque

L’écran se pilote avec la bibliothèque Adafruit ST7735 and ST7789 (adafruit/Adafruit ST7735 and ST7789 Library dans PlatformIO), qui s’appuie sur Adafruit GFX pour le dessin. Aucun fichier de configuration : les broches sont passées dans le code.

Adafruit_ST7789 tft(&SPI, -1, D8, D7);      // CS (aucun), DC, RESET

SPI.begin(D9, -1, D10, -1);                 // SCK, MISO (aucun), MOSI, CS
tft.init(240, 320, SPI_MODE3);              // mode 3 : CS relié à GND

Le CS étant relié en permanence à GND, l’écran doit être initialisé en SPI mode 3 (horloge à l’état haut au repos). La mise en place complète est détaillée dans le tutoriel Écran SPI et game loop.

  Écran noir : les trois vérifications

Un écran qui reste noir vient presque toujours de l’une de ces trois causes : rétroéclairage (BLK) non alimenté, broches passées à SPI.begin() différentes du câblage réel (SCK sur D9, pas sur D8), ou tft.init() appelé sans SPI_MODE3 alors que CS est relié à GND. Un écran ILI9341 se pilote avec la bibliothèque Adafruit ILI9341, pas avec celle du ST7789. Diagnostic complet : Dépanner un écran TFT SPI qui n’affiche rien.

Sources

Besoin d'aide ?