Link copiato negli appunti!

Rotazione dello schermo su display Riverdi STM32 da 7 pollici

Indice dei contenuti

    Rotazione dello schermo su display Riverdi STM32 da 7 pollici

    La rotazione dello schermo è un requisito comune nei dispositivi basati su STM32, soprattutto quando il design meccanico impone l’orientamento verticale o il montaggio invertito. Nei sistemi che utilizzano il controller del display LTDC, la rotazione deve essere gestita via software, poiché il controller stesso non fornisce una rotazione nativa del framebuffer.

    Questo articolo spiega un approccio pratico e comunemente utilizzato per la rotazione dello schermo sui sistemi STM32 utilizzando TouchGFX e l’allineamento tattile, con una correzione opzionale sul lato del pannello se richiesto dall’installazione fisica.

    Problemi tipici

    I problemi di rotazione dello schermo si presentano di solito come uno o più dei seguenti:

    • l’interfaccia utente viene visualizzata con un orientamento sbagliato rispetto all’involucro
    • il contenuto dello schermo è leggibile solo quando il dispositivo viene fisicamente ruotato
    • L’input tattile non si allinea con gli elementi visibili dell’interfaccia utente

    Questi sintomi non sono causati da guasti all’hardware del display, ma dal modo in cui l’orientamento viene gestito dal software.

    Presupposti del sistema

    Questo approccio è stato convalidato su un display Riverdi TFT da 7 pollici collegato a un microcontrollore STM32 tramite l’interfaccia LTDC. Il comportamento e la configurazione descritti si applicano a questa classe di display Riverdi basati su STM32 e sono rappresentativi per configurazioni simili.

    Come viene gestito l’orientamento su STM32 LTDC

    La periferica LTDC esegue la scansione del framebuffer in un ordine fisso definito dal layout della memoria. Non supporta la rotazione del framebuffer di 90 o 270 gradi in hardware.

    Per questo motivo, la rotazione dello schermo nei sistemi STM32 è tipicamente suddivisa in due aspetti indipendenti: l’orientamento visivo dell’interfaccia utente e la mappatura delle coordinate tattili. Ognuno di questi aspetti deve essere gestito in modo esplicito.

    Strategia di rotazione consigliata

    Una strategia comunemente utilizzata e robusta è quella di gestire i cambiamenti di orientamento di 90 gradi a livello di framework GUI e applicare una correzione aggiuntiva di 180 gradi solo se richiesto dal montaggio meccanico. In questo modo si evita la rotazione del framebuffer a runtime e si mantiene prevedibile l’utilizzo della CPU e della memoria.

    Gestione dell'orientamento a 90 gradi in TouchGFX

    TouchGFX gestisce l’orientamento renderizzando l’interfaccia utente in modo nativo per le dimensioni dello schermo configurate. Un cambiamento di 90 gradi tra paesaggio e ritratto si ottiene selezionando la larghezza e l’altezza appropriate e progettando l’interfaccia utente per quell’orientamento.

    Il framebuffer stesso non viene ruotato. Invece, l’interfaccia utente viene generata direttamente con l’orientamento richiesto.

    Correzione opzionale di 180 gradi a livello di pannello o software

    In alcuni progetti, il display è montato al contrario rispetto all’orientamento dell’interfaccia utente. In questi casi, potrebbe essere necessaria un’ulteriore correzione di 180 gradi.

    Questa correzione non viene eseguita dalla periferica LTDC. Può invece essere applicata a livello di configurazione del pannello utilizzando i comandi dell’interfaccia del display o, in alternativa, nel software applicando la logica di inversione delle coordinate.

    Nell’approccio dal lato del pannello mostrato nella schermata, la rotazione di 180 gradi si ottiene con un’unica modifica nella sequenza di inizializzazione del pannello DSI.
    Commentando questo specifico comando DSI (in questo esempio la riga 250) che sblocca i registri di controllo del pannello:

    Questo fa sì che il pannello operi con una direzione di scansione invertita, con una conseguente rotazione effettiva di 180 gradi dell’immagine visualizzata.

    Non sono necessarie altre modifiche in questa sequenza per applicare la rotazione.

    Questo comportamento è specifico del pannello e dipende da come il controller del pannello interpreta i suoi comandi di inizializzazione. La modifica riguarda solo l’orientamento di scansione del pannello e opera indipendentemente dal processo di scansione del framebuffer LTDC. Non comporta alcuna rotazione hardware del framebuffer sul lato STM32.

    Quando si utilizza questo metodo, le coordinate tattili devono ancora essere allineate separatamente, poiché il controller tattile continua a riportare le coordinate grezze basate sull’orientamento fisico del sensore.

    Gestione del tocco con LITEK ILI2132A nei display IPS Riverdi

    Tutti i display IPS Riverdi fino a 10 pollici utilizzano ilcontroller touch capacitivo ILITEK ILI2132A. Quando si lavora con la rotazione dello schermo su sistemi basati su STM32, è importante capire come questo controller riporta le coordinate del tocco e come deve essere gestita la rotazione.

    Segnalazione fissa delle coordinate grezze

    L’ILI2132A riporta sempre coordinate tattili grezze e non modificate, direttamente legate all’orientamento fisico del sensore tattile. Il controller non fornisce alcuna opzione di configurazione per passare dalla modalità verticale a quella orizzontale, né supporta la rotazione runtime o l’inversione di 180 gradi delle coordinate riportate.

    Non esiste un registro di orientamento o di rotazione che possa essere utilizzato per informare il controller che il display è stato ruotato. Indipendentemente dall’orientamento dello schermo utilizzato dal framework GUI o dal controller del display, l’ILI2132A continua a produrre gli stessi valori grezzi X e Y.

    Questo comportamento è stato progettato e deve essere considerato come una caratteristica fissa del controllore.

    Rotazione e allineamento del touch basati su software

    Poiché l’ILI2132A riporta sempre coordinate grezze, l ‘allineamento tattile deve essere implementato interamente nel software. La rotazione dello schermo e la mappatura tattile sono due fasi indipendenti e devono essere gestite in modo coerente.

    L’approccio consigliato è quello di trasformare le coordinate tattili grezze in base all’orientamento finale dello schermo prima di passarle al framework della GUI.

    Innanzitutto, determina l’orientamento finale dello schermo utilizzato dal sistema, ad esempio paesaggio nativo, ritratto, paesaggio invertito o ritratto invertito. Questo orientamento è tipicamente definito dalle impostazioni del progetto TouchGFX o dalla rotazione del display LVGL.

    Successivamente, leggi le coordinate tattili grezze riportate dall’ILI2132A. In questa fase, le coordinate riflettono sempre l’orientamento nativo del sensore tattile.

    Quindi applica una trasformazione delle coordinate in base all’orientamento dello schermo selezionato. La trasformazione dipende dalla larghezza e dall’altezza dello schermo dopo la rotazione e in genere comporta lo scambio degli assi e l’inversione di uno o entrambi gli intervalli di coordinate.

    Ad esempio:

    • senza rotazione, le coordinate grezze possono essere utilizzate direttamente
    • con una rotazione di 90 gradi, X e Y sono scambiati e un asse è invertito
    • con una rotazione di 180 gradi, entrambi gli assi vengono invertiti
    • con una rotazione di 270 gradi, X e Y vengono scambiati con l’inversione opposta rispetto al caso a 90 gradi

    Infine, inoltra le coordinate trasformate al framework dell’interfaccia grafica. In TouchGFX, questo avviene attraverso l’interfaccia del controller tattile. In LVGL, le coordinate corrette vengono fornite tramite il callback del driver del dispositivo di input.

    Il framework della GUI non conosce l’orientamento fisico del tocco e riceve sempre coordinate già allineate.

    Riferimento alla mappatura della rotazione

    Supponiamo che:

    • W è la larghezza dello schermo dopo la rotazione
    • H è l’altezza dello schermo dopo la rotazione
    • (x, y) sono coordinate tattili grezze
    • (x’, y’) sono le coordinate trasformate passate al framework della GUI

    Allora:

    Nessuna rotazione (0 gradi)
    Usa direttamente le coordinate grezze:

    • x’ = x
    • y’ = y

    Rotazione di 90 gradi (verticale)
    Scambia gli assi e inverte un asse:

    • x’ = y
    • y’ = W – 1 – x

    Rotazione di 180 gradi (paesaggio invertito)
    Inverti entrambi gli assi:

    • x’ = W – 1 – x
    • y’ = H – 1 – y

    Rotazione di 270 gradi (ritratto invertito)
    Scambia gli assi e inverte l’asse opposto:

    • x’ = H – 1 – y
    • y’ = x

    Queste trasformazioni vengono applicate nel livello di gestione del tocco e non influiscono sul rendering del display.

    Nota sui display Riverdi più grandi

    Per gli schermi Riverdi più grandi, viene utilizzato un controller touch diverso. Gli schermi IPS al di sopra di questa gamma di dimensioni utilizzano in genere il controller tattile ILITEK ILI2511. Sebbene il principio generale della separazione tra rotazione dello schermo e mappatura tattile sia lo stesso, i dettagli dell’implementazione possono differire e devono essere verificati per la configurazione specifica del controller e del display.

    Verifica

    Dopo aver applicato i passaggi descritti sopra, l’interfaccia utente dovrebbe apparire con l’orientamento corretto e l’input tattile dovrebbe allinearsi con gli elementi dell’interfaccia. Non dovrebbe essere necessaria alcuna rotazione del framebuffer a runtime. Se il comportamento del tocco continua a non essere corretto, è necessario ricontrollare l’inversione degli assi e i parametri di risoluzione.

    Insidie comuni

    I problemi più comuni includono l’assunzione che LTDC supporti la rotazione hardware, la rotazione dell’interfaccia utente senza correggere le coordinate tattili e la commistione tra l’inversione del pannello e le modifiche dell’orientamento a livello di GUI senza una chiara separazione.

    Rotazione dello schermo con LVGL

    LVGL supporta la rotazione dello schermo con incrementi di 90 gradi. L’orientamento dello schermo può essere modificato utilizzando
    lv_display_set_rotation(disp, LV_DISPLAY_ROTATION_xxx), dove xxx è 0, 90, 180 o 270.

    Quando la rotazione è abilitata, LVGL aggiorna il suo sistema di coordinate interne e scambia la risoluzione orizzontale e verticale come richiesto.

    Nei sistemi STM32 che utilizzano LTDC, la rotazione è gestita interamente dal software. LVGL non si affida alla rotazione hardware del framebuffer. A seconda della modalità di rendering selezionata, i dati dei pixel possono essere ruotati nel callback di flush prima di essere inviati al display. Per le visualizzazioni ruotate, di solito si usa LV_DISPLAY_RENDER_MODE_PARTIAL, che permette di ruotare le singole aree renderizzate prima del flush.

    Questo approccio è stato testato su sistemi STM32 con display Riverdi che utilizzano LVGL versione 9.1 e successive.

    Anche quando la rotazione LVGL è abilitata, i controller tattili continuano a riportare le coordinate grezze. Per i display IPS Riverdi che utilizzano ILITEK ILI2132A, le coordinate tattili devono essere trasformate via software per adattarsi all’orientamento dello schermo selezionato.

    Per maggiori dettagli sulle modalità di rotazione LVGL, sulle API e sugli esempi, consulta la documentazione ufficiale di LVGL:
    Rotazione dello schermo LVGL

    Sintesi

    Nei sistemi STM32 che utilizzano LTDC, la rotazione dello schermo è gestita interamente dal software. TouchGFX viene utilizzato per definire l’orientamento primario attraverso il rendering dell’interfaccia utente per le dimensioni dello schermo richieste, mentre una correzione aggiuntiva di 180 gradi può essere applicata a livello di pannello o di software quando necessario.

    Questo approccio stratificato fornisce una soluzione affidabile e manutenibile senza affidarsi alla rotazione del framebuffer hardware non supportata ed è adatto ad applicazioni industriali a lungo termine.

    SCOPRI IL NOSTRO

    Carta bianca

    Ottieni un’interazione perfetta tra utente e display con il giusto IC per sensore tattile. Hai mai avuto problemi con eventi di tocco fantasma o con la certificazione? Potenzia la tua ricerca e sviluppo come un professionista con il nostro Whitepaper!

    Consulta il nostro catalogo prodotti e scopri come puoi risparmiare sulla qualità, non sulla qualità.

    Contattaci subito, risparmia con la qualità, non sulla qualità.