Conduciendo Nokia TFT LCD con STM32

2

¿Cómo puedo aumentar la frecuencia de actualización de un LCD Nokia que estoy manejando con el microcontrolador STM32F103?

La pantalla LCD es 132 * 162 y toma una instrucción de 9 bits / DATOS con RGB para cada píxel en formato 565. Como SPI en STM32 no puede hacer 9 bits, estoy usando USART (funcionando a un máximo de 4,000,000 bit / s como lo estoy usando HSPI) en modo de 9 bits para controlar la pantalla LCD.

Esto funciona bien, pero la frecuencia de actualización no es tan buena. Ahora mismo me toma 230 ms aprox. Escribir toda la pantalla.

Haciendo cálculos aproximados, (132 * 162 * 2 * 9) / 4e6 = 97 ms. El mío es mayor debido a los gastos generales + el hecho de que necesito reflejar cada byte antes de enviarlo, ya que USART hace solo LSB primero.

Estoy buscando algunas sugerencias sobre cómo puedo reducir la frecuencia de actualización.

  1. ¿Usar DMA? No estoy seguro de lo útil que sería en este caso, ya que mi microcontrolador solo está manejando la pantalla LCD. Nada más.

  2. Almacena la pantalla LCD en la memoria RAM y envíala a la pantalla LCD de una sola vez. No puedo hacerlo ya que el microcontrolador tiene solo 16 KB de RAM.

  3. Bit bang GPIO para controlar la pantalla LCD. No estoy seguro de si esto lograría una velocidad superior a 4 MHz de USART. Además, con esto pierdo la capacidad de usar DMA en el futuro si es necesario.

La pantalla LCD que estoy usando se usa en la serie Nokia C100 y usa el controlador SPFD54124B.

    
pregunta Ankit

3 respuestas

0

Quieres algo que se parece a SPI, así que trataría de hacer que SPI funcione.

Suponiendo que su LCD (que tal vez desee especificar) no necesita un tiempo específico entre las palabras, solo debe usar los modos de palabra que el STM32F1 tiene para ofrecer (8 o 16 bits, iirc), y eliminar 8 palabras a la vez: serían 72 bits y se pueden dividir en 9 transferencias SPI.

    
respondido por el Marcus Müller
0

El SPFD54124B tiene una interfaz SPI de 4 pines y 8 bits. Simplemente use eso en lugar de la interfaz "SPI-like" de 3 pines de 9 bits.

Consulte la hoja de datos página 118 a continuación.

La interfaz SPI de cuatro pines utiliza un

  • "CSX": Chip Select (MCU- > controlador de pantalla)
  • "SCL": reloj serial (- >)
  • "DCX": comando Data || (- >)
  • "SDA": Datos (- >)

CSX, SCL, SDA se pueden manejar de forma totalmente automática mediante el hardware SPI en su MCU. DCX tendría que ser un GPIO. Eso no es un problema. Puede simplemente establecer el pin GPIO en datos, transmitir sus datos de píxeles de alta velocidad, luego capturar la interrupción cuando haya terminado, alternar el pin DCX, enviar comandos, capturar la interrupción cuando haya terminado y volver al modo de datos.

Realmente, estoy un poco triste porque tardaste tanto en decir qué controlador usas. Podrías haber tenido una respuesta mucho más rápida.

    
respondido por el Marcus Müller
0

Estás usando LCD con interfaz serial. Eso tiene un gran impacto en la velocidad. Debe usar la pantalla LCD con interfaz paralela si desea acelerar significativamente la frecuencia de actualización.

    
respondido por el Chupacabras

Lea otras preguntas en las etiquetas