L’esercitazione fornisce una guida approfondita all’implementazione del display incorporato STM32-U5 di Riverdi in un progetto, che presenta un display LCD TFT da 5″ della nuova linea di prodotti Riverdi, costruita attorno alla MCU della serie STM32U5, rinomata per i suoi microcontrollori avanzati a risparmio energetico.

Esercitazione – Creazione di immagini per il potenziometro ADC con il display integrato Riverdi STM32

Incorporando un’interfaccia utente capacitiva-touch sviluppata tramite TouchGFX, l’esercitazione illustra come visualizzare le variazioni di un segnale analogico (da un potenziometro) sull’interfaccia grafica (GUI), configurando la periferica ADC, codificando e integrando la gestione dei task e delle code con FreeRTOS nell’ambiente STM32CubeIDE. Il tutorial illustra ogni fase, dalla configurazione dell’MCU con cubeMX, alla codifica del task ADC, all’interfacciamento e all’aggiornamento dell’interfaccia grafica, fino al flashing finale del progetto. Il tutorial mette in evidenza un processo di sviluppo semplificato che rigenera direttamente i progetti utilizzando cubeMX, superando i problemi riscontrati con i precedenti display incorporati Riverdi STM32-H7 e producendo infine una visualizzazione reattiva dell’indicatore e della tensione nell’interfaccia grafica che si adatta alle regolazioni del potenziometro.

Questa esercitazione è stata realizzata da Controllerstech – Robotics Simplified, una società di sviluppo software con sede in India. Il loro obiettivo è fornire conoscenze software per i microcontrollori basati su STM32. Di seguito presentiamo la guida originariamente pubblicata qui: https://controllerstech.com/riverdi-stm32-u5-embedded-display/

Guardate il video tutorial:

Display integrato Riverdi STM32-U5

Questa è un’altra esercitazione sul display integrato STM32 di Riverdi, e oggi abbiamo un display LCD TFT da 5″ della loro nuova linea. Riverdi è specializzata nella produzione di diversi tipi di display, tra cui i display basati su STM32 che supportano il TouchGFX fin dall’inizio. Il display può essere acquistato da https://riverdi.com/product-category/stm32-embedded-displays

Questo display è costruito su MCU della serie STM32U5, che offre microcontrollori avanzati a risparmio energetico, basati su Arm® Cortex®-M33 per soddisfare i requisiti di potenza/prestazioni più esigenti. Con fino a 4 Mbyte di memoria flash e 2514 Kbyte di SRAM, la serie di microcontrollori STM32U5 porta le prestazioni a un livello superiore.

Ho già trattato alcune esercitazioni sui display embedded Riverdi STM32-H7, in cui ho mostrato come sia necessario copiare il progetto precostituito in una nuova posizione, quindi modificare il progetto da cubeMX e copiare solo i file necessari nel progetto originale. Questo processo funziona, ma è molto complicato se si vuole rigenerare il progetto da cubeMX.

MA con questa nuova linea di display incorporati STM32-U5, possiamo rigenerare direttamente il progetto utilizzando cubeMX. Possiamo anche flashare il progetto utilizzando cubeIDE.

In questa esercitazione leggeremo il potenziometro utilizzando l’ADC, visualizzeremo la sua variazione sul misuratore e mostreremo anche la tensione dell’ADC in un’area di testo. Per fare questo costruiremo l’interfaccia grafica utilizzando TouchGFX, quindi rigenereremo il progetto utilizzando cubeMX configurando la periferica ADC, scriveremo il codice e flasheremo il progetto utilizzando cubeIDE.

Progettazione dell’interfaccia utente su TouchGFX

Creare il progetto con TouchGFX

  1. Fare clic su Crea per creare un nuovo progetto
  2. Cercare il Riverdi per vedere le schede disponibili
  3. Scegliere il display di cui si dispone. Ho un STM32U5 da 5″.
  4. Dare un nome al progetto
  5. Fare clic su Crea per creare il progetto.

Aggiungere gli elementi richiesti all’interfaccia utente

Di seguito è riportata l’immagine che mostra il design finale dell’interfaccia utente.

  • Ho aggiunto un indicatore, i cui valori possono variare da 0 a 100.
  • TextArea1, che visualizzerà il valore sull’indicatore.
  • TextArea2, che verrà utilizzata per visualizzare la voltgae dell’ADC.

Entrambe le aree di testo utilizzano i caratteri jolly, per cui è possibile aggiornare i valori direttamente dal codice.

Dopo aver progettato l’interfaccia utente, generare il progetto e aprirlo in cubeIDE.

Configurare il progetto in cubeMX

Di seguito è riportata l’immagine che mostra la piedinatura del connettore di espansione e il modo in cui il potenziometro è collegato ad esso.

Utilizzeremo il canale 11/12 dell’ADC1, collegato al pin PA7 (pin 20). Per impostazione predefinita, l’ADC è configurato in modalità differenziale, ma per far funzionare il potenziometro è necessario configurarlo in modalità single-ended.

Di seguito è riportata la configurazione di cubeMX.

Ho riconfigurato il canale 12 dell’ADC1 in modalità single-ended. La risoluzione dell’ADC è impostata su 12 bit.

È inoltre necessario creare un task e una coda per inviare i dati ADC alla GUI. L’immagine seguente mostra la configurazione del task ADC.

Il task ADC è configurato con priorità normale. Viene utilizzato per leggere il valore dell’ADC e inviarlo alla coda.

Occorre anche configurare la coda per inviare i dati alla GUI. Di seguito è riportata l’immagine che mostra la configurazione della coda.

La coda ADC è configurata con 5 elementi di dimensione intera. Invieremo i valori da 0 a 100, quindi la dimensione intera è sufficiente.

Questa è tutta la configurazione di cui abbiamo bisogno; generiamo ora il progetto.

Scriviamo il codice

Il task ADC che abbiamo definito si trova nel file app_freertos.c.

Copy to Clipboard

Nel task ADC, leggeremo il valore dell’ADC e lo invieremo alla GUI utilizzando la coda ADC.

  • Sto utilizzando la modalità di blocco per leggere il valore dell’ADC e memorizzarlo nella variabile ADC_VAL.
  • La risoluzione dell’ADC è impostata a 12 bit, pertanto i valori variano da 0 a 4095.
  • Quindi mapperemo questi valori nell’intervallo da 0 a 100. I valori convertiti saranno quindi memorizzati nella variabile converted_val.
  • Poi verificheremo se la coda ha un po’ di spazio al suo interno. Se c’è spazio nella coda, inviare il valore alla coda.
  • Questo task verrà eseguito ogni 100 ms. Stiamo solo leggendo la temporizzazione di un potenziometro e la velocità di clock non è la priorità.

Questi valori saranno ricevuti nel modello GUI. Di seguito è riportato il codice che mostra l’implementazione del modello.

Copy to Clipboard

All’interno del modello, la funzione tick viene richiamata a ogni aggiornamento del frame. All’interno di questa funzione si verificherà la presenza di dati nella coda.

  • Se la coda contiene dei dati, li leggiamo e li memorizziamo nella variabile ADC_VAL.
  • Questa variabile è definita in Model.hpp.
  • Chiameremo quindi la funzione setADC nel modelListener.

La funzione setADC è definita nel file modelListener.hpp, ma la sua implementazione dovrebbe essere una funzione vuota. Questo è mostrato di seguito.

Copy to Clipboard

Questa implementazione vuota fa sì che la GUI cerchi la funzione all’interno del file del presentatore. Qui si definirà effettivamente la funzione.

Copy to Clipboard

All’interno del presentatore, chiameremo la stessa funzione nella vista.

La vista è il luogo in cui la funzione viene effettivamente scritta. Di seguito è riportata la definizione della funzione setADC

Copy to Clipboard
  • Qui convertiremo prima il valore in formato carattere usando snprintf e poi lo copieremo nel buffer textArea1.
  • L’area di testo1 è definita in cima all’indicatore, quindi visualizzerà i valori compresi tra 0 e 100.
  • Quindi convertiremo i valori nell’intervallo float da 0 a 3,3, che verrà utilizzato per visualizzare la tensione sul pin dell’ADC.
  • Quindi convertire il valore float nel formato carattere utilizzando la funzione snprintfFloat e copiarlo nel buffer textArea2.
  • L’area di testo2 è definita sotto l’indicatore e visualizzerà i valori compresi tra 0 e 3,3.
  • Infine, si imposterà il valore dell’indicatore.

questo completa la nostra parte di codice. Ora faremo il flash del progetto dal cuboIDE stesso.

Flash del progetto

Dobbiamo modificare leggermente la configurazione di debug prima di poter procedere al flashing. Il progetto generato da TouchGFX non genera il file del caricatore esterno, quindi dobbiamo fornire il suo percorso relativo al nostro file system.

Aprire la configurazione di debug, fare clic sulla scheda Debugger, scorrere fino a Caricatori esterni.

Fare clic sul caricatore e fare clic su modifica.

Ora fate clic su file system.

Individuate ora il caricatore all’interno della directory STM32cubeProgrammer. Nel mio caso si trova in Program Files -> STMicroElectronics -> STM32CubeProgrammer ->bin -> ExternalLoaders.

Una volta individuato il caricatore, fare clic su Apply per salvare la configurazione e su RUN per eseguire il flash del progetto sulla scheda.

Risultato

Di seguito è riportata la gif che mostra la visualizzazione.

Come si può vedere, l’indicatore risponde abbastanza bene alla rotazione del potenziometro. L’area di testo dell’indicatore mostra il valore corrente dell’indicatore.

L’area di testo sottostante mostra la tensione corrente sul pin ADC, che può variare da 0 a 3,3V.

Codice da scaricare

Qui è possibile scaricare il codice condiviso da Controllertech: Potenziometro

Riverdi – il produttore europeo di espositori di altissima qualità

Perché dovreste fidarvi di noi e dei nostri prodotti? Riverdi è il produttore europeo di espositori di altissima qualità. Produciamo display LCD TFT da oltre 10 anni e abbiamo molti clienti in tutto il mondo a cui forniamo regolarmente i display.

Sul nostro sito web troverete molte serie di display diversi, ma ciò che forniamo non è solo la massima qualità dei display, ma anche una documentazione perfetta. Sul sito web troverete anche i modelli 3D di ogni display, la maggior parte dei quali è corredata da un rapporto EMI, per conoscere il livello di emissioni. Il processo di ordinazione è semplice, se volete ordinare un campione, potete acquistarlo nel nostro negozio web. Basta andare su https://riverdi.com/product-category/stm32-embedded-displays/.

Potete anche contattare uno dei nostri distributori. Riverdi dispone di un’ampia rete di distribuzione, che comprende molti partner statunitensi in grado di consegnarvi subito il display.

Ricordatevi di ISCRIVERVI al nostro canale YouTube e di compilare il MODULO DI ISCRIZIONE,
per rimanere informati sui materiali della Riverdi University e sugli eventi dal vivo!