Serie STM32WBA di STMicroelectronics Guida introduttiva
Informazioni sul prodotto
Specifiche:
- Nome del prodotto: Pacchetto MCU STM32CubeWBA
- Produttore: STMicroelettronica
- Compatibilità: Microcontrollori serie STM32WBA
- Licenza: Licenza BSD open source
Istruzioni per l'uso del prodotto
Caratteristiche principali del pacchetto MCU STM32CubeWBA:
Il pacchetto MCU STM32CubeWBA fornisce tutti i componenti software integrati necessari per lo sviluppo di applicazioni sui microcontrollori della serie STM32WBA. È altamente portabile all'interno della serie STM32 e viene fornito con API HAL e LL, ad esample e componenti middleware.
Architettura finitaview:
L'architettura del pacchetto MCU STM32CubeWBA è composta da tre livelli: applicazioni, componenti basati su libreria e protocollo, livello di astrazione hardware, driver BSP, driver core e API di livello basso.
Domande frequenti
- Cosa è incluso nel pacchetto MCU STM32CubeWBA?
Il pacchetto include API di livello basso (LL) e di livello di astrazione hardware (HAL), ad esample, applicazioni, componenti middleware come FileX/LevelX, NetX Duo, librerie mbed-crypto e altro ancora. - Il pacchetto MCU STM32CubeWBA è compatibile con il generatore di codice STM32CubeMX?
Sì, il pacchetto è completamente compatibile con il generatore di codice STM32CubeMX per la generazione del codice di inizializzazione.
Introduzione
- STM32Cube è un'iniziativa originale di STMicroelectronics volta a migliorare significativamente la produttività dei progettisti riducendo gli sforzi, i tempi e i costi di sviluppo. STM32Cube copre l'intero portafoglio STM32.
STM32Cube include:- Un insieme di strumenti di sviluppo software user-friendly per coprire lo sviluppo del progetto dall'ideazione alla realizzazione, tra cui:
- STM32CubeMX, uno strumento di configurazione software grafico che consente la generazione automatica del codice di inizializzazione C utilizzando procedure guidate grafiche
- STM32CubeIDE, uno strumento di sviluppo all-in-one con funzionalità di configurazione delle periferiche, generazione di codice, compilazione di codice e debug
- STM32CubeCLT, un set di strumenti di sviluppo da riga di comando all-in-one con compilazione di codice, programmazione di schede e funzionalità di debug
- STM32CubeProgrammer (STM32CubeProg), uno strumento di programmazione disponibile in versioni grafiche e da riga di comando
- STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), potenti strumenti di monitoraggio per ottimizzare il comportamento e le prestazioni delle applicazioni STM32 in tempo reale
- Pacchetti MCU e MPU STM32Cube, piattaforme software integrate complete specifiche per ciascuna serie di microcontrollori e microprocessori (come STM32CubeWBA per la serie STM32WBA), che includono:
- STM32Cube Hardware Abstraction Layer (HAL), che garantisce la massima portabilità nel portafoglio STM32
- API a basso livello STM32Cube, che garantiscono le migliori prestazioni e footprint con un alto grado di controllo dell'utente sull'hardware
- Un insieme coerente di componenti middleware come ThreadX, FileX / LevelX, NetX Duo, USBX, libreria touch, mbed-crypto, TFM, MCUboot, OpenBL e STM32_WPAN (incluso Bluetooth® Low Energy profileservizi e servizi, Mesh, Zigbee®, OpenThread, Matter e livello MAC 802.15.4)
- Tutte le utilità software integrate con set completi di periferiche e applicazioni examples
- Pacchetti di espansione STM32Cube, che contengono componenti software integrati che completano le funzionalità dei pacchetti MCU e MPU STM32Cube con:
- Estensioni del middleware e livelli applicativi
- Exampfile in esecuzione su alcune schede di sviluppo STMicroelectronics specifiche
- Un insieme di strumenti di sviluppo software user-friendly per coprire lo sviluppo del progetto dall'ideazione alla realizzazione, tra cui:
- Questo manuale utente descrive come iniziare con il pacchetto MCU STM32CubeWBA.
- La sezione 2 Caratteristiche principali di STM32CubeWBA descrive le caratteristiche principali del pacchetto MCU STM32CubeWBA.
- Sezione 3 Architettura STM32CubeWBA terminataview fornisce un overview dell'architettura STM32CubeWBA e della struttura del pacchetto MCU.
informazioni generali
Il pacchetto MCU STM32CubeWBA funziona su microcontrollori STM32 a 32 bit basati sul processore Arm® Cortex®-M33 con Arm® TrustZone® e FPU.
Nota: Arm e TrustZone sono marchi registrati di Arm Limited (o delle sue consociate) negli Stati Uniti e/o altrove.
Caratteristiche principali di STM32CubeWBA
- Il pacchetto MCU STM32CubeWBA funziona su microcontrollori STM32 a 32 bit basati sul processore Arm® Cortex®-M33 con TrustZone® e FPU.
- STM32CubeWBA riunisce, in un unico pacchetto, tutti i componenti software embedded generici necessari per sviluppare un'applicazione per i microcontrollori della serie STM32WBA. In linea con l'iniziativa STM32Cube, questo set di componenti è altamente trasportabile, non solo all'interno dei microcontrollori della serie STM32WBA ma anche ad altre serie STM32.
- STM32CubeWBA è completamente compatibile con il generatore di codice STM32CubeMX, per generare codice di inizializzazione. Il pacchetto include API Low Layer (LL) e HAL (Hardware Abstraction Layer) che coprono l'hardware del microcontrollore, insieme a un ampio set di example in esecuzione su schede STMicroelectronics. Le API HAL e LL sono disponibili in una licenza BSD open source per comodità dell'utente.
- Il pacchetto MCU STM32CubeWBA contiene anche un componente middleware completo costruito attorno al middleware RTOS di Microsoft® Azure® e altri stack interni e open source, con i corrispondenti exampmeno.
- Vengono forniti con termini di licenza gratuiti e di facile utilizzo:
- Azure® RTOS integrato e completo: Azure® RTOS ThreadX
- Implementazione CMSIS-RTOS con Azure® RTOS ThreadX
- Stack host e dispositivo USB forniti con molte classi: Azure® RTOS USBX
- Avanzato file livello di sistema e traduzione flash: FileX/LivelloX
- Stack di rete di livello industriale: ottimizzato per le prestazioni fornite con molti protocolli IoT: NetX Duo
- OpenBootloader
- Soluzione di integrazione Arm® Trusted Firmware-M (TF‑M).
- librerie di crittografia mbed
- Biblioteca della rete ST
- Soluzione di libreria di rilevamento tattile STMTouch
- Nel pacchetto MCU STM32CubeWBA sono fornite anche diverse applicazioni e dimostrazioni che implementano tutti questi componenti middleware.
- Il layout dei componenti del pacchetto MCU STM32CubeWBA è illustrato nella Figura 1. Componenti del pacchetto MCU STM32CubeWBA.
Architettura STM32CubeWBA terminataview
La soluzione del pacchetto MCU STM32CubeWBA è costruita attorno a tre livelli indipendenti che interagiscono facilmente come descritto nella Figura 2. Architettura del pacchetto MCU STM32CubeWBA.
Livello 0
Questo livello è diviso in tre sottolivelli:
- Pacchetto di supporto al consiglio di amministrazione (BSP).
- Livello di astrazione hardware (HAL):
- Driver periferici HAL
- Driver di basso livello
- Utilizzo delle periferiche di base, ad esampmeno.
Pacchetto di supporto al consiglio di amministrazione (BSP)
Questo livello offre una serie di API relative ai componenti hardware nelle schede hardware (come driver LCD, audio,\microSD™ e MEMS). E' composto da due parti:
- Driver del componente:
Questo driver è correlato al dispositivo esterno sulla scheda e non al dispositivo STM32. Il componente driver fornisce API specifiche ai componenti esterni del driver BSP e potrebbe essere trasportabile su qualsiasi altra scheda. - Driver BSP:
Il driver BSP consente di collegare i driver del componente a una scheda specifica e fornisce una serie di funzionalità di facile utilizzo
API. La regola di denominazione dell'API è BSP_FUNCT_Action().
Exampfile: BSP_LED_Init(), BSP_LED_On()
BSP è basato su un'architettura modulare che consente un facile porting su qualsiasi hardware semplicemente implementando le routine di basso livello.
Livello di astrazione hardware (HAL) e livello basso (LL)
STM32CubeWBA HAL e LL sono complementari e coprono un'ampia gamma di requisiti applicativi:
- I driver HAL offrono API altamente portabili e orientate alle funzioni di alto livello. Nascondono l'MCU e la complessità delle periferiche all'utente finale.
I driver HAL forniscono API generiche multiistanza orientate alle funzionalità, che semplificano l'implementazione delle applicazioni utente fornendo processi pronti all'uso. Per esample, per le periferiche di comunicazione (I2S, UART e altre), fornisce API che consentono l'inizializzazione e la configurazione della periferica, la gestione del trasferimento dei dati in base al polling, all'interruzione o al processo DMA e la gestione degli errori di comunicazione che possono verificarsi durante la comunicazione. Le API del driver HAL sono suddivise in due categorie:- API generiche, che forniscono funzioni comuni e generiche a tutti i microcontrollori della serie STM32.
- API di estensione, che forniscono funzioni specifiche e personalizzate per una famiglia specifica o un codice articolo specifico.
- Le API di basso livello forniscono API di basso livello a livello di registro, con una migliore ottimizzazione ma meno portabilità.
- Richiedono una conoscenza approfondita delle specifiche MCU e periferiche.
- I driver LL sono progettati per offrire un livello veloce e leggero, orientato agli esperti, più vicino all'hardware rispetto all'HAL. Contrariamente all'HAL, le API LL non vengono fornite per le periferiche in cui l'accesso ottimizzato non è una caratteristica chiave o per quelle che richiedono una configurazione software pesante o uno stack complesso di livello superiore.
- I driver LL presentano:
- Un insieme di funzioni per inizializzare le principali funzionalità della periferica in base ai parametri specificati nelle strutture dati.
- Un insieme di funzioni per riempire le strutture dati di inizializzazione con i valori di ripristino corrispondenti a ciascun campo.
- Funzione di deinizializzazione delle periferiche (registri periferici ripristinati ai valori di default).
- Un insieme di funzioni in linea per l'accesso diretto e atomico ai registri.
- Piena indipendenza da HAL e possibilità di essere utilizzato in modalità standalone (senza driver HAL).
- Copertura completa delle funzionalità periferiche supportate.
Utilizzo delle periferiche di base, ad esamples
Questo strato racchiude l'example costruiti sulle periferiche STM32 utilizzando solo le risorse HAL e BSP.
Livello 1
Questo livello è diviso in due sottolivelli:
- Componenti del middleware
- Example basati sui componenti middleware
Componenti del middleware
- Il middleware è un insieme di librerie che coprono Bluetooth® Low Energy (Linklayer, HCI, Stack), Thread®, Zigbee®,
- Matter, OpenBootloader, Microsoft® Azure® RTOS, TF‑M, MCUboot e mbed-crypto.
- L'interazione orizzontale tra i componenti di questo livello viene eseguita chiamando le API in primo piano.
- L'interazione verticale con i driver di basso livello avviene tramite callback specifici e macro statiche implementate nell'interfaccia delle chiamate di sistema della libreria.
- Le caratteristiche principali di ciascun componente middleware sono le seguenti:
- Microsoft® Azure® RTOS
- Azure® RTOS ThreadX: un sistema operativo in tempo reale (RTOS), progettato per sistemi embedded con due modalità funzionali.
- Modalità comune: funzionalità RTOS comuni come gestione e sincronizzazione dei thread, gestione del pool di memoria, messaggistica e gestione degli eventi.
- Modalità modulo: una modalità utente avanzata che consente il caricamento e lo scaricamento al volo di moduli ThreadX precollegati tramite un gestore moduli.
- NetX Duo
- FileX
- USBX
- Azure® RTOS ThreadX: un sistema operativo in tempo reale (RTOS), progettato per sistemi embedded con due modalità funzionali.
- Bluetooth® Low Energy (BLE): implementa il protocollo Bluetooth® Low Energy per i livelli Link e Stack.
- MCUboot (software open source)
- Protocolli Zigbee® per lo stack e i relativi cluster.
- Stack di protocolli Thread® e livello di collegamento.
- Arm® Trusted Firmware-M, TF‑M (software open source): implementazione di riferimento dell'architettura di sicurezza della piattaforma Arm® (PSA) per TrustZone® con i servizi sicuri associati.
- mbed-crypto (software open source): il middleware mbed-crypto fornisce un'implementazione API di crittografia PSA.
- Libreria di rilevamento tattile STM32: robusta soluzione di rilevamento tattile capacitivo STMTouch, che supporta sensori tattili di prossimità, touchkey, lineari e rotanti. Si basa su un comprovato principio di acquisizione del trasferimento di carica superficiale.
- Microsoft® Azure® RTOS
Example basati sui componenti middleware
Ogni componente middleware viene fornito con uno o più example (chiamati anche applicazioni) che mostrano come usarlo. Integrazione esampVengono forniti anche le che utilizzano diversi componenti middleware.
Pacchetto firmware STM32CubeWBA terminatoview
Dispositivi e hardware della serie STM32WBA supportati
- STM32Cube offre un livello di astrazione hardware (HAL) altamente portabile costruito attorno a un'architettura generica. Consente il principio dei livelli di build-up, come l'utilizzo del livello middleware per implementare le proprie funzioni senza sapere, in modo approfondito, quale MCU viene utilizzato. Ciò migliora la riusabilità del codice della libreria e garantisce una facile portabilità su altri dispositivi.
- Inoltre, grazie alla sua architettura a più livelli, STM32CubeWBA offre il pieno supporto di tutte le serie STM32WBA.
- L'utente deve solo definire la macro corretta in stm32wbaxx.h.
- La tabella 1 mostra la macro da definire a seconda del dispositivo serie STM32WBA utilizzato. Questa macro deve essere definita anche nel preprocessore del compilatore.
Tabella 1. Macro per la serie STM32WBAMacro definita in stm32wbaxx.h Dispositivi della serie STM32WBA stm32wba52xx STM32WBA52CGU6, STM32WBA52KGU6, STM32WBA52CEU6, STM32WBA52KEU6 stm32wba55xx STM32WBA55CGU6, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CEU6, STM32WBA55CEU7 - STM32CubeWBA presenta un ricco set di example e applicazioni a tutti i livelli semplificando la comprensione e l'utilizzo di qualsiasi driver HAL o componente middleware. Questi exampi vengono eseguiti sulle schede STMicroelectronics elencate nella Tabella 2.
Tabella 2. Schede per la serie STM32WBAAsse Dispositivi supportati dalla scheda STM32WBA NUCLEO-WBA52CG STM32WBA52CGU6 NUCLEO-WBA55CG STM32WBA55CGU6 STM32WBA55-DK1 STM32WBA55CGU7 - Il pacchetto MCU STM32CubeWBA può essere eseguito su qualsiasi hardware compatibile. L'utente aggiorna semplicemente i driver BSP per eseguire il porting dell'example sulla scheda, se quest'ultima ha le stesse caratteristiche hardware (come LED, display LCD e pulsanti).
Pacchetto firmware terminatoview
- La soluzione del pacchetto STM32CubeWBA viene fornita in un unico pacchetto zip avente la struttura mostrata nella Figura 3. Struttura del pacchetto firmware STM32CubeWBA.
- Per ogni tavola, un set di example viene fornito con progetti preconfigurati per le toolchain EWARM, MDK-ARM e STM32CubeIDE.
- Figura 4. STM32CubeWBA example cose sono finiteview mostra la struttura del progetto per le schede NUCLEO‑WBA52CG, NUCLEO-WBA55CG e STM32WBA55G-DK1.
- L'exampi le sono classificati in base al livello STM32Cube a cui si applicano e sono denominati come segue:
- Livello 0 esample sono chiamati Example, esamples_LL ed esamples_MIX. Utilizzano rispettivamente driver HAL, driver LL e un mix di driver HAL e LL senza alcun componente middleware.
- Livello 1 esampi le sono chiamati Applicazioni. Forniscono casi d'uso tipici di ciascun componente middleware. Qualsiasi applicazione firmware per una determinata scheda può essere creata rapidamente grazie ai progetti modello disponibili nelle directory Templates e Templates_LL.
Progetti abilitati TrustZone®
- TrustZone® abilitato EsampI nomi dei le contengono il prefisso _TrustZone. La regola si applica anche per le Applicazioni (ad eccezione di TFM e SBSFU, che sono nativamente per TrustZone®).
- Abilitato per TrustZone® Exampi e le applicazioni vengono forniti con una struttura multiprogetto composta da sottoprogetti sicuri e non sicuri, come presentato nella Figura 5. Struttura del progetto multiprogetto sicuro e non sicuro.
- I progetti abilitati per TrustZone® sono sviluppati secondo il modello del dispositivo CMSIS-5, esteso per includere l'intestazione di partizionamento del sistema file partizione_ .h, che è principalmente responsabile della configurazione della Secure Attribute Unit (SAU), della FPU e dell'assegnazione degli interrupt sicuri/non sicuri nello stato di esecuzione sicuro.
- Questa configurazione viene eseguita nella funzione sicura CMSIS SystemInit(), che viene richiamata all'avvio prima di accedere alla funzione sicura main() dell'applicazione. Fare riferimento alla documentazione Arm® TrustZone®-M delle linee guida del software.
- Il pacchetto firmware del pacchetto STM32CubeWBA fornisce il partizionamento della memoria predefinito nella partizione _ .H fileÈ disponibile in: \Drivers\CMSIS\Device\ST\STM32WBAxx\Include\T emplates
- In queste partizioni files, la SAU è disabilitata per impostazione predefinita. Di conseguenza, la mappatura della memoria IDAU viene utilizzata per l'attribuzione della sicurezza. Fare riferimento alla figura Partizionamento sicuro/non sicuro utilizzando la tecnologia TrustZone® nel manuale di riferimento RM0495.
- Se l'utente abilita la SAU, nella partizione è predefinita una configurazione delle regioni SAU fileè come segue:
- Regione SAU 0: 0x08080000 – 0x081FFFFF (metà sicura non protetta della memoria flash (512 Kbyte))
- Regione SAU 1: 0x0BF88000 – 0x0BF97FFF (memoria di sistema non protetta)
- Regione SAU 2: 0x0C07E000 - 0x0C07FFFF (richiamabile sicuro, non protetto)
- Regione SAU 3: 0x20010000 – 0x2001FFFF (SRAM2 non protetta (64 Kbyte))
- Regione SAU 4: 0x40000000 – 0x4FFFFFFFF (memoria mappata periferica non protetta)
- Per corrispondere al partizionamento predefinito, i dispositivi della serie STM32WBAxx devono avere i seguenti byte di opzioni utente impostati:
- TZEN = 1 (dispositivo compatibile con TrustZone®)
- SECWM1_PSTRT = 0x0 SECWM1_PEND = 0x3F (64 pagine su 128 della memoria flash interna impostate come protette) Nota: la memoria flash interna è completamente protetta per impostazione predefinita in TZEN = 1. I byte dell'opzione utente SECWM1_PSTRT/ SECWM1_PEND devono essere impostati in base all'applicazione configurazione della memoria (regioni SAU, se SAU è abilitato). Linker di progetti di applicazioni sicure/non sicure fileAnche s deve essere allineato.
- Tutti example hanno la stessa struttura:
- Cartella \Inc contenente tutte le intestazioni files.
- Cartella Src contenente il codice sorgente.
- Cartelle \EWARM, \MDK-ARM e \STM32CubeIDE contenenti il progetto preconfigurato per ciascuna toolchain.
- readme.md e readme.html che descrivono l'exampcomportamento e l’ambiente necessario per farlo funzionare.
- cio file che consente agli utenti di aprire la maggior parte del firmware example all'interno di STM32CubeMX.
Iniziare con STM32CubeWBA
Esecuzione di un primo HAL example
Questa sezione spiega quanto sia semplice eseguire il primo example all'interno di STM32CubeWBA. Viene utilizzata come illustrazione la generazione di un semplice interruttore LED in esecuzione sulla scheda NUCLEO-WBA52CG:
- Scarica il pacchetto MCU STM32CubeWBA.
- Decomprimilo in una directory a tua scelta.
- Assicurarsi di non modificare la struttura del pacchetto mostrata nella Figura 1. Si consiglia inoltre di copiare il pacchetto in una posizione vicina al volume root (ovvero C:\ST o G:\Tests), poiché alcuni IDE riscontrano problemi quando il percorso la lunghezza è troppo lunga.
Eseguire un primo TrustZone® abilitato, ad esample
- Prima di caricare ed eseguire un TrustZone® abilitato, ad esample, è obbligatorio leggere l'exampleggimi file per qualsiasi configurazione specifica, che garantisce che la sicurezza sia abilitata come descritto nella Sezione 4.2.1 Progetti abilitati TrustZone® (TZEN=1 (byte opzione utente)).
- Passare a \Projects\NUCLEO-WBA52CG\Exampmeno.
- Apri le cartelle \GPIO, quindi \GPIO_IOToggle_TrustZone.
- Apri il progetto con la tua toolchain preferita. Un breve passaggioview su come aprire, creare ed eseguire un example con le toolchain supportate è riportato di seguito.
- Ricostruisci in sequenza tutti i progetti sicuri e non sicuri files e caricare le immagini sicure e non sicure nella memoria di destinazione.
- Eseguire l'example: regolarmente, l'applicazione sicura attiva/disattiva LD2 ogni secondo e l'applicazione non sicura attiva/disattiva LD3 due volte più velocemente. Per maggiori dettagli fare riferimento al file Leggimi file dell'examplui.
- Per aprire, creare ed eseguire un example con le toolchain supportate, seguire i passaggi seguenti:
- ECALDO:
- Sotto l'example, aprire la sottocartella \EWARM.
- Avviare l'area di lavoro Project.eww
- Ricostruisci il progetto sicuro xxxxx_S files: [Progetto]>[Ricostruisci tutto].
- Imposta il progetto non sicuro xxxxx_NS come applicazione attiva (fai clic con il pulsante destro del mouse sul progetto xxxxx_NS [Imposta come attivo])
- Ricostruire il progetto non sicuro xxxxx_NS files: [Progetto]>[Ricostruisci tutto].
- Eseguire il flashing del file binario non sicuro con [Project]>[Download]>[Download active application] .
- Impostare xxxxx_S come applicazione attiva (fare clic con il pulsante destro del mouse sul progetto xxxxx_S [Imposta come attivo].
- Aggiorna il file binario protetto con [Download e debug] (Ctrl+D).
- Eseguire il programma: [Debug]>[Vai(F5)]
- MDK-BRACCIO:
- Apri la toolchain \MDK-ARM.
- Apri l'area di lavoro Multiprogetti file Progetto.uvmpw.
- Selezionare il progetto xxxxx_s come applicazione attiva ([Imposta come progetto attivo]).
- Costruisci il progetto xxxxx_s.
- Selezionare il progetto xxxxx_ns come progetto attivo ([Imposta come progetto attivo]).
- Costruisci il progetto xxxxx_ns.
- Caricare il file binario non protetto ([F8]). Questo scarica \MDK-ARM\xxxxx_ns\Exe\xxxxx_ns.axf nella memoria flash)
- Selezionare il progetto Project_s come progetto attivo ([Imposta come progetto attivo]).
- Caricare il file binario protetto ([F8]). Questo scarica \MDK-ARM\xxxxx_s\Exe\xxxxx_s.axf nella memoria flash).
- Eseguire l'examplui.
- STM32CubeIDE:
- Apri la toolchain STM32CubeIDE.
- Apri l'area di lavoro Multiprogetti file .progetto.
- Ricostruire il progetto xxxxx_Secure.
- Ricostruire il progetto xxxxx_NonSecure.
- Avviare l'applicazione [Debug come STM32 Cortex-M C/C++] per il progetto protetto.
- Nella finestra [Modifica configurazione], selezionare il pannello [Avvio] e aggiungere caricare l'immagine e i simboli del progetto non sicuro.
Importante: Il progetto non sicuro deve essere caricato prima del progetto sicuro. - Fare clic su [Ok].
- Eseguire l'example sulla prospettiva di debug.
- ECALDO:
Esecuzione di un primo TrustZone® disabilitato, ad esample
- Prima di caricare ed eseguire un TrustZone® disabilitato, ad esample, è obbligatorio leggere l'exampleggimi file per qualsiasi configurazione specifica. Se non ci sono menzioni specifiche, assicurarsi che il dispositivo della scheda abbia la sicurezza disabilitata (TZEN=0 (byte opzione utente)). Vedi le FAQ per eseguire la regressione opzionale a TZEN = 0
- Passare a \Projects\NUCLEO-WBA52CG\Exampmeno.
- Apri le cartelle \GPIO, quindi \GPIO_EXTI.
- Apri il progetto con la tua toolchain preferita. Un breve passaggioview su come aprire, creare ed eseguire un example con le toolchain supportate è riportato di seguito.
- Ricostruisci tutto files e carica la tua immagine nella memoria di destinazione.
- Eseguire l'example: Ogni volta che si preme il pulsante [USER], il LED LD1 si alterna. Per maggiori dettagli fare riferimento al file Leggimi file dell'examplui.
- Per aprire, creare ed eseguire un example con le toolchain supportate, seguire i passaggi seguenti:
- ECALDO:
- Sotto l'example, aprire la sottocartella \EWARM.
- Avvia l'area di lavoro Project.eww (il nome dell'area di lavoro può cambiare da un example ad un altro).
- Ricostruisci tutto files: [Progetto]>[Ricostruisci tutto].
- Caricare l'immagine del progetto: [Progetto]>[Debug].
- Eseguire il programma: [Debug]>[Vai (F5)].
- MDK-BRACCIO:
- Sotto l'example, aprire la sottocartella \MDK-ARM.
- Avvia l'area di lavoro Project.uvproj (il nome dell'area di lavoro può cambiare da un example ad un altro).
- Ricostruisci tutto files:[Progetto]>[Ricostruisci tutti i target fileS].
- Caricare l'immagine del progetto: [Debug]>[Avvia/Interrompi sessione di debug].
- Esegui il programma: [Debug]>[Esegui (F5)].
- STM32CubeIDE:
- Apri la toolchain STM32CubeIDE.
- Fare clic su [File]>[Cambia area di lavoro]>[Altro] e passare alla directory dell'area di lavoro STM32CubeIDE.
- Fare clic su [File]>[Importa], selezionare [Generale]>[Progetti esistenti nell'area di lavoro], quindi fare clic su [Avanti].
- Passare alla directory dell'area di lavoro STM32CubeIDE e selezionare il progetto.
- Ricostruisci tutto il progetto files: Selezionare il progetto nella finestra [Esplora progetto], quindi fare clic sul menu [Progetto]>[Crea progetto].
- Eseguire il programma: [Esegui]>[Debug (F11)]
- ECALDO:
Sviluppo di un'applicazione personalizzata
Nota: Il software deve abilitare la cache delle istruzioni (ICACHE) per ottenere un'esecuzione in stato di attesa 0 dalla memoria flash e raggiungere le massime prestazioni e un migliore consumo energetico.
Utilizzo di STM32CubeMX per sviluppare o aggiornare un'applicazione
- Nel pacchetto MCU STM32CubeWBA, quasi tutti i progetti exampi le vengono generati con lo strumento STM32CubeMX per inizializzare il sistema, le periferiche e il middleware.
- L'utilizzo diretto di un progetto esistente esampil file dallo strumento STM32CubeMX richiede STM32CubeMX 6.10.0 o versione successiva:
- Dopo l'installazione di STM32CubeMX, apri e se necessario aggiorna un progetto proposto. Il modo più semplice per aprire un progetto esistente è fare doppio clic sul file *.ioc file in modo che STM32CubeMX apra automaticamente il progetto e la sua fonte files.
- STM32CubeMX genera il codice sorgente di inizializzazione di tali progetti. Il codice sorgente dell'applicazione principale è contenuto nei commenti “USER CODE BEGIN” e “USER CODE END”. Nel caso in cui la selezione e l'impostazione dell'IP vengano modificate, STM32CubeMX aggiorna la parte di inizializzazione del codice ma preserva il codice sorgente dell'applicazione principale.
- Per sviluppare un progetto personalizzato in STM32CubeMX, seguire la procedura passo passo:
- Seleziona il microcontrollore STM32 che corrisponde al set di periferiche richiesto.
- Configura tutto il software integrato richiesto utilizzando un risolutore di conflitti di piedinatura, un assistente per l'impostazione dell'albero dell'orologio, un calcolatore del consumo energetico e l'utilità che esegue la configurazione delle periferiche MCU (come GPIO o USART) e stack middleware (come USB).
- Genera il codice C di inizializzazione in base alla configurazione selezionata. Questo codice è pronto per l'uso in diversi ambienti di sviluppo. Il codice utente viene mantenuto alla successiva generazione del codice.
- Per ulteriori informazioni su STM32CubeMX, fare riferimento al manuale utente STM32CubeMX per la configurazione STM32 e la generazione del codice C di inizializzazione (UM1718).
- Per l'elenco dei progetti disponibili esample per STM32CubeWBA, fare riferimento alla nota applicativa del firmware STM32Cube esample per la serie STM32WBA (AN5929).
Applicazioni del conducente
Applicazione HAL
Questa sezione descrive i passaggi necessari per creare un'applicazione HAL personalizzata utilizzando STM32CubeWBA:
- Crea un progetto
- Per creare un nuovo progetto, iniziare dal progetto Template fornito per ogni scheda in \Progetti\ \Modelli o da qualsiasi progetto disponibile in \Progetti\ \Esempi o \Progetti\ \Applicazioni (dove si riferisce al nome della scheda, ad esempio STM32CubeWBA).
- Il progetto Template fornisce una funzione di loop principale vuota. Tuttavia, è un buon punto di partenza per comprendere le impostazioni del progetto STM32CubeWBA. Il modello ha le seguenti caratteristiche:
- Contiene il codice sorgente HAL, CMSIS e i driver BSP, che rappresentano l'insieme minimo di componenti richiesti per sviluppare un codice su una determinata scheda.
- Contiene i percorsi inclusi per tutti i componenti firmware.
- Definisce i dispositivi della serie STM32WBA supportati, consentendo la corretta configurazione dei driver CMSIS e HAL.
- Fornisce all'utente pronto all'uso fileè preconfigurato come mostrato di seguito:
HAL inizializzato con la base temporale predefinita con Arm® core SysTick. SysTick ISR implementato per lo scopo HAL_Delay().
Nota: Quando copi un progetto esistente in un'altra posizione, assicurati che tutti i percorsi inclusi siano aggiornati.
- Aggiungi il middleware necessario al progetto utente (facoltativo)
Per identificare la fonte files da aggiungere al progetto file elenco, fare riferimento alla documentazione fornita per ciascun middleware. Fare riferimento alle applicazioni in \Projects\STM32xxx_yyy\Applications\ (Dove si riferisce allo stack middleware, come ThreadX) per sapere quale origine fileÈ necessario aggiungere i percorsi di inclusione. - Configurare i componenti del firmware
I componenti HAL e middleware offrono una serie di opzioni di configurazione in fase di compilazione utilizzando le macro #define dichiarate in un'intestazione file. Una configurazione modello file è fornito all'interno di ciascun componente, che deve essere copiato nella cartella del progetto (solitamente la configurazione file si chiama xxx_conf_template.h, la parola _template deve essere rimossa quando lo si copia nella cartella del progetto). La configurazione file fornisce informazioni sufficienti per comprendere l'impatto di ciascuna opzione di configurazione. Informazioni più dettagliate sono disponibili nella documentazione fornita per ciascun componente. - Avvia la libreria HAL
Dopo essere passati al programma principale, il codice dell'applicazione deve chiamare l'API HAL_Init() per inizializzare la libreria HAL, che svolge le seguenti attività:- Configurazione del prefetch della memoria flash e della priorità di interruzione del SysTick (tramite macro definite in st m32wbaxx_hal_conf.h).
- Configurazione del SysTick per generare un interrupt ogni millisecondo alla priorità dell'interrupt SysTick TICK_INT_PRIO definita in stm32wbaxx_hal_conf.h.
- Impostazione della priorità del gruppo NVIC su 0.
- Chiamata della funzione di callback HAL_MspInit() definita nell'utente stm32wbaxx_hal_msp.c file per eseguire inizializzazioni hardware globali di basso livello.
- Configura l'orologio di sistema
La configurazione dell'orologio di sistema avviene chiamando le due API descritte di seguito:- HAL_RCC_OscConfig(): questa API configura gli oscillatori interni ed esterni. L'utente sceglie di configurare uno o tutti gli oscillatori.
- HAL_RCC_ClockConfig(): questa API configura l'origine dell'orologio di sistema, la latenza della memoria flash e i prescaler AHB e APB.
- Inizializzare la periferica
- Per prima cosa scrivere la funzione periferica HAL_PPP_MspInit. Procedi come segue:
- Abilita l'orologio periferico.
- Configura i GPIO periferici.
- Configurare il canale DMA e abilitare l'interruzione DMA (se necessario).
- Abilita l'interruzione periferica (se necessario).
- Modificare stm32xxx_it.c per chiamare i gestori di interrupt richiesti (periferica e DMA), se necessario.
- Scrivere le funzioni di callback complete del processo, se si prevede di utilizzare un interrupt periferico o un DMA.
- Nell'utente main.c file, inizializza la struttura dell'handle della periferica, quindi chiama la funzione HAL_PPP_Init() per inizializzare la periferica.
- Per prima cosa scrivere la funzione periferica HAL_PPP_MspInit. Procedi come segue:
- Sviluppare un'applicazione
- A questo puntotage, il sistema è pronto e può iniziare lo sviluppo del codice dell'applicazione utente.
- L'HAL fornisce API intuitive e pronte all'uso per configurare la periferica. Supporta polling, interruzioni e un modello di programmazione DMA, per soddisfare qualsiasi requisito applicativo. Per maggiori dettagli su come utilizzare ciascuna periferica, fare riferimento al ricco exampset di file fornito nel pacchetto MCU STM32CubeWBA.
Attenzione: Nell'implementazione HAL predefinita, il timer SysTick viene utilizzato come base temporale: genera interruzioni a intervalli di tempo regolari. Se HAL_Delay() viene chiamato dal processo ISR della periferica, assicurarsi che l'interrupt SysTick abbia una priorità più alta (numericamente inferiore) rispetto all'interrupt della periferica. In caso contrario, il processo PVR del chiamante verrà bloccato. Le funzioni che influenzano le configurazioni della base temporale sono dichiarate come __weak per rendere possibile l'override in caso di altre implementazioni nell'utente file (utilizzando un timer generico, ad esample o un'altra fonte temporale). Per maggiori dettagli, fare riferimento a HAL_TimeBase examplui.
Applicazione L.L
Questa sezione descrive i passaggi necessari per creare un'applicazione LL personalizzata utilizzando STM32CubeWBA.
- Crea un progetto
- Per creare un nuovo progetto, partire dal progetto Templates_LL fornito per ogni scheda in \Progetti\ \Templates_LL o da qualsiasi progetto disponibile in \Projects\ \Examples_LL ( si riferisce al nome della scheda, ad esempio NUCLEO-WBA32CG).
- Il progetto modello fornisce una funzione di loop principale vuota, che rappresenta un buon punto di partenza per comprendere le impostazioni del progetto per STM32CubeWBA. Le caratteristiche principali del modello sono le seguenti:
- Contiene i codici sorgente dei driver LL e CMSIS, che rappresentano l'insieme minimo di componenti necessari per sviluppare codice su una determinata scheda.
- Contiene i percorsi inclusi per tutti i componenti firmware richiesti.
- Seleziona il dispositivo della serie STM32WBA supportato e consente la corretta configurazione dei driver CMSIS e LL.
- Fornisce all'utente pronto per l'uso files che sono preconfigurati come segue:
◦ main.h: livello di astrazione della definizione di LED e USER_BUTTON.
◦ main.c: configurazione dell'orologio di sistema per la frequenza massima.
- Trasferisci un progetto esistente su un'altra scheda
Per supportare un progetto esistente su un'altra scheda target, partire dal progetto Templates_LL fornito per ciascuna scheda e disponibile in \Progetti\ \Templates_LL.- Seleziona un LL example: Per trovare il tabellone su cui LL exampvengono distribuiti, fare riferimento all'elenco di LL example STM32CubeProjectsList.html.
- Porta il LL exampon:
- Copia/incolla la cartella Templates_LL – per mantenere la fonte iniziale – o aggiorna direttamente il progetto Temp lates_LL esistente.
- Allora il porting consiste principalmente nel sostituire Templates_LL files dall'Esampprogetto mirato les_LL.
- Conservare tutte le parti specifiche della scheda. Per motivi di chiarezza, le parti specifiche della scheda sono contrassegnate con specific tags:
- Pertanto, le fasi principali del porting sono le seguenti:
- Sostituisci stm32wbaxx_it.h file
- Sostituisci stm32wbaxx_it.c file
- Sostituisci main.h file e aggiornarlo: mantenere la definizione del LED e del pulsante utente del modello LL in CONFIGURAZIONE SPECIFICA DELLA SCHEDA tags.
- Sostituisci il main.c file e aggiornalo:
- Mantenere la configurazione dell'orologio della funzione modello SystemClock_Config() LL in CONFIGURAZIONE SPECIFICA DELLA SCHEDA tags.
- A seconda della definizione del LED, sostituire ciascuna occorrenza LDx con un'altra LDy disponibile in main.h file.
- Con queste modifiche, l'example ora viene eseguito sulla scheda di destinazione
Applicazioni di sicurezza
Questo pacchetto viene consegnato con applicazioni di sicurezza.
Applicazioni SBSFU
- SBSFU fornisce una soluzione Root of Trust, comprese le funzionalità Secure Boot e Secure Firmware Update (basate su MCUboot).
- La soluzione viene utilizzata prima di eseguire l'applicazione.
- La soluzione prevede un example di un servizio sicuro (attivazione/disattivazione GPIO), isolato dall'applicazione non sicura. L'applicazione non protetta in fase di runtime può comunque utilizzare questa soluzione.
Applicazioni TFM
Il TFM fornisce una soluzione Root of Trust che include funzionalità di avvio sicuro e aggiornamento sicuro del firmware
(basato su MCUboot). La soluzione viene utilizzata prima di eseguire l'applicazione. La soluzione fornisce servizi sicuri TFM isolati dall'applicazione non sicura. L'applicazione non protetta in fase di runtime può comunque utilizzare questa soluzione.
Applicazioni RF
L'applicazione RF è descritta in questa nota applicativa: Creazione di applicazioni wireless con microcontrollori serie STM32WBA (AN5928).
Ottenere gli aggiornamenti della versione STM32CubeWBA
Le ultime versioni e patch del pacchetto MCU STM32CubeWBA sono disponibili nella serie STM32WBA. Possono essere recuperati dal pulsante VERIFICA AGGIORNAMENTO in STM32CubeMX. Per maggiori dettagli, fare riferimento alla Sezione 3 del manuale utente STM32CubeMX per la configurazione STM32 e la generazione del codice C di inizializzazione (UM1718).
Domande frequenti
- Quando dovrei utilizzare HAL invece dei driver LL?
- I driver HAL offrono API di alto livello e orientate alle funzioni, con un elevato livello di portabilità. La complessità del prodotto o della periferica è nascosta agli utenti finali.
- I driver LL offrono API a livello di registro di basso livello, con una migliore ottimizzazione ma meno portabile. Richiedono una conoscenza approfondita delle specifiche del prodotto o della proprietà intellettuale.
- Posso utilizzare insieme i driver HAL e LL? Se posso, quali sono i vincoli?
- È possibile utilizzare sia i driver HAL che LL. Utilizzare l'HAL per la fase di inizializzazione IP e poi gestire le operazioni di I/O con i driver LL.
- La differenza principale tra HAL e LL è che i driver HAL richiedono di creare e utilizzare handle per la gestione delle operazioni mentre i driver LL operano direttamente sui registri periferici. L'examples_MIX esampil le illustra come combinare HAL e LL.
- Come vengono abilitate le API di inizializzazione LL?
- La definizione delle API di inizializzazione LL e delle risorse associate (strutture, valori letterali e prototipi) è condizionata dall'opzione di compilazione USE_FULL_LL_DRIVER.
- Per poter utilizzare le API di inizializzazione LL, aggiungere questa opzione nel preprocessore del compilatore della toolchain.
- Come può STM32CubeMX generare codice basato su software incorporato?
STM32CubeMX ha una conoscenza integrata dei microcontrollori STM32, comprese le relative periferiche e software che consente di fornire una rappresentazione grafica all'utente e generare *.h o *.c fileÈ basato sulla configurazione dell'utente.
AVVISO IMPORTANTE – LEGGERE ATTENTAMENTE
- STMicroelectronics NV e le sue consociate ("ST") si riservano il diritto di apportare modifiche, correzioni, miglioramenti, migliorie e migliorie ai prodotti ST e/o al presente documento in qualsiasi momento e senza preavviso. Gli acquirenti devono ottenere le ultime informazioni rilevanti sui prodotti ST prima di effettuare ordini. I prodotti ST sono venduti in conformità ai termini e alle condizioni di vendita di ST in vigore al momento della conferma dell'ordine.
- Gli acquirenti sono gli unici responsabili della scelta, della selezione e dell'uso dei prodotti ST e ST non si assume alcuna responsabilità per l'assistenza applicativa o la progettazione dei prodotti degli acquirenti.
- Nel presente documento ST non concede alcuna licenza, espressa o implicita, su alcun diritto di proprietà intellettuale.
- La rivendita di prodotti ST con disposizioni diverse dalle informazioni qui stabilite invaliderà qualsiasi garanzia concessa da ST per tale prodotto.
- ST e il logo ST sono marchi di fabbrica di ST. Per ulteriori informazioni sui marchi ST, fare riferimento a www.st.com/trademarks. Tutti gli altri nomi di prodotti o servizi sono di proprietà dei rispettivi proprietari.
- Le informazioni contenute nel presente documento annullano e sostituiscono le informazioni fornite in precedenza in qualsiasi versione precedente del documento.
- © 2023 STMicroelectronics – Tutti i diritti riservati
Documenti / Risorse
![]() |
Serie STM32WBA di STMicroelectronics Guida introduttiva [pdf] Manuale d'uso Serie STM32WBA Per iniziare, Per iniziare, Per iniziare |