¿Cómo puedo aumentar la frecuencia de actualización de un Nokia LCD que estoy manejando usando el microcontrolador STM32F103?
La pantalla LCD es de 132*162 y toma instrucciones/DATOS de 9 bits con RGB para cada píxel en formato 565. Dado que SPI en STM32 no puede hacer 9 bits, estoy usando USART (funcionando a un máximo de 4,000,000 bit/s como máximo mientras uso 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 más alto debido a los gastos generales + el hecho de que necesito duplicar cada byte antes de enviarlo, ya que USART solo hace LSB primero.
Estoy buscando algunas sugerencias sobre cómo puedo reducir la frecuencia de actualización.
¿Usar DMA? No estoy seguro de cuán útil sería en este caso, ya que mi microcontrolador solo controla la pantalla LCD. Nada más.
Guarde la pantalla LCD en la memoria RAM y envíela a la pantalla LCD de una sola vez. No puedo hacerlo ya que el microcontrolador tiene solo 16 KB de RAM.
Bit bang GPIO para controlar la pantalla LCD. No estoy seguro si esto lograría una tasa de más de 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.
Quiere algo que se parezca a SPI, así que intentaría hacer que SPI funcione.
Suponiendo que su LCD (que es posible que desee especificar) no necesita un tiempo específico entre palabras, solo debe usar los modos de palabra que ofrece el STM32F1 (8 o 16 bits, iirc) y extraer 8 palabras en una vez: serían 72 bits y se pueden dividir en 9 transferencias SPI.
El SPFD54124B tiene una interfaz SPI de 4 pines y 8 bits. Simplemente use eso en lugar de la interfaz "similar a SPI" de 3 pines y 9 bits.
Consulte la hoja de datos de la página 118 a continuación.
La interfaz SPI de cuatro pines utiliza un
CSX, SCL, SDA pueden ser manejados de forma completamente automática por el hardware SPI en su MCU. DCX tendría que ser un GPIO. Eso no es un problema. Simplemente puede configurar el pin GPIO en datos, transmitir sus datos de píxeles de alta velocidad, luego capturar la interrupción cuando termine, alternar el pin DCX, enviar comandos, capturar la interrupción cuando termine y volver al modo de datos.
De verdad, me entristece un poco que hayas tardado tanto en decir qué controlador usas. Podrías haber tenido una respuesta mucho, mucho más rápida.
Está utilizando una pantalla LCD con interfaz serial. Eso tiene un gran impacto en la velocidad. Debe usar LCD con interfaz paralela si desea acelerar significativamente la frecuencia de actualización.
Tony Estuardo EE75
Tony Estuardo EE75
SoreDakeNoKoto
SoreDakeNoKoto
Ankit
Ankit
SoreDakeNoKoto