Índice
Rotación de pantalla en Riverdi STM32 7" display
La rotación de la pantalla es un requisito habitual en los dispositivos basados en STM32, especialmente cuando el diseño mecánico impone la orientación vertical o el montaje invertido. En los sistemas que utilizan el controlador de pantalla LTDC, la rotación debe gestionarse por software, ya que el propio controlador no proporciona rotación nativa del framebuffer.
Este artículo explica un enfoque práctico y de uso común para la rotación de la pantalla en sistemas STM32 utilizando TouchGFX y la alineación táctil, con corrección opcional del lado del panel cuando lo requiera la instalación física.
Problemas típicos
Los problemas de rotación de la pantalla suelen aparecer como uno o más de los siguientes:
- la IU se muestra con una orientación incorrecta respecto a la carcasa
- el contenido de la pantalla sólo es legible cuando se gira físicamente el dispositivo
- la entrada táctil no se alinea con los elementos visibles de la IU
Estos síntomas no están causados por fallos del hardware de la pantalla, sino por cómo se gestiona la orientación en el software.
Supuestos del sistema
Este enfoque se ha validado en una pantalla TFT Riverdi de 7 pulgadas conectada a un microcontrolador STM32 mediante la interfaz LTDC. El comportamiento y la configuración descritos se aplican a esta clase de pantallas Riverdi basadas en STM32 y son representativos de configuraciones similares.
Cómo se gestiona la orientación en STM32 LTDC
El periférico LTDC escanea el framebuffer en un orden fijo definido por la disposición de la memoria. No admite la rotación de la memoria intermedia 90 ó 270 grados por hardware.
Por esta razón, la rotación de la pantalla en los sistemas STM32 suele dividirse en dos aspectos independientes: la orientación visual de la IU y el mapeo de las coordenadas táctiles. Cada uno de ellos debe gestionarse explícitamente.
Estrategia de rotación recomendada
Una estrategia comúnmente utilizada y robusta consiste en manejar los cambios de orientación de 90 grados a nivel del marco de la GUI y aplicar una corrección adicional de 180 grados sólo si lo requiere el montaje mecánico. Esto evita la rotación del framebuffer en tiempo de ejecución y mantiene predecible el uso de CPU y memoria.
Manejo de la orientación de 90 grados en TouchGFX
TouchGFX gestiona la orientación renderizando la IU de forma nativa para las dimensiones de pantalla configuradas. Un cambio de 90 grados entre horizontal y vertical se consigue seleccionando la anchura y altura adecuadas y diseñando la IU para esa orientación.
El propio framebuffer no se gira. En su lugar, la IU se genera directamente en la orientación requerida.


TouchGFX Designer mostrando el proyecto configurado para orientación vertical u horizontal
Corrección opcional de 180 grados a nivel de panel o software
En algunos diseños, la pantalla está montada al revés en relación con la orientación prevista de la IU. En estos casos, puede ser necesaria una corrección adicional de 180 grados.
Esta corrección no la realiza el periférico LTDC. En su lugar, puede aplicarse a nivel de configuración del panel mediante comandos de interfaz de pantalla, o alternativamente en software aplicando la lógica de inversión de coordenadas.
En el enfoque del lado del panel que se muestra en la captura de pantalla, la rotación de 180 grados se consigue con un único cambio en la secuencia de inicialización del panel DSI.
Comentar este comando DSI específico (en este ejemplo la línea 250) que desbloquea los registros de control del panel:


Esto hace que el panel funcione con una dirección de escaneado invertida, lo que produce una rotación efectiva de 180 grados de la imagen mostrada.
No es necesario realizar ningún otro cambio en esta secuencia para aplicar la rotación.
Este comportamiento es específico del panel y depende de cómo interprete el controlador del panel sus comandos de inicialización. El cambio afecta sólo a la orientación de escaneado del lado del panel y funciona independientemente del proceso de escaneado del framebuffer LTDC. No implica ninguna rotación del framebuffer por hardware en el lado de la STM32.
Cuando se utiliza este método, las coordenadas táctiles deben seguir alineándose por separado, ya que el controlador táctil sigue informando de coordenadas brutas basadas en la orientación física del sensor.
Manejo táctil con LITEK ILI2132A en pantallas Riverdi IPS
Todas las pantallas Riverdi IPS de hasta 10 pulgadas utilizan elcontrolador táctil capacitivo ILITEK ILI2132A. Al trabajar con rotación de pantalla en sistemas basados en STM32, es importante entender cómo este controlador informa de las coordenadas táctiles y cómo debe gestionarse la rotación.
Corregidos los informes de coordenadas brutas
El ILI2132A siempre informa de las coordenadas táctiles en bruto, sin modificar, que están directamente vinculadas a la orientación física del sensor táctil. El controlador no proporciona ninguna opción de configuración para cambiar entre los modos vertical y horizontal, ni admite la rotación en tiempo de ejecución o la inversión de 180 grados de las coordenadas informadas.
No hay ningún registro de orientación o rotación que pueda utilizarse para informar al controlador de que se ha girado la pantalla. Independientemente de la orientación de la pantalla utilizada por el marco GUI o el controlador de pantalla, el ILI2132A sigue emitiendo los mismos valores X e Y brutos.
Este comportamiento es por diseño y debe tratarse como una característica fija del regulador.
Rotación y alineación táctiles basadas en software
Como el ILI2132A siempre informa de las coordenadas en bruto, la alineación táctil debe implementarse totalmente en software. La rotación de la pantalla y el mapeado táctil son dos pasos independientes y deben manejarse de forma coherente.
Lo recomendable es transformar las coordenadas táctiles brutas según la orientación final de la pantalla antes de pasarlas al marco de la GUI.
En primer lugar, determina la orientación final de la pantalla utilizada por el sistema, por ejemplo horizontal nativo, vertical, horizontal invertido o vertical invertido. Esta orientación suele estar definida por la configuración del proyecto TouchGFX o por la rotación de la pantalla LVGL.
A continuación, lee las coordenadas táctiles brutas comunicadas por el ILI2132A. En esta fase, las coordenadas siempre reflejan la orientación nativa del sensor táctil.
A continuación, aplica una transformación de coordenadas basada en la orientación de pantalla seleccionada. La transformación depende de la anchura y la altura de la pantalla tras la rotación y suele implicar intercambiar ejes e invertir uno o ambos rangos de coordenadas.
Por ejemplo:
- sin rotación, se pueden utilizar directamente las coordenadas brutas
- con una rotación de 90 grados, X e Y se intercambian y un eje se invierte
- con una rotación de 180 grados, ambos ejes están invertidos
- con una rotación de 270 grados, X e Y se intercambian con la inversión opuesta en comparación con el caso de 90 grados
Por último, transmite las coordenadas transformadas al marco de la GUI. En TouchGFX, esto se hace a través de la interfaz del controlador táctil. En LVGL, las coordenadas corregidas se proporcionan a través de la llamada de retorno del controlador del dispositivo de entrada.
El propio marco de la GUI permanece ajeno a la orientación física táctil y siempre recibe coordenadas ya alineadas.
Referencia del mapa de rotación
Supón:
- W es la anchura de la pantalla después de la rotación
- H es la altura de la pantalla tras la rotación
- (x, y) son las coordenadas de toque en bruto
- (x’, y’) son coordenadas transformadas que se pasan al marco GUI
Entonces:
Sin rotación (0 grados)
Utiliza directamente las coordenadas brutas:
- x’ = x
- y’ = y
Rotación de 90 grados (vertical)
Intercambia ejes e invierte un eje:
- x’ = y
- y’ = W – 1 – x
Rotación de 180 grados (paisaje invertido)
Invierte ambos ejes:
- x’ = W – 1 – x
- y’ = H – 1 – y
Rotación de 270 grados (retrato invertido)
Intercambia los ejes e invierte el eje opuesto:
- x’ = H – 1 – y
- y’ = x
Estas transformaciones se aplican en la capa de manejo táctil y no afectan al renderizado de la pantalla.
Nota sobre las pantallas Riverdi más grandes
Para las pantallas Riverdi de mayor tamaño, se utiliza un controlador táctil diferente. Las pantallas IPS por encima de este rango de tamaño suelen utilizar el controlador táctil ILITEK ILI2511. Aunque el principio general de separar la rotación de la pantalla de la asignación táctil sigue siendo el mismo, los detalles de implementación pueden diferir y deben verificarse para la configuración específica del controlador y la pantalla.
Verificación
Tras aplicar los pasos descritos anteriormente, la interfaz de usuario debería aparecer con la orientación correcta y la entrada táctil debería alinearse con los elementos de la interfaz de usuario. No debería ser necesaria la rotación del framebuffer en tiempo de ejecución. Si el comportamiento táctil sigue siendo incorrecto, hay que volver a comprobar la inversión de los ejes y los parámetros de resolución.
Errores frecuentes
Los problemas más comunes son asumir que el LTDC admite la rotación por hardware, rotar la IU sin corregir las coordenadas táctiles y mezclar la inversión del lado del panel con los cambios de orientación a nivel de la IU sin una separación clara.
Rotación de pantalla con LVGL
LVGL admite la rotación de la pantalla en incrementos de 90 grados. La orientación de la pantalla puede cambiarse utilizando
lv_display_set_rotation(disp, LV_DISPLAY_ROTATION_xxx), donde xxx es 0, 90, 180 ó 270.
Cuando la rotación está activada, LVGL actualiza su sistema interno de coordenadas e intercambia la resolución horizontal y vertical según sea necesario.
En los sistemas STM32 que utilizan LTDC, la rotación se gestiona totalmente por software. LVGL no depende de la rotación del framebuffer por hardware. Dependiendo del modo de renderizado seleccionado, los datos de los píxeles se pueden rotar en la llamada de retorno antes de ser enviados a la pantalla. Para las pantallas rotadas, se suele utilizar LV_DISPLAY_RENDER_MODE_PARTIAL, ya que permite rotar áreas individuales renderizadas antes de la descarga.
Este enfoque se ha probado en sistemas STM32 con pantallas Riverdi que utilizan LVGL versión 9.1 y posteriores.
Aunque esté activada la rotación LVGL, los controladores táctiles siguen informando de las coordenadas en bruto. Para las pantallas Riverdi IPS que utilizan ILITEK ILI2132A, las coordenadas táctiles deben seguir transformándose en software para que coincidan con la orientación de pantalla seleccionada.
Para más detalles sobre los modos de rotación, API y ejemplos de LVGL, consulta la documentación oficial de LVGL:
Rotación de la pantalla LVGL
Resumen
En los sistemas STM32 que utilizan LTDC, la rotación de la pantalla se gestiona totalmente por software. TouchGFX se utiliza para definir la orientación primaria renderizando la interfaz de usuario para las dimensiones de pantalla requeridas, mientras que la corrección adicional de 180 grados puede aplicarse a nivel de panel o de software cuando sea necesario.
Este enfoque por capas proporciona una solución fiable y mantenible, sin depender de la rotación del framebuffer por hardware no soportado, y es adecuada para aplicaciones industriales a largo plazo.
DESCUBRE NUESTRA
Libro Blanco
Consigue una interacción perfecta entre el usuario y la pantalla con el CI de sensor táctil adecuado. ¿Te has enfrentado alguna vez a problemas con eventos táctiles fantasma o de certificación? ¡Impulsa tu I+D como un profesional con nuestro Libro Blanco!



