TFT con ST7789VI control MCU

Hola a todos,

Llevamos unos días una compi y yo dando vueltas a la programación de una pantalla TFT que hemos comprado, en este caso sin touch. La pantalla no incluye shield para comunicación SPI, debe comunicarse por MCU de 8 bis. El controlador es un ST7789VI y no he encontrado mucha información en la web para programar este modelo con MCU.

Hemos utilizado ya varias librerías específicas envío los enlaces a continuación ajustando la programación a nuestro controlador, ya que una de ellas también trae opción para el ST7735.

(1) https://github.com/adafruit/Adafruit-ST7735-Library
(2) https://github.com/ananevilya/Arduino-ST7789-Library

También esta otra librería más genérica:

(3) https://github.com/telamon/utft

Hemos probado diferentes ejemplos de los que incluye esta librería pero nuestra TFT se queda en blanco. Hemos probado con Arduino UNO y con Arduino MEGA sin resultado en ningún caso. También hemos probado a realizar el programa más sencillo posible para comprobar si funciona únicamente tratando de cambiar el color de fondo de la TFT, sería algo así utilizando la segunda librería:

 #include <Arduino_ST7789.h> // Hardware-specific library for ST7789

   #define TFT_CS        10 
   #define TFT_RST        9 // Or set to -1 and connect to Arduino RESET pin
   #define TFT_DC         8

 Arduino_ST7789 tft = Arduino_ST7789(TFT_CS, TFT_DC, TFT_RST);

 void setup() {
   Serial.begin(9600);
   Serial.print(F("Hello! ST77xx TFT Test"));
 
   tft.init(320, 240);   
   Serial.println(F("Initialized"));
   tft.fillScreen(BLACK);
   delay(500);
 }

 void loop(void) {
    tft.fillScreen(GREEN);
 }

A ver si podéis echarnos una mano para ver qué estamos haciendo mal o qué puede fallar.

¡Gracias!

esquma TFT.JPG

pinesTFT.JPG

Sube algunas fotos para ver cómo es que estás conectando la pantalla

Aquí envío dos fotos, una con el esquema de conexión de los pines y otra es una foto del montaje, aunque no sé si se podrá diferenciar algo en esta foto. El pin que está sin conectar (de color blanco) es el pin 19 (FMARK).

Lee el privado que te he enviado y por favor edita tu post #2 para que las imágenes se visualicen en el post.

Esa pantalla funciona con interface de 8 bits (DB0-DB7). El chip driver ST7789XX, es el antecesor del ILI9341; estás intentando usarlo con librerías que hacen uso del bus SPI, por eso no funciona.

Desconozco si existen librerías para arduino para ese chip en específico, debe haber para STM32 tipo HAL.

Este es el datasheet del chip

La librería que podría servir es la UTFT, tomando como base el constructor del chip ILI9325 de 8 bits, el identificador es el 4 (ILI9325D_8), el camino podría ser crear una instancia de llamado, digamos ST7789_8; revisar el datasheet y modificar los registros de inicio que usa la librería UTFT para el cableado de 8 bits

Cabe la posibilidad de que la pantalla tenga lógica de 3.3V, ¿puedes subir una foto de la cara posterior de tu pantalla? y ¿una foto más en la que se pueda ver el nombre de cada pin?

PD: es muy probable que sea una pantalla ILI9341 de 8 bits, ese podría ser otro camino a seguir

Gracias por la respuesta, hemos conseguido hacer que funcione utilizando la librería MCUFRIEND:

Hemos ejecutado el ejemplo diagnose_TFT_support y funciona! Efectivamente el problema era la comunicación, que todas las librerías que encontrábamos usan el bus SPI y necesitábamos MCU de 8 bits.

Ahora tenemos un TFT más pequeño, de 1.8'' con el controlador ILI9163C que me temo que nos va a dar problemas similares...

Como ya anunciaba en el comentario anterior estamos teniendo el mismo problema con el controlador ILI9163C, en este caso la librería MCUFRIEND no nos sirve porque no es apta para este controlador.

Nos hemos descargado esta otra librería que es para este controlador pero es para comunicación SPI y nosotras necesitamos MCU.

¿Conocéis alguna librería que nos pueda ser útil?


Sube algunas fotos de la pantalla; es difícil saber qué hacer sin conocer la pantalla, nos podrían dar una mejor idea, más que los diagramas de datasheet.

Si apenas van a adquirirla, es mejor que consigan la version SPI es mucho muy fácil de activar en arduino y hay versiones muy económicas. El estándar de 8 o de 16 bits resulta muy complicado de cablear y mucho más complicado hallar librerías para el entorno compatible con arduino.

Hay una interfase que permite testear TFT´s en estándares de 8 y 16 bits, imagino que puede ayudar en el proceso de diseño de librerías, ya que permite conectar todo el cableado de los chips controladores. La placa base tiene un STM32F103V como intermediario de control

Aquí están las fotos de la pantalla, no las había subido antes porque en los pines no pone nada, no indica a qué corresponde, y me parecía que no aportaba mucha información.

Sabemos que es más fácil hacerlo funcional con SPI pero necesitamos hacer funcionar este modelo MCU.