Iniziare con le schede di sviluppo STM32H7

Indice

A hand carefully holds a small STM32H7 development board connected with colorful jumper wires, with other electronic components blurred in the background and the title "Getting Started with STM32H7 Development Boards" overlaid.

La serie STM32H7 è una potenza nel mondo dei microcontrollori. Noto per le sue prestazioni elevate, è il preferito tra gli sviluppatori.

Questi microcontrollori sono progettati da STMicroelectronics, leader nel settore dei semiconduttori. Offrono impressionanti velocità di elaborazione e funzionalità avanzate.

Le schede di sviluppo STM32H7 sono perfette per progetti che richiedono prestazioni in tempo reale e un’elevata potenza di calcolo. Soddisfano un’ampia gamma di applicazioni.

Che tu sia un ingegnere o un hobbista, le schede STM32H7 forniscono gli strumenti di cui hai bisogno. Sono versatili e adattabili a vari requisiti di progetto.

In questa guida, esploreremo la serie STM32H7 in dettaglio. Dalle funzionalità alla programmazione, imparerai tutto ciò che devi sapere per iniziare.

Cos'è la serie di microcontrollori STM32H7?

La serie STM32H7 si distingue come una scelta di primo piano per i microcontrollori ad alte prestazioni. Questi chip vantano impressionanti capacità di elaborazione, rendendoli una soluzione ideale per attività impegnative.

Alimentati dal core ARM Cortex-M7, possono raggiungere velocità fino a 480 MHz. Questo li rende ideali per applicazioni che richiedono una potenza di calcolo ed efficienza significative.

Gli attributi chiave della serie STM32H7 includono:

  • Fino a 2 MB di memoria Flash e 1 MB di RA
  • Opzioni di connettività avanzate come Ethernet, USB e CAN
  • Supporto per FreeRTOS e altri sistemi operativi in tempo reale
Close-up of an STM32H7 series microcontroller chip, black in color with silver pins and the STMicroelectronics logo.
A close-up view of an STM32H7 series microcontroller

Questi microcontrollori soddisfano varie applicazioni, tra cui l’automazione industriale, l’elettronica di consumo e i sistemi automobilistici. Il loro design robusto supporta l’affidabilità a lungo termine, fondamentale in molti settori.

Con robuste funzionalità di sicurezza, i microcontrollori STM32H7 garantiscono l’integrità e la sicurezza dei dati. Funzionalità come la crittografia hardware e l’avvio protetto li rendono adatti ad applicazioni sicure.

In sintesi, la serie STM32H7 offre versatilità, prestazioni e affidabilità. È un’ottima scelta per gli sviluppatori che mirano a costruire sistemi embedded efficienti e sicuri.

Schede di sviluppo STM32H7 popolari

La serie STM32H7 offre una varietà di schede di sviluppo, ciascuna adatta a diversi requisiti di progetto. Queste schede sono disponibili in vari fattori di forma e configurazioni, rendendole versatili per numerose applicazioni.

Scheda STM32H743ZI Nucleo

Un’opzione notevole è la scheda STM32H743ZI Nucleo. È popolare tra gli sviluppatori grazie al suo design intuitivo e all’ampio supporto periferico. Questa scheda è ideale per progetti di controllo motore e automazione industriale. La sua compatibilità con l’ecosistema Arduino ne aumenta la flessibilità per la prototipazione.

Top and bottom views of the STM32H743ZI Nucleo Board, showcasing its various pins, connectors, and integrated components
STM32H743ZI Nucleo Board, presented with both its top and bottom views

Kit Discovery STM32H750B-DK

Un’altra scheda popolare è il kit Discovery STM32H750B-DK. Questa scheda è progettata per applicazioni che richiedono interfacce grafiche e touch migliorate. Dispone di un display LCD, che lo rende adatto ad applicazioni di interfaccia uomo-macchina (HMI).

Top and bottom views of the STM32H750B-DK Discovery kit, showing the integrated display on the top view and the densely populated mainboard on the bottom view.
STM32H750B-DK Discovery kit, displaying both the top view with its integrated display and the detailed bottom view of the development board

Kit Discovery STM32H7S78-DK

Il kit Discovery STM32H7S78-DK si distingue come una potente piattaforma per applicazioni ad alte prestazioni. Dotato di funzionalità grafiche avanzate e un display ad alta risoluzione, è perfetto per lo sviluppo di interfacce utente sofisticate ed esperienze multimediali ricche. Questo kit offre anche robuste opzioni di connettività e una serie completa di periferiche, rendendolo altamente versatile per progetti embedded impegnativi che richiedono sia potenza di elaborazione che output visivo avanzato.

Top and bottom views of the STM32H7S78-DK Discovery kit, featuring an integrated display on the top and complex circuitry on the bottom.
STM32H7S78-DK Discovery kit, showing both the top view with its embedded display and the comprehensive bottom view of the board

STM32H7 vs ESP32: un confronto dettagliato

Quando si sceglie un microcontrollore, confrontare STM32H7 ed ESP32 è fondamentale. Entrambi hanno punti di forza unici e soddisfano esigenze diverse.

STM32H7 si distingue per la sua eccezionale potenza di elaborazione. Vanta fino a 480 MHz, rendendolo adatto a calcoli intensivi. Al contrario, ESP32 offre una potenza di elaborazione moderata ma integra Wi-Fi e Bluetooth, rendendolo una scelta popolare per l’IoT.

Gli sviluppatori spesso scelgono STM32H7 per la sua estesa periferica e il supporto dell’interfaccia. È ideale per applicazioni che richiedono più protocolli di comunicazione come I2C, SPI e UART. D’altra parte, ESP32 eccelle nella connettività wireless. Le sue robuste capacità Wi-Fi e

Bluetooth sono adatte per dispositivi intelligenti e automazione domestica.

Ecco un rapido confronto delle caratteristiche:

STM32H7

CPU: Arm Cortex-M7 (Single or Dual Core, up to 600 MHz)

RAM: Up to 1.4 MB SRAM, plus other RAM

Flash Memory: Up to 2 MB embedded Flash

Connectivity: Ethernet, USB, SPI, I2C, UART, CAN, etc.

Peripherals: ADC, DAC, Timers, PWM, RNG, LCD Controller, etc.

Power Consumption: As low as 32 µA in Stop mode, total current consumption as low as 4µA

Main Applications: High-performance industrial control, graphical interfaces, real-time processing, complex embedded systems

Ecosystem: Extensive STM32 ecosystem, including STM32CubeMX, HAL libraries, etc.

Price: Typically higher

ESP32

CPU: Xtensa LX6 Dual-Core (up to 240 MHz)

RAM: 520 KB SRAM

Flash Memory: 448 KB ROM (built-in), external Flash expandable

Connectivity: Wi-Fi (802.11 b/g/n), Bluetooth (v4.2 BR/EDR & BLE), SPI, I2S, I2C, UART, SD/SDIO, etc.

Peripherals: ADC, DAC, Touch Sensors, PWM, IR Remote, Pulse Counter, etc.

Power Consumption: Deep sleep current 5 µA

Main Applications: Internet of Things (IoT), wireless communication, smart home, low-power applications

Ecosystem: ESP-IDF, Arduino IDE, MicroPython, etc.

Price: Typically lower

Summary:

The **STM32H7** series are high-performance microcontrollers designed for applications requiring significant processing power, rich peripherals, and real-time capabilities, such as advanced industrial control, graphical user interfaces, and complex embedded systems. They generally feature more memory and higher clock frequencies.

The **ESP32** series, on the other hand, is a microcontroller with integrated Wi-Fi and Bluetooth, making it ideal for Internet of Things (IoT) applications, wireless communication, and scenarios requiring low-power connectivity. Its strengths lie in its wireless connectivity features and more accessible price point.

The choice between these microcontrollers depends on your specific project needs, including performance requirements, power budget, connectivity demands, and cost considerations.

Iniziare a programmare con STM32H7

Immergersi nella programmazione STM32H7 può essere sia entusiasmante che gratificante. Questa serie offre un’elevata potenza di elaborazione, rendendola la preferita per applicazioni complesse. Comprendere come programmare questi microcontrollori è fondamentale per sfruttare appieno il loro potenziale.
STM32CubeIDE è l’ambiente di sviluppo principale per la programmazione STM32H7. Fornisce una suite integrata di strumenti per la codifica, il debug e la distribuzione di applicazioni. Questa IDE supporta più linguaggi di programmazione, tra cui C e C++, soddisfacendo le diverse preferenze degli sviluppatori.

STM32H7 supporta diversi sistemi operativi in tempo reale (RTOS), tra cui FreeRTOS. Un RTOS consente agli sviluppatori di creare applicazioni con un controllo preciso dei tempi, fondamentale per i sistemi in tempo reale. L’incorporazione di un RTOS può migliorare significativamente le prestazioni dei tuoi progetti STM32H7.

Per iniziare, segui questi passaggi:

  • Installa STM32CubeIDE: scarica e configura l’IDE.
  • Configura la Toolchain: configura i compilatori e i plugin necessari.
  • Impara le basi: esplora l’interfaccia e le funzionalità di STM32CubeIDE.
  • Progetti di esempio: inizia con i modelli forniti per comprendere il flusso di lavoro.
  • Esplora le librerie: utilizza middleware e librerie periferiche.

Esempio di programmazione - Lampeggio di un LED

In questo caso, imparerai a configurare un progetto di base per far lampeggiare un LED. Questo fondamentale “Hello World” della programmazione embedded ti introdurrà al controllo GPIO (General Purpose Input/Output), all’ambiente di sviluppo STM32CubeIDE e ai passaggi essenziali per configurare, codificare, compilare e caricare la tua scheda STM32H7.

Alla fine di questa guida, avrai fatto lampeggiare con successo un LED sulla tua scheda di sviluppo, ponendo una solida base per progetti più complessi.

Requisiti hardware

Prima di iniziare, assicurati di avere l’hardware seguente:

  • Scheda di sviluppo STM32H7:

    • Qualsiasi kit di scoperta STM32H7 (ad esempio, STM32H750B-DK, STM32H7S78-DK)
    • Oppure una scheda STM32H7 Nucleo (ad esempio, STM32H743ZI Nucleo)
    • (La maggior parte di queste schede ha almeno un LED programmabile dall’utente a bordo, in genere collegato a un pin GPIO come PC13, PB0, PB1 o PE1)

  • Cavo da USB Type-A a Micro-B/Type-C: per alimentare la scheda e collegarla al computer per la programmazione/debug.

  • Computer personale: in esecuzione su Windows, macOS o Linux.

Requisiti software

Dovrai avere il seguente software installato sul tuo computer:

  • STM32CubeIDE: questo è l’ambiente di sviluppo integrato ufficiale di STMicroelectronics, che include il compilatore GCC, il debugger e lo strumento di configurazione grafica STM32CubeMX. È gratuito e altamente raccomandato.

Tutorial passo dopo passo

Parte 1: Impostazione del progetto STM32CubeIDE
  1. Avvia STM32CubeIDE: Apri l’applicazione. Se è la prima volta che lo fai, potrebbe chiederti una posizione per lo spazio di lavoro. Scegli una directory adatta.

STM32CubeIDE Launcher window prompting the user to select a directory as workspace.
Selecting the workspace directory for STM32CubeIDE before launching the IDE
  1. Crea un nuovo progetto STM32:

Vai a File > Nuovo > Progetto STM32.

STM32CubeIDE menu showing "File > New > STM32 Project" option selected.
Navigating the STM32CubeIDE menu to create a new STM32 Project

Dopo che il sistema ha inizializzato il selettore di destinazione STM32, puoi specificare il tuo microcontroller STM32H7 esatto nella finestra “Selezione destinazione”.

STM32CubeIDE initializing the target microcontroller selector
STM32CubeIDE initializing the target microcontroller selector

Puoi utilizzare la barra di ricerca “Numero di parte”. Ad esempio:

        • Se hai un STM32H743ZI Nucleo, digita STM32H743ZI.
        • Se hai un STM32H750B-DK, digita STM32H750VB.
        • Se hai un STM32H7S78-DK, digita STM32H7S78.

Seleziona il tuo dispositivo specifico dall’elenco e fai clic su Avanti.

STM32CubeIDE "Target Selection" window showing STM32H743ZI selected in the Part Number filter.
Selecting the STM32H743ZI microcontroller in the STM32CubeIDE target selection wizard
  1. Nome del progetto e impostazioni:
    • Nome del progetto: Inserisci un nome descrittivo, ad esempio H7_LED_Blink.
    • Tipo di progetto mirato: Lascia come Vuoto.
    • Fai clic su Fine.
    • Se richiesto di inizializzare tutte le periferiche con la loro modalità predefinita, fai clic su . Questo aprirà l’interfaccia di configurazione STM32CubeMX.
STM32CubeIDE "Setup STM32 project" window showing the Project Name "H7_LED_Blink".
Naming the new STM32 project "H7_LED_Blink" in STM32CubeIDE
Parte 2: Configurazione STM32CubeMX (all'interno di STM32CubeIDE)

Una volta creato il progetto, il file .ioc (file di configurazione STM32CubeMX) si aprirà. Qui configurerai graficamente il tuo microcontrollore.

  1. Pinout & Configurazione:

    • Identifica il pin del LED: Consulta il manuale utente della tua scheda di sviluppo per trovare a quale pin GPIO è collegato il LED integrato. I pin comuni includono PC13 (per le schede Nucleo-144), PB0, PB1 o PE1.

    • Configura il pin GPIO:

      • Trova il pin identificato sullo schema del chip o nella visualizzazione “Pinout” (ad esempio, PC13).

      • Fai clic con il pulsante sinistro del mouse sul pin e seleziona GPIO_Output. Il pin diventerà verde, indicando che è configurato come uscita.

      • Facoltativo – Etichetta utente: È buona norma etichettare i tuoi pin. Puoi fare clic con il pulsante destro del mouse sul pin e selezionare Inserisci etichetta utente. Digita Onboard_LED (o un nome descrittivo simile).

STM32CubeIDE Pinout & Configuration tab showing PC13 pin selected on the chip diagram with "GPIO_Output" option in a context menu.
Configuring pin PC13 as a GPIO Output on the STM32H7 microcontroller in STM32CubeIDE
    • Configura le impostazioni GPIO:
      • Nella scheda “Pinout & Configurazione”, espandi System Core > GPIO.
      • Trova la riga corrispondente al pin LED configurato (ad esempio, PC13).
      • Nella colonna “Livello di uscita GPIO”, impostalo su Low. (Vogliamo che il LED inizi SPENTO).
      • Assicurati che “Modalità GPIO” sia Output Push Pull.
      • Lascia le altre impostazioni (Pull-up/Pull-down, Velocità di uscita massima) come predefinite per questo esempio di base.
STM32CubeIDE Pinout & Configuration tab showing GPIO settings for PC13, including "GPIO output level" set to "Low"
Setting the GPIO output level for PC13 to "Low" in STM32CubeIDE
  1. System Core -> Configurazione SYS:
    • Nella scheda “Pinout & Configurazione”, espandi System Core > SYS.
    • In “Configurazione”, imposta l’opzione Debug su Serial Wire. Questo è fondamentale per il debug e la programmazione.
  1. Configurazione dell’orologio:
    • Vai alla scheda Clock Configuration.
    • Per un semplice lampeggio del LED, le impostazioni di clock predefinite generate da CubeIDE sono generalmente sufficienti. Non sono in genere necessarie modifiche qui a meno che non siano richieste velocità di clock molto specifiche.
  1. Project Manager & Generazione del codice:
    • Vai alla scheda Project Manager.
    • Verifica il Nome progetto e il Toolchain/IDE (dovrebbe essere STM32CubeIDE).
    • Genera codice: Fai clic sul pulsante Genera codice (l’icona a forma di ingranaggio o Project > Genera codice).
    • Se richiesto di salvare le modifiche, fai clic su .
    • Questa azione genererà tutto il codice di inizializzazione necessario per il tuo progetto in base alla tua configurazione CubeMX.
STM32CubeIDE project configuration window showing the "Project Manager" tab with project settings.
Viewing project settings under the "Project Manager" tab in STM32CubeIDE
Parte 3: Implementazione del codice

Ora che la struttura di base del progetto e le configurazioni periferiche sono impostate, scriveremo la logica di lampeggio effettiva.

  1. Naviga a main.c:

    • Nel pannello Project Explorer (lato sinistro di STM32CubeIDE), naviga a: H7_LED_Blink (nome del tuo progetto) > Core > Src > main.c

    • Fai doppio clic su main.c per aprirlo nell’editor.

  2. Individua il ciclo while(1):

    • Scorri verso il basso in main.c finché non trovi i commenti /* USER CODE BEGIN 3 */ e /* USER CODE END 3 */ all’interno del ciclo while(1). Qui aggiungerai il tuo codice applicativo.

  3. Aggiungi la logica di lampeggio:

    • All’interno del ciclo while(1), aggiungi le seguenti due righe di codice:

				
					/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(Onboard_LED_GPIO_Port, Onboard_LED_Pin); // Toggle the LED state
HAL_Delay(500); // Wait for 500 milliseconds (0.5 seconds)
/* USER CODE END 3 */
				
			

Spiegazione del codice:

  • HAL_GPIO_TogglePin(): Questa è una funzione della libreria STM32Cube HAL (Hardware Abstraction Layer). Cambia lo stato del pin GPIO specificato da alto a basso, o da basso ad alto.

    • Onboard_LED_GPIO_Port: Questa è una macro generata automaticamente da CubeMX, che rappresenta la porta GPIO (ad esempio, GPIOC se il tuo LED è su PC13).

    • Onboard_LED_Pin: Questa è una macro generata automaticamente da CubeMX, che rappresenta il numero di pin specifico (ad esempio, GPIO_PIN_13 se il tuo LED è su PC13).

  • HAL_Delay(500): Questa funzione HAL crea un ritardo bloccante per il numero di millisecondi specificato. Qui, mette in pausa l’esecuzione per 500 ms (mezzo secondo).

>
Parte 4: Compila, carica e verifica

Finalmente, compiliamo il tuo codice, carichiamolo sulla scheda e vediamo il LED lampeggiare!

  1. Collega la tua scheda:

    • Collega un’estremità del cavo USB alla porta USB appropriata sulla tua scheda di sviluppo STM32H7 (di solito etichettata “USB ST-LINK” o “USB USER”).

    • Collega l’altra estremità a una porta USB del tuo computer. Il tuo computer dovrebbe riconoscere la scheda.

  2. Compila il progetto:

    • Vai a Project > Build Project o fai clic sull’icona del martello nella barra degli strumenti.

    • Controlla la vista “Console” per eventuali errori o avvisi. Una compilazione riuscita mostrerà “Build Finished” e indicherà che non ci sono errori.

  3. Carica il programma sulla scheda:

    • Vai a Run > Debug o fai clic sull’icona Debug (un insetto verde).

    • STM32CubeIDE configurerà automaticamente le impostazioni del debugger (ST-LINK).

    • Fai clic su OK o Switch se richiesto per passare alla prospettiva Debug.

    • Il programma verrà compilato (se non lo è già), scaricato nella memoria flash della tua scheda STM32H7 e il debugger verrà avviato.

  4. Osserva il LED lampeggiante:

    • Una volta completata la programmazione e l’avvio del programma, dovresti vedere il LED utente sulla tua scheda di sviluppo STM32H7 iniziare a lampeggiare su e giù, con un intervallo di mezzo secondo.

  5. Esci dal debug:

    • Per interrompere il debugger e lasciare che il programma venga eseguito liberamente, fai clic sul pulsante rosso “Terminate” nella prospettiva Debug, quindi fai clic sul pulsante “Run” (riproduzione verde). In alternativa, scollega semplicemente il cavo USB e ricollegalo (il programma è già nella flash).

    • Per tornare alla prospettiva C/C++, fai clic su Window > Perspective > Open Perspective > C/C++.

Parte 5: Conclusione e prossimi passi

Congratulazioni! Hai completato con successo il tuo primo progetto di programmazione embedded STM32H7. Hai imparato come:

  • Creare un nuovo progetto in STM32CubeIDE.

  • Configurare i pin GPIO utilizzando STM32CubeMX.

  • Scrivere codice C di base utilizzando le funzioni HAL.

  • Compilare, programmare ed eseguire il tuo programma sulla scheda STM32H7.

Prossimi passi:

  • Sperimenta con il ritardo: Modifica il valore HAL_Delay() per far lampeggiare il LED più velocemente o più lentamente.

  • Controlla più LED: Configura un altro pin GPIO come output e fai lampeggiare più LED contemporaneamente o in sequenza.

  • Input del pulsante: Configura un pin GPIO come input per leggere lo stato di un pulsante utente e controllare il LED in base alle pressioni del pulsante.

  • Esplora altri periferici: Dai un’occhiata all’utilizzo di UART per la comunicazione seriale, Timer per la temporizzazione precisa o ADC per le letture analogiche.

La programmazione STM32H7 beneficia di ampie librerie e middleware forniti da STMicroelectronics. Queste risorse semplificano il processo di aggiunta di funzionalità complesse alle tue applicazioni. Con un solido supporto della community e una documentazione dettagliata, iniziare a programmare con STM32H7 è semplice e raggiungibile.

Strumenti e software essenziali per lo sviluppo STM32H7

Intraprendere lo sviluppo STM32H7 richiede una suite di strumenti e software essenziali. Queste risorse garantiscono un flusso di lavoro efficiente e una gestione completa del progetto. Scegliere gli strumenti giusti migliora notevolmente il processo di sviluppo.

Il primo passo consiste nella selezione di un ambiente di sviluppo integrato (IDE) compatibile. STM32CubeIDE è ideale per la programmazione STM32H7. Integra più funzioni, offrendo capacità di codifica, compilazione e debug in una piattaforma. Questa comodità è impareggiabile per gli sviluppatori.

Oltre a STM32CubeIDE, considera l’utilizzo di STM32CubeMX. Questo strumento grafico semplifica la configurazione delle impostazioni del microcontrollore. Consente una facile gestione delle periferiche e delle configurazioni dei pin, semplificando la fase di configurazione del tuo progetto.

Ecco un elenco di strumenti essenziali per lo sviluppo STM32H7:

  • STM32CubeIDE: ambiente di sviluppo completo.
  • STM32CubeMX: semplifica la configurazione delle periferiche.
  • Strumenti di debug/programmazione: ST-LINK/V2 per il debug on-chip.
  • Librerie e middleware: migliorano la funzionalità dell’applicazione.

ST-LINK/V2 è fondamentale per il debug e la programmazione in circuito. Consente agli sviluppatori di connettere senza problemi le proprie schede di sviluppo STM32H7 ai computer, fornendo informazioni dettagliate e controllo durante la risoluzione dei problemi. L’utilizzo di questi strumenti garantisce che lo sviluppo STM32H7 sia sia efficace che piacevole.

Conclusione

La serie STM32H7 offre prestazioni e versatilità senza pari. È una scelta solida per i progetti che richiedono una potenza di elaborazione robusta e un controllo preciso. Con la sua gamma di funzionalità, si rivolge a vari settori e applicazioni.

Prima di selezionare STM32H7, valuta i requisiti specifici del tuo progetto. Considera fattori come la velocità di elaborazione, la connettività e il budget. Se le prestazioni elevate e le funzionalità avanzate sono fondamentali, STM32H7 è probabilmente ben adatto a soddisfare le tue esigenze.

Iscriviti

Unisciti alla nostra lista di iscritti per ricevere aggiornamenti mensili sul blog, notizie tecnologiche, casi di studio. Non invieremo mai spam e potrai annullare l’iscrizione in qualsiasi momento.

Informazioni sull'autore

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Hai bisogno di aiuto?

Torna in alto

Instant Quote