# [AYUDA] ST7789 240x240 (GMT130-V1.0, sin pin CS) no muestra imagen — backlight enciende, pantalla queda en negro sólido
Resumen del problema
Tengo un módulo TFT ST7789, 240x240px, modelo GMT130-V1.0 (7 pines: GND, VCC, SCK, SDA, RES, DC, BLK — sin pin CS expuesto, SUPUESTAMENTE atado internamente) conectado a un ESP32-S3-WROOM-1 (N16R8, 16MB flash, 8MB PSRAM octal).
El backlight enciende correctamente (luz blanca visible), pero la pantalla nunca dibuja nada — se queda completamente en negro sólido. Este comportamiento ha sido idéntico desde el principio, con dos módulos físicos distintos del mismo modelo, descartando que sea una pantalla dañada.
Hardware
- MCU: ESP32-S3-WROOM-1, N16R8 (16MB flash, 8MB PSRAM octal), placa devkit genérica de 38 pines, doble USB-C (uno UART/CH340, otro USB nativo).
- Pantalla: GMT130-V1.0, driver ST7789, interfaz SPI, 240x240px. En la parte trasera del módulo se ven 3 resistencias SMD, 1 capacitor y un IC (U1) — circuito de soporte/backlight integrado.
- Pines actuales de conexión (probados con multímetro, continuidad confirmada en todos):
- VCC → 3V3 del ESP32
- GND → GND del ESP32
- SCK → GPIO 15
- SDA (MOSI) → GPIO 16
- RES → GPIO 17
- DC → GPIO 18
- BLK → dejado sin conectar (flotando) en la última prueba; antes probado también atado directo a 3V3
- CS → no existe en el módulo (se pasa -1 a la librería)
Mediciones realizadas
- VCC del módulo a GND del módulo: 3.31V (correcto)
- BLK del módulo a GND del módulo: 3.31V (correcto, cuando estaba conectado a 3V3)
- Continuidad GND del módulo ↔ GND del ESP32: confirmada, sin problema
- Backlight: enciende (luz blanca visible) en todas las pruebas, tanto con BLK a 3V3 como con BLK flotando
Qué he probado, en orden
- Proyecto completo (LVGL + WiFi + servidor async + LittleFS + UI generada con SquareLine Studio) usando
Adafruit_ST7789+Adafruit_GFX. Resultado: pantalla negra. - Descarté que fuera el código completo armando un sketch aislado mínimo (solo botones + buzzer + pantalla, sin LVGL ni WiFi). Los botones y el buzzer funcionan perfectamente. La pantalla sigue en negro.
- Cambié
tft.init(240, 240, SPI_MODE2)aSPI_MODE0. Sin cambio. - Revisé y confirmé con multímetro que VCC, GND y BLK reciben voltaje correcto (~3.3V) directamente en las patitas soldadas del módulo, no solo en el lado del ESP32.
- Confirmé continuidad real (no solo voltaje) entre GND del módulo y GND del ESP32.
- Cambié de pines varias veces (10/11/12/13 → 15/16/17/18) por posibles conflictos de pines especiales del ESP32-S3 (GPIO20 es USB D+, GPIO3 es strapping pin). Sin cambio en ningún caso.
- Probé con BLK conectado directo a 3V3 y luego BLK completamente desconectado/flotando (según la documentación de este módulo, dejarlo flotando debería encender el backlight por defecto — y efectivamente enciende en ambos casos, pero la imagen nunca aparece).
- Probé dos módulos físicos distintos del mismo modelo (GMT130-V1.0), exactamente el mismo resultado en ambos.
- Probé cavleando directamente los pines del módulo (en vez de usar jumpers ) para descartar falsos contactos. Sin cambio.
- Probé conectando cables directo del módulo al ESP32 (bypass parcial del breadboard). Sin cambio.
- Encontré un hilo en el foro de Arduino reportando incompatibilidad conocida entre la librería
Adafruit_ST7789y este módulo específico sin pin CS, con sugerencia de usarTFT_eSPIen su lugar. Migré a TFT_eSPI con unUser_Setup.hpersonalizado (driverST7789_DRIVER,TFT_INVERSION_ON, pines correctos,TFT_CSasignado a un GPIO libre sin conexión física ya que el módulo no tiene CS real). Resultado: tampoco muestra nada.
Código actual (sketch de prueba con TFT_eSPI)
```cpp
#include <TFT_eSPI.h>
#include <SPI.h>
TFT_eSPI tft = TFT_eSPI();
void setup() {
Serial.begin(115200);
delay(500);
Serial.println("=== TEST TFT_eSPI ===");
tft.init();
tft.setRotation(1);
tft.fillScreen(TFT_RED);
delay(1000);
tft.fillScreen(TFT_GREEN);
delay(1000);
tft.fillScreen(TFT_BLUE);
delay(1000);
tft.fillScreen(TFT_BLACK);
tft.setCursor(20, 100);
tft.setTextSize(3);
tft.setTextColor(TFT_WHITE);
tft.println("LISTO");
}
void loop() {}
User_Setup.h usado (TFT_eSPI)
#define USER_SETUP_INFO "GEBE_GMT130_ST7789"
#define ST7789_DRIVER
#define TFT_RGB_ORDER TFT_RGB
#define TFT_INVERSION_ON
#define TFT_WIDTH 240
#define TFT_HEIGHT 240
#define TFT_MOSI 16
#define TFT_SCLK 15
#define TFT_RST 17
#define TFT_DC 18
#define TFT_CS 9 // pin libre, el módulo no tiene CS real
#define TFT_MISO -1
#define LOAD_GLCD
#define LOAD_FONT2
#define LOAD_FONT4
#define LOAD_FONT6
#define LOAD_FONT7
#define LOAD_FONT8
#define LOAD_GFXFF
#define SMOOTH_FONT
#define SPI_FREQUENCY 27000000
## Otros datos que podrían ser relevantes
- Al correr el proyecto completo (con PSRAM activada para LVGL), el Monitor Serial mostró estos errores antes de que solucionara otros problemas no relacionados a la pantalla:
E (886) octal_psram: PSRAM chip is not connected, or wrong PSRAM line mode
E (887) esp_psram: PSRAM enabled but initialization failed. Bailing out.
...
E (890) quad_psram: PSRAM chip is not connected, or wrong PSRAM line mode
Esto ocurrió tanto en modo OPI como QSPI. No he confirmado si esto afecta de alguna forma al bus SPI de la pantalla o es completamente independiente (el chip está etiquetado como N16R8, debería traer PSRAM octal).
- Probé también `Flash Mode: DIO` (visto en el log de arranque `mode:DIO`) — no he probado aún cambiarlo a `QIO`.
- El reset por software (`rst:0x10 RTCWDT_RTC_RST`, watchdog) ocurría en el proyecto completo antes de identificar que era por el bloqueo del WiFi en `setup()` buscando una red inexistente — ya resuelto, no relacionado al problema de pantalla actual.
## Pregunta concreta
¿Alguien ha logrado hacer funcionar específicamente el módulo **GMT130-V1.0 (ST7789, sin CS)** con un **ESP32-S3**? ¿Hay algo específico de este combo (módulo sin CS + ESP32-S3 + TFT_eSPI o Adafruit_ST7789) que requiera una configuración distinta a la estándar? ¿Podría ser un problema de **timing/velocidad SPI** demasiado alta para este módulo en específico, o algo relacionado al **modo SPI (MODE0 vs MODE2 vs MODE3)** que no he probado todavía?
Cualquier ayuda es muy bienvenida — llevo varios días en esto y ya descarté alimentación, continuidad, dos módulos físicos distintos, y dos librerías distintas. Gracias de antemano.
O si alguien tiene un proyecto archivo .INO con el que pueda probar esto me harian un gran favor