STMicroelectronics STM32WBA-serie Aan de slag
Productinformatie
Specificaties:
- Productnaam: STM32CubeWBA MCU-pakket
- Fabrikant: STMicroelektronica
- Verenigbaarheid: Microcontrollers uit de STM32WBA-serie
- Licentie: Open-source BSD-licentie
Instructies voor productgebruik
Belangrijkste kenmerken van het STM32CubeWBA MCU-pakket:
Het STM32CubeWBA MCU-pakket biedt alle benodigde ingebedde softwarecomponenten voor het ontwikkelen van applicaties op microcontrollers uit de STM32WBA-serie. Het is zeer draagbaar binnen de STM32-serie en wordt geleverd met HAL- en LL-API's, bijvampbestanden en middlewarecomponenten.
Architectuur voorbijview:
De architectuur van het STM32CubeWBA MCU-pakket bestaat uit drie niveaus: toepassingen, bibliotheek- en protocolgebaseerde componenten, hardware-abstractielaag, BSP-stuurprogramma's, kernstuurprogramma's en laaglaagse API's.
Veelgestelde vragen
- Wat zit er in het STM32CubeWBA MCU-pakket?
Het pakket bevat low-layer (LL) en hardware abstraction layer (HAL) API's, bijvampbestanden, applicaties, middlewarecomponenten zoals FileX/LevelX, NetX Duo, mbed-cryptobibliotheken en meer. - Is het STM32CubeWBA MCU-pakket compatibel met de STM32CubeMX-codegenerator?
Ja, het pakket is volledig compatibel met de STM32CubeMX-codegenerator voor het genereren van initialisatiecode.
Invoering
- STM32Cube is een origineel initiatief van STMicroelectronics om de productiviteit van ontwerpers aanzienlijk te verbeteren door de ontwikkelingsinspanning, -tijd en -kosten te verminderen. STM32Cube bestrijkt het gehele STM32-portfolio.
STM32Cube omvat:- Een set gebruiksvriendelijke softwareontwikkelingstools voor projectontwikkeling van concept tot realisatie, waaronder:
- STM32CubeMX, een grafische softwareconfiguratietool waarmee automatisch C-initialisatiecode kan worden gegenereerd met behulp van grafische wizards
- STM32CubeIDE, een alles-in-één ontwikkelingstool met functies voor randapparatuurconfiguratie, codegeneratie, codecompilatie en foutopsporing
- STM32CubeCLT, een alles-in-één toolset voor opdrachtregelontwikkeling met codecompilatie, bordprogrammering en debug-functies
- STM32CubeProgrammer (STM32CubeProg), een programmeertool beschikbaar in grafische en opdrachtregelversies
- STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), krachtige monitoringtools om het gedrag en de prestaties van STM32-applicaties in realtime te verfijnen
- STM32Cube MCU- en MPU-pakketten, uitgebreide embedded softwareplatforms die specifiek zijn voor elke microcontroller- en microprocessorserie (zoals STM32CubeWBA voor de STM32WBA-serie), waaronder:
- STM32Cube hardware-abstractielaag (HAL), voor maximale draagbaarheid binnen het STM32-portfolio
- STM32Cube low-layer API's, zorgen voor de beste prestaties en footprints met een hoge mate van gebruikerscontrole over hardware
- Een consistente set middlewarecomponenten zoals ThreadX, FileX / LevelX, NetX Duo, USBX, touch-bibliotheek, mbed-crypto, TFM, MCUboot, OpenBL en STM32_WPAN (inclusief Bluetooth® Low Energy profiles en services, Mesh, Zigbee®, OpenThread, Matter en 802.15.4 MAC-laag)
- Alle embedded softwarehulpprogramma's met volledige sets van randapparatuur en applicative exampde
- STM32Cube-uitbreidingspakketten, die ingebouwde softwarecomponenten bevatten die de functionaliteiten van de STM32Cube MCU- en MPU-pakketten aanvullen met:
- Middleware-extensies en applicatieve lagen
- Examples die draaien op een aantal specifieke STMicroelectronics-ontwikkelborden
- Een set gebruiksvriendelijke softwareontwikkelingstools voor projectontwikkeling van concept tot realisatie, waaronder:
- Deze gebruikershandleiding beschrijft hoe u aan de slag kunt gaan met het STM32CubeWBA MCU-pakket.
- Hoofdstuk 2 Hoofdkenmerken van STM32CubeWBA beschrijft de belangrijkste kenmerken van het STM32CubeWBA MCU-pakket.
- Sectie 3 STM32CubeWBA-architectuur voorbijview zorgt voor een overview van de STM32CubeWBA-architectuur en de MCU-pakketstructuur.
Algemene informatie
Het STM32CubeWBA MCU-pakket draait op STM32 32-bit microcontrollers gebaseerd op de Arm® Cortex®-M33-processor met Arm® TrustZone® en FPU.
Opmerking: Arm en TrustZone zijn gedeponeerde handelsmerken van Arm Limited (of haar dochterondernemingen) in de VS en/of elders.
STM32CubeWBA belangrijkste kenmerken
- Het STM32CubeWBA MCU-pakket draait op STM32 32-bit microcontrollers gebaseerd op de Arm® Cortex®-M33-processor met TrustZone® en FPU.
- De STM32CubeWBA verzamelt in één pakket alle generieke embedded softwarecomponenten die nodig zijn om een applicatie te ontwikkelen voor de microcontrollers uit de STM32WBA-serie. In lijn met het STM32Cube-initiatief is deze set componenten zeer draagbaar, niet alleen binnen de microcontrollers uit de STM32WBA-serie, maar ook naar andere STM32-series.
- De STM32CubeWBA is volledig compatibel met de STM32CubeMX-codegenerator om initialisatiecode te genereren. Het pakket bevat low-layer (LL) en hardware abstraction layer (HAL) API's die de hardware van de microcontroller bestrijken, samen met een uitgebreide set exampbestanden die draaien op STMicroelectronics-borden. De HAL- en LL-API's zijn voor gebruikersgemak beschikbaar in een open-source BSD-licentie.
- Het STM32CubeWBA MCU-pakket bevat ook een uitgebreide middleware-component opgebouwd rond Microsoft® Azure® RTOS-middleware en andere interne en open-sourcestacks, met de bijbehorende examples.
- Ze worden geleverd met gratis, gebruiksvriendelijke licentievoorwaarden:
- Geïntegreerd en volledig uitgerust Azure® RTOS: Azure® RTOS ThreadX
- CMSIS-RTOS-implementatie met Azure® RTOS ThreadX
- USB Host- en Device-stacks met vele klassen: Azure® RTOS USBX
- Geavanceerd file systeem- en flash-vertaallaag: FileX / NiveauX
- Netwerkstack van industriële kwaliteit: geoptimaliseerd voor prestaties met veel IoT-protocollen: NetX Duo
- OpenBootloader
- Arm® Trusted Firmware-M (TF‑M) integratieoplossing
- mbed-cryptobibliotheken
- ST-netwerkbibliotheek
- STMTouch bibliotheekoplossing met aanraakdetectie
- Het STM32CubeWBA MCU-pakket bevat ook verschillende toepassingen en demonstraties die al deze middlewarecomponenten implementeren.
- De lay-out van de componenten van het STM32CubeWBA MCU-pakket wordt geïllustreerd in Figuur 1. Componenten van het STM32CubeWBA MCU-pakket.
STM32CubeWBA-architectuur voorbijview
De STM32CubeWBA MCU-pakketoplossing is opgebouwd rond drie onafhankelijke niveaus die gemakkelijk met elkaar kunnen communiceren, zoals beschreven in Figuur 2. STM32CubeWBA MCU-pakketarchitectuur.
Niveau 0
Dit niveau is verdeeld in drie sublagen:
- Bestuursondersteuningspakket (BSP).
- Hardware-abstractielaag (HAL):
- HAL-randapparatuurstuurprogramma's
- Laaglaagse stuurprogramma's
- Basis randapparatuurgebruik bijvamples.
Bestuursondersteuningspakket (BSP)
Deze laag biedt een set API's die gerelateerd zijn aan de hardwarecomponenten in de hardwarekaarten (zoals LCD-, Audio-, microSD™- en MEMS-stuurprogramma's). Het bestaat uit twee delen:
- Component-stuurprogramma:
Deze driver heeft betrekking op het externe apparaat op het bord en niet op het STM32-apparaat. De componentdriver biedt specifieke API's voor de externe componenten van de BSP-driver en kan draagbaar zijn op elk ander bord. - BSP-chauffeur:
De BSP-driver maakt het mogelijk om de componentdrivers aan een specifiek bord te koppelen en biedt een set gebruiksvriendelijke
API's. De API-naamgevingsregel is BSP_FUNCT_Action().
Exampbestand: BSP_LED_Init(), BSP_LED_On()
BSP is gebaseerd op een modulaire architectuur die eenvoudige portering op elke hardware mogelijk maakt door alleen de routines op laag niveau te implementeren.
Hardware-abstractielaag (HAL) en laaglaag (LL)
De STM32CubeWBA HAL en LL zijn complementair en dekken een breed scala aan toepassingsvereisten:
- De HAL-stuurprogramma's bieden functiegerichte, zeer draagbare API's op hoog niveau. Ze verbergen de MCU en de complexiteit van de randapparatuur voor de eindgebruiker.
De HAL-stuurprogramma's bieden generieke, op functies gerichte API's met meerdere instanties, die de implementatie van gebruikersapplicaties vereenvoudigen door kant-en-klare processen te bieden. Bijvoorbeeldample, voor de communicatierandapparatuur (I2S, UART en andere), biedt het API's waarmee het randapparaat kan worden geïnitialiseerd en geconfigureerd, de gegevensoverdracht kan worden beheerd op basis van polling, interrupting of DMA-processen, en communicatiefouten kunnen worden afgehandeld die kunnen optreden tijdens de communicatie. De HAL-driver-API's zijn opgesplitst in twee categorieën:- Generieke API's, die gemeenschappelijke en generieke functies bieden voor alle microcontrollers uit de STM32-serie.
- Uitbreidings-API's, die specifieke en op maat gemaakte functies bieden voor een specifieke familie of een specifiek onderdeelnummer.
- De low-layer API's bieden API's op laag niveau op registerniveau, met betere optimalisatie maar minder draagbaarheid.
- Ze vereisen een diepgaande kennis van MCU en randapparatuurspecificaties.
- De LL-drivers zijn ontworpen om een snelle, lichtgewicht, expertgerichte laag te bieden die dichter bij de hardware staat dan de HAL. In tegenstelling tot de HAL zijn LL API's niet bedoeld voor randapparatuur waarvoor geoptimaliseerde toegang geen belangrijk kenmerk is, of voor apparaten die zware softwareconfiguratie of een complexe stack op het hoogste niveau vereisen.
- De LL-stuurprogramma's zijn voorzien van:
- Een reeks functies om perifere hoofdfuncties te initialiseren volgens de parameters die zijn gespecificeerd in datastructuren.
- Een reeks functies om initialisatiegegevensstructuren te vullen met de resetwaarden die overeenkomen met elk veld.
- Functie voor de-initialisatie van randapparatuur (randregisters worden hersteld naar hun standaardwaarden).
- Een reeks inline-functies voor directe en atomaire registertoegang.
- Volledige onafhankelijkheid van HAL en mogelijkheid om in standalone-modus te gebruiken (zonder HAL-drivers).
- Volledige dekking van de ondersteunde randfuncties.
Basis randapparatuurgebruik bijvampde
Deze laag omsluit de exampbestanden gebouwd over de STM32-randapparatuur met alleen de HAL- en BSP-bronnen.
Niveau 1
Dit niveau is verdeeld in twee sublagen:
- Middleware-componenten
- Exampbestanden gebaseerd op de middlewarecomponenten
Middleware-componenten
- De middleware is een reeks bibliotheken die Bluetooth® Low Energy (Linklayer, HCI, Stack), Thread®, Zigbee®,
- Matter, OpenBootloader, Microsoft® Azure® RTOS, TF‑M, MCUboot en mbed-crypto.
- Horizontale interactie tussen de componenten van deze laag vindt plaats door de aanbevolen API's aan te roepen.
- Verticale interactie met de low-layer-stuurprogramma's vindt plaats via specifieke callbacks en statische macro's die zijn geïmplementeerd in de oproepinterface van het bibliotheeksysteem.
- De belangrijkste kenmerken van elke middleware-component zijn als volgt:
- Microsoft® Azure® RTOS
- Azure® RTOS ThreadX: een realtime besturingssysteem (RTOS), ontworpen voor ingebedde systemen met twee functionele modi.
- Algemene modus: algemene RTOS-functionaliteiten zoals threadbeheer en synchronisatie, geheugenpoolbeheer, berichtenuitwisseling en gebeurtenisafhandeling.
- Modulemodus: Een geavanceerde gebruikersmodus waarmee u vooraf gekoppelde ThreadX-modules direct kunt laden en verwijderen via een modulebeheerder.
- NetX Duo
- FileX
- USBX
- Azure® RTOS ThreadX: een realtime besturingssysteem (RTOS), ontworpen voor ingebedde systemen met twee functionele modi.
- Bluetooth® Low Energy (BLE): Implementeert het Bluetooth® Low Energy-protocol voor de Link- en Stack-lagen.
- MCUboot (open source-software)
- Zigbee®-protocollen voor de stack en gerelateerde clusters.
- Thread®-protocolstack en linklaag.
- Arm® vertrouwde firmware-M, TF-M (open-source software): Referentie-implementatie van de Arm® platformbeveiligingsarchitectuur (PSA) voor TrustZone® met de bijbehorende beveiligde services.
- mbed-crypto (open-source software): De mbed-crypto middleware biedt een PSA-cryptografie-API-implementatie.
- STM32 Aanraaksensorbibliotheek: Robuuste STMTouch capacitieve aanraaksensoroplossing, die nabijheids-, aanraaktoets-, lineaire en roterende aanraaksensoren ondersteunt. Het is gebaseerd op een bewezen principe van acquisitie van oppervlakteladingoverdracht.
- Microsoft® Azure® RTOS
Exampbestanden gebaseerd op de middlewarecomponenten
Elke middlewarecomponent wordt geleverd met een of meer examples (ook wel applicaties genoemd) die laten zien hoe u deze kunt gebruiken. Integratie bijvampEr worden ook bestanden geleverd die verschillende middlewarecomponenten gebruiken.
STM32CubeWBA-firmwarepakket voorbijview
Ondersteunde apparaten en hardware uit de STM32WBA-serie
- STM32Cube biedt een zeer draagbare hardware-abstractielaag (HAL) die is opgebouwd rond een generieke architectuur. Het maakt het principe van de opbouwlagen mogelijk, zoals het gebruik van de middleware-laag om hun functies te implementeren zonder diepgaand te weten welke MCU wordt gebruikt. Dit verbetert de herbruikbaarheid van de bibliotheekcode en zorgt voor een gemakkelijke overdraagbaarheid naar andere apparaten.
- Bovendien biedt de STM32CubeWBA dankzij de gelaagde architectuur volledige ondersteuning van alle STM32WBA-series.
- De gebruiker hoeft alleen de juiste macro in stm32wbaxx.h te definiëren.
- Tabel 1 toont de macro die moet worden gedefinieerd, afhankelijk van het gebruikte apparaat uit de STM32WBA-serie. Deze macro moet ook worden gedefinieerd in de preprocessor van de compiler.
Tabel 1. Macro's voor de STM32WBA-serieMacro gedefinieerd in stm32wbaxx.h Apparaten uit de STM32WBA-serie stm32wba52xx STM32WBA52CGU6, STM32WBA52KGU6, STM32WBA52CEU6, STM32WBA52KEU6 stm32wba55xx STM32WBA55CGU6, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CEU6, STM32WBA55CEU7 - STM32CubeWBA beschikt over een rijke reeks exampbestanden en applicaties op alle niveaus, waardoor het eenvoudig is om alle HAL-drivers of middleware-componenten te begrijpen en te gebruiken. Deze exampbestanden draaien op de STMicroelectronics-kaarten vermeld in Tabel 2.
Tabel 2. Borden voor STM32WBA-serieBord Board STM32WBA ondersteunde apparaten NUCLEO-WBA52CG STM32WBA52CGU6 NUCLEO-WBA55CG STM32WBA55CGU6 STM32WBA55-DK1 STM32WBA55CGU7 - Het STM32CubeWBA MCU-pakket kan op elke compatibele hardware worden uitgevoerd. De gebruiker werkt eenvoudigweg de BSP-stuurprogramma's bij om de opgegeven exampbestanden op het bord, als deze dezelfde hardwarefuncties heeft (zoals LED, LCD-scherm en knoppen).
Firmwarepakket voorbijview
- De STM32CubeWBA-pakketoplossing wordt geleverd in één enkel zip-pakket met de structuur getoond in Figuur 3. STM32CubeWBA-firmwarepakketstructuur.
- Voor elk bord wordt een set examples wordt geleverd met vooraf geconfigureerde projecten voor EWARM-, MDK-ARM- en STM32CubeIDE-toolchains.
- Figuur 4. STM32CubeWBA examples voorbijview toont de projectstructuur voor de NUCLEO-WBA52CG-, NUCLEO-WBA55CG- en STM32WBA55G-DK1-kaarten.
- De exampbestanden worden geclassificeerd afhankelijk van het STM32Cube-niveau waarop ze van toepassing zijn, en worden als volgt genoemd:
- Niveau 0 bijvampbestanden heten Examples, bijvamples_LL en Examples_MIX. Ze gebruiken respectievelijk HAL-drivers, LL-drivers en een mix van HAL- en LL-drivers zonder enige middleware-component.
- Niveau 1 bijvampbestanden worden Applicaties genoemd. Ze bieden typische gebruiksscenario's van elke middleware-component. Elke firmwaretoepassing voor een bepaald bord kan snel worden gebouwd dankzij sjabloonprojecten die beschikbaar zijn in de mappen Templ ates en Templates_LL.
TrustZone®-projecten
- TrustZone® ingeschakeld Bijvampbestandsnamen bevatten het voorvoegsel _TrustZone. De regel wordt ook toegepast op applicaties (behalve voor TFM en SBSFU, die oorspronkelijk bedoeld zijn voor TrustZone®).
- TrustZone®-compatibel Exampbestanden en applicaties zijn voorzien van een multiprojectstructuur die is samengesteld uit beveiligde en niet-beveiligde subprojecten, zoals weergegeven in Figuur 5. Veilige en niet-beveiligde projectstructuur voor meerdere projecten.
- TrustZone®-compatibele projecten worden ontwikkeld volgens de CMSIS-5-apparaatsjabloon, uitgebreid met de systeempartitioneringsheader file partitie_ .h, die voornamelijk verantwoordelijk is voor het instellen van de beveiligde attribuuteenheid (SAU), de FPU en de toewijzing van beveiligde/niet-beveiligde interrupts in de beveiligde uitvoeringsstatus.
- Deze instelling wordt uitgevoerd in de beveiligde CMSIS SystemInit()-functie, die wordt aangeroepen bij het opstarten voordat de beveiligde applicatie main()-functie wordt geopend. Raadpleeg de Arm® TrustZone®-M-documentatie met softwarerichtlijnen.
- Het firmwarepakket van het STM32CubeWBA-pakket biedt standaard geheugenpartitionering in de partitie _ .H files beschikbaar onder: \Drivers\CMSIS\Device\ST\STM32WBAxx\Include\T emplates
- In deze partitie files is de SAU standaard uitgeschakeld. Bijgevolg wordt de IDAU-geheugentoewijzing gebruikt voor de toekenning van de veiligheid. Raadpleeg de afbeelding Beveiligde/niet-beveiligde partities met behulp van TrustZone®-technologie in de RM0495-referentiehandleiding.
- Als de gebruiker de SAU inschakelt, wordt er vooraf een standaard SAU-regioconfiguratie gedefinieerd in de partitie fileis als volgt:
- SAU-regio 0: 0x08080000 – 0x081FFFFF (niet-beveiligde, beveiligde helft van het flashgeheugen (512 Kbytes))
- SAU regio 1: 0x0BF88000 – 0x0BF97FFF (onbeveiligd systeemgeheugen)
- SAU-regio 2: 0x0C07E000 – 0x0C07FFFF (beveiligd, niet-beveiligd opvraagbaar)
- SAU-regio 3: 0x20010000 – 0x2001FFFF (niet-beveiligde SRAM2 (64 Kbytes))
- SAU-regio 4: 0x40000000 – 0x4FFFFFFF (niet-beveiligd perifeer toegewezen geheugen)
- Om aan de standaardpartitionering te voldoen, moeten op de apparaten uit de STM32WBAxx-serie de volgende gebruikersoptiebytes zijn ingesteld:
- TZEN = 1 (TrustZone®-compatibel apparaat)
- SECWM1_PSRTT = 0x0 SECWM1_PEND = 0x3F (64 van de 128 pagina's intern flashgeheugen ingesteld als beveiligd) Opmerking: het interne flashgeheugen is standaard volledig beveiligd in TZEN = 1. De gebruikersoptiebytes SECWM1_PSRTT/ SECWM1_PEND moeten worden ingesteld op basis van de toepassing geheugenconfiguratie (SAU-regio's, als SAU is ingeschakeld). Veilige/niet-beveiligde applicaties projectlinker files moeten ook worden uitgelijnd.
- alle exampbestanden hebben dezelfde structuur:
- map \Inc met alle headers files.
- Src-map met de broncode.
- \EWARM-, \MDK-ARM- en \STM32CubeIDE-mappen met het vooraf geconfigureerde project voor elke toolchain.
- readme.md en readme.html beschrijven de exampgedrag en de benodigde omgeving om het te laten werken.
- IOC-lid file waarmee gebruikers het grootste deel van de firmware kunnen openen, exampbestanden binnen STM32CubeMX.
Aan de slag met STM32CubeWBA
Het runnen van een eerste HAL example
In deze sectie wordt uitgelegd hoe eenvoudig het is om de eerste exampbestand binnen STM32CubeWBA. Ter illustratie wordt het genereren van een eenvoudige LED-schakelaar gebruikt die op het NUCLEO-WBA52CG-bord draait:
- Download het STM32CubeWBA MCU-pakket.
- Pak het uit in een map naar keuze.
- Zorg ervoor dat u de pakketstructuur, weergegeven in Figuur 1, niet wijzigt. Het wordt ook aanbevolen om het pakket te kopiëren naar een locatie dicht bij uw hoofdvolume (dat wil zeggen C:\ST of G:\Tests), omdat sommige IDE's problemen ondervinden wanneer het pad lengte is te lang.
Een eerste TrustZone®-compatibele example
- Voordat u een voor TrustZone® ingeschakelde example, het is verplicht om de examplees mij file voor elke specifieke configuratie, die ervoor zorgt dat de beveiliging is ingeschakeld zoals beschreven in Paragraaf 4.2.1 TrustZone®-projecten (TZEN=1 (gebruikersoptiebyte)).
- Blader naar \Projects\NUCLEO-WBA52CG\Examples.
- Open de mappen \GPIO en vervolgens \GPIO_IOToggle_TrustZone.
- Open het project met de toolchain van uw voorkeur. Snel voorbijview over het openen, bouwen en runnen van een exampbestand met de ondersteunde toolchains wordt hieronder gegeven.
- Herbouw achtereenvolgens alle beveiligde en niet-beveiligde projecten files en laad de beveiligde en niet-beveiligde afbeeldingen in het doelgeheugen.
- Voer de ex uitample: regelmatig schakelt de beveiligde applicatie elke seconde over op LD2, en de niet-beveiligde applicatie schakelt twee keer zo snel op LD3. Raadpleeg het leesmij-bestand voor meer details file van de exampik.
- Om een ex te openen, bouwen en runnenampbestand met de ondersteunde toolchains, volgt u de onderstaande stappen:
- EWARM:
- Onder de example-map, open de \EWARM-submap.
- Start de Project.eww-werkruimte
- Bouw het beveiligde project xxxxx_S opnieuw op files: [Project]>[Alles opnieuw opbouwen].
- Stel het niet-beveiligde project xxxxx_NS in als actieve toepassing (klik met de rechtermuisknop op het xxxxx_NS-project [Instellen als actief])
- Herbouw het xxxxx_NS niet-beveiligde project files: [Project]>[Alles opnieuw opbouwen].
- Flash het onveilige binaire bestand met [Project]>[Download]>[Download actieve applicatie] .
- Stel xxxxx_S in als actieve toepassing (klik met de rechtermuisknop op xxxxx_S-project [Instellen als actief].
- Flash het beveiligde binaire bestand met [Downloaden en debuggen] (Ctrl+D).
- Voer het programma uit: [Debug]>[Go(F5)]
- MDK-ARM:
- Open de \MDK-ARM-toolchain.
- Open de Multiprojects-werkruimte file Project.uvmpw.
- Selecteer het xxxxx_s-project als Actieve applicatie ([Instellen als actief project]).
- Bouw het xxxxx_s-project.
- Selecteer het xxxxx_ns-project als Actief project ([Instellen als actief project]).
- Bouw het xxxxx_ns-project.
- Laad het niet-beveiligde binaire bestand ([F8]). Hiermee wordt \MDK-ARM\xxxxx_ns\Exe\xxxxx_ns.axf gedownload naar flashgeheugen)
- Selecteer het Project_s-project als Actief project ([Instellen als actief project]).
- Laad het beveiligde binaire bestand ([F8]). Hiermee wordt \MDK-ARM\xxxxx_s\Exe\xxxxx_s.axf gedownload naar flashgeheugen).
- Voer de ex uitampik.
- STM32CubeIDE:
- Open de STM32CubeIDE-toolchain.
- Open de Multiprojects-werkruimte file .project.
- Herbouw het xxxxx_Secure-project.
- Bouw het xxxxx_NonSecure-project opnieuw op.
- Start de applicatie [Debug as STM32 Cortex-M C/C++] voor het beveiligde project.
- In het venster [Configuratie bewerken] selecteert u het paneel [Opstarten] en voegt u de afbeelding en symbolen van het niet-beveiligde project toe.
Belangrijk: Het niet-beveiligde project moet vóór het beveiligde project worden geladen. - Klik OK].
- Voer de ex uitample over debug-perspectief.
- EWARM:
Een eerste TrustZone® uitvoeren uitgeschakeld bijvample
- Voordat u een TrustZone®-uitgeschakelde example, het is verplicht om de examplees mij file voor elke specifieke configuratie. Als er geen specifieke vermeldingen zijn, zorg er dan voor dat de beveiliging van het bordapparaat is uitgeschakeld (TZEN=0 (gebruikersoptiebyte)). Zie FAQ voor het uitvoeren van de optionele regressie naar TZEN = 0
- Blader naar \Projects\NUCLEO-WBA52CG\Examples.
- Open de mappen \GPIO en vervolgens \GPIO_EXTI.
- Open het project met de toolchain van uw voorkeur. Snel voorbijview over het openen, bouwen en runnen van een exampbestand met de ondersteunde toolchains wordt hieronder gegeven.
- Alles opnieuw opbouwen files en laad uw afbeelding in het doelgeheugen.
- Voer de ex uitample: Elke keer dat de [USER]-drukknop wordt ingedrukt, schakelt de LD1-LED om. Raadpleeg het leesmij-bestand voor meer details file van de exampik.
- Om een ex te openen, bouwen en runnenampbestand met de ondersteunde toolchains, volgt u de onderstaande stappen:
- EWARM:
- Onder de example-map, open de \EWARM-submap.
- Start de Project.eww-werkruimte (de naam van de werkruimte kan veranderen van één example naar een andere).
- Alles opnieuw opbouwen files: [Project]>[Alles opnieuw opbouwen].
- Laad de projectafbeelding: [Project]>[Debug].
- Voer het programma uit: [Debug]>[Go (F5)].
- MDK-ARM:
- Onder de example-map, opent u de submap \MDK-ARM.
- Start de Project.uvproj-werkruimte (de naam van de werkruimte kan veranderen van één example naar een andere).
- Alles opnieuw opbouwen files:[Project]>[Herbouw alle doelen fileS].
- Laad de projectafbeelding: [Debug]>[Debug Session starten/stoppen].
- Programma uitvoeren: [Debug]>[Uitvoeren (F5)].
- STM32CubeIDE:
- Open de STM32CubeIDE-toolchain.
- Klik [File]>[Switch Workspace]>[Other] en blader naar de STM32CubeIDE-werkruimtemap.
- Klik [File]>[Importeren] , selecteer [Algemeen]>[Bestaande projecten in de werkruimte] en klik vervolgens op [Volgende].
- Blader naar de STM32CubeIDE-werkruimtemap en selecteer het project.
- Herbouw het hele project files: Selecteer het project in het venster [Project Explorer] en klik vervolgens op het menu [Project]>[Build project].
- Voer het programma uit: [Uitvoeren]>[Debug (F11)]
- EWARM:
Het ontwikkelen van een maatwerkapplicatie
Opmerking: Software moet de instructiecache (ICACHE) inschakelen om een 0-wachtstatusuitvoering uit het flashgeheugen te halen en de maximale prestaties en een beter stroomverbruik te bereiken.
STM32CubeMX gebruiken om een applicatie te ontwikkelen of te updaten
- In het STM32CubeWBA MCU-pakket zijn bijna alle projectexampbestanden worden gegenereerd met de STM32CubeMX-tool om het systeem, randapparatuur en middleware te initialiseren.
- Het directe gebruik van een bestaand project exampVoor het bestand STM32CubeMX is STM32CubeMX 6.10.0 of hoger vereist:
- Na de installatie van STM32CubeMX opent u een voorgesteld project en werkt u het indien nodig bij. De eenvoudigste manier om een bestaand project te openen is door te dubbelklikken op *.ioc file zodat STM32CubeMX automatisch het project en de bron ervan opent files.
- STM32CubeMX genereert de initialisatiebroncode van dergelijke projecten. De broncode van de hoofdtoepassing is te vinden in de opmerkingen “USER CODE BEGIN” en “USER CODE END”. Als de IP-selectie en -instelling worden gewijzigd, werkt STM32CubeMX het initialisatiegedeelte van de code bij, maar behoudt de broncode van de hoofdtoepassing.
- Volg het stapsgewijze proces om een aangepast project in de STM32CubeMX te ontwikkelen:
- Selecteer de STM32-microcontroller die past bij de vereiste set randapparatuur.
- Configureer alle vereiste ingebedde software met behulp van een pinout-conflictoplosser, een helper voor het instellen van de klokboom, een rekenmachine voor energieverbruik en het hulpprogramma dat de configuratie van MCU-randapparatuur (zoals GPIO of USART) en middleware-stacks (zoals USB) uitvoert.
- Genereer de initialisatie-C-code op basis van de geselecteerde configuratie. Deze code is klaar voor gebruik binnen verschillende ontwikkelomgevingen. De gebruikerscode wordt bewaard bij de volgende codegeneratie.
- Voor meer informatie over STM32CubeMX raadpleegt u de gebruikershandleiding STM32CubeMX voor STM32-configuratie en initialisatie C-codegeneratie (UM1718).
- Voor een lijst van de beschikbare projecten exampbestanden voor STM32CubeWBA, raadpleeg de toepassingsnotitie STM32Cube firmware exampbestanden voor de STM32WBA-serie (AN5929).
Stuurprogramma-applicaties
HAL-applicatie
In deze sectie worden de stappen beschreven die nodig zijn om een aangepaste HAL-toepassing te maken met behulp van STM32CubeWBA:
- Een project maken
- Om een nieuw project aan te maken, start u vanuit het sjabloonproject dat voor elk bord beschikbaar is onder \Projecten\ \Sjablonen of vanuit een beschikbaar project onder \Projecten\ \Voorbeelden of \Projecten\ \Applicaties (waar verwijst naar de bordnaam, zoals STM32CubeWBA).
- Het Template-project biedt een lege hoofdlusfunctie. Het is echter een goed startpunt om de STM32CubeWBA-projectinstellingen te begrijpen. Het sjabloon heeft de volgende kenmerken:
- Het bevat de HAL-broncode, CMSIS en BSP-stuurprogramma's, de minimale set componenten die nodig zijn om een code op een bepaald bord te ontwikkelen.
- Het bevat de meegeleverde paden voor alle firmwarecomponenten.
- Het definieert de ondersteunde apparaten uit de STM32WBA-serie, waardoor de CMSIS- en HAL-stuurprogramma's correct kunnen worden geconfigureerd.
- Het biedt een gebruiksklare gebruiker files vooraf geconfigureerd zoals hieronder weergegeven:
HAL geïnitialiseerd met de standaard tijdbasis met Arm® core SysTick. SysTick ISR geïmplementeerd voor HAL_Delay() doeleinden.
Opmerking: Wanneer u een bestaand project naar een andere locatie kopieert, zorg er dan voor dat alle opgenomen paden worden bijgewerkt.
- Voeg de benodigde middleware toe aan het gebruikersproject (optioneel)
Om de bron te identificeren files die aan het project moeten worden toegevoegd file lijst, raadpleeg dan de documentatie die bij elke middleware wordt geleverd. Raadpleeg de applicaties onder \Projects\STM32xxx_yyy\Applications\ (waar verwijst naar de middleware-stack, zoals ThreadX) om te weten welke bron files en include-paden moeten worden toegevoegd. - Configureer de firmwarecomponenten
De HAL- en middleware-componenten bieden een reeks buildtime-configuratieopties met behulp van macro's #define die in een header zijn gedeclareerd file. Een sjabloonconfiguratie file is voorzien in elke component, die moet worden gekopieerd naar de projectmap (meestal de configuratie file heet xxx_conf_template.h, het woord _template moet worden verwijderd bij het kopiëren naar de projectmap). De configuratie file biedt voldoende informatie om de impact van elke configuratieoptie te begrijpen. Meer gedetailleerde informatie is beschikbaar in de documentatie die bij elk onderdeel wordt geleverd. - Start de HAL-bibliotheek
Nadat naar het hoofdprogramma is gesprongen, moet de applicatiecode de API HAL_Init() aanroepen om de HAL-bibliotheek te initialiseren, die de volgende taken uitvoert:- Configuratie van de flash-geheugenprefetch en SysTick-interruptprioriteit (via macro's gedefinieerd in st m32wbaxx_hal_conf.h).
- Configuratie van de SysTick om elke milliseconde een interrupt te genereren met de SysTick-interruptprioriteit TICK_INT_PRIO gedefinieerd in stm32wbaxx_hal_conf.h.
- Instelling van NVIC-groepsprioriteit op 0.
- Aanroep van HAL_MspInit() callback-functie gedefinieerd in stm32wbaxx_hal_msp.c-gebruiker file om globale hardware-initialisaties op laag niveau uit te voeren.
- Configureer de systeemklok
De configuratie van de systeemklok wordt uitgevoerd door de twee hieronder beschreven API's aan te roepen:- HAL_RCC_OscConfig(): deze API configureert de interne en externe oscillatoren. De gebruiker kiest ervoor om één of alle oscillatoren te configureren.
- HAL_RCC_ClockConfig(): deze API configureert de systeemklokbron, de latentie van het flashgeheugen en AHB- en APB-prescalers.
- Initialiseer het randapparaat
- Schrijf eerst de perifere functie HAL_PPP_MspInit. Ga als volgt verder:
- Schakel de perifere klok in.
- Configureer de perifere GPIO's.
- Configureer het DMA-kanaal en schakel DMA-interrupt in (indien nodig).
- Schakel randonderbreking in (indien nodig).
- Bewerk stm32xxx_it.c om de vereiste interrupthandlers (randapparatuur en DMA) aan te roepen, indien nodig.
- Schrijf proces volledige callback-functies, als het gebruik van een perifere interrupt of DMA gepland is.
- In gebruiker main.c file, initialiseer de structuur van de perifere handle en roep vervolgens de functie HAL_PPP_Init() aan om het randapparaat te initialiseren.
- Schrijf eerst de perifere functie HAL_PPP_MspInit. Ga als volgt verder:
- Ontwikkel een applicatie
- Op dit momenttage, het systeem is klaar en de ontwikkeling van de gebruikersapplicatiecode kan beginnen.
- De HAL biedt intuïtieve en gebruiksklare API's om de randapparatuur te configureren. Het ondersteunt polling, interrupts en een DMA-programmeermodel om aan alle toepassingsvereisten te voldoen. Voor meer details over het gebruik van elk randapparaat raadpleegt u de uitgebreide exampbestandsset geleverd in het STM32CubeWBA MCU-pakket.
Voorzichtigheid: In de standaard HAL-implementatie wordt de SysTick-timer gebruikt als tijdbasis: deze genereert interrupts met regelmatige tijdsintervallen. Als HAL_Delay() wordt aangeroepen vanuit het perifere ISR-proces, zorg er dan voor dat de SysTick-interrupt een hogere prioriteit heeft (numeriek lager) dan de perifere interrupt. Anders wordt het ISR-proces van de beller geblokkeerd. Functies die van invloed zijn op tijdbasisconfiguraties worden gedeclareerd als __weak om overschrijven mogelijk te maken in het geval van andere implementaties in de gebruiker file (met behulp van een timer voor algemeen gebruik, bijvample, of een andere tijdbron). Raadpleeg voor meer details de HAL_TimeBase exampik.
LL-applicatie
In deze sectie worden de stappen beschreven die nodig zijn om een aangepaste LL-toepassing te maken met behulp van STM32CubeWBA.
- Een project maken
- Om een nieuw project aan te maken, start u vanuit het Templates_LL-project dat voor elk bord is voorzien onder \Projects\ \Templates_LL, of vanuit een beschikbaar project onder \Projects\ \Examples_LL ( verwijst naar de bordnaam, zoals NUCLEO-WBA32CG).
- Het sjabloonproject biedt een lege hoofdlusfunctie, wat een goed startpunt is om de projectinstellingen voor STM32CubeWBA te begrijpen. De belangrijkste kenmerken van de sjabloon zijn de volgende:
- Het bevat de broncodes van de LL- en CMSIS-stuurprogramma's, de minimale set componenten die nodig zijn om code op een bepaald bord te ontwikkelen.
- Het bevat de meegeleverde paden voor alle vereiste firmwarecomponenten.
- Het selecteert het ondersteunde apparaat uit de STM32WBA-serie en maakt de juiste configuratie van de CMSIS- en LL-stuurprogramma's mogelijk.
- Het biedt een gebruiksklare gebruiker files die als volgt vooraf zijn geconfigureerd:
◦ main.h: LED en USER_BUTTON definitie abstractielaag.
◦ main.c: Systeemklokconfiguratie voor maximale frequentie.
- Port een bestaand project naar een ander bord
Om een bestaand project op een ander doelbord te ondersteunen, begint u met het Templates_LL-project dat voor elk bord is verstrekt en beschikbaar is onder \Projecten\ \Sjablonen_LL.- Selecteer een LL example: Om het bord te vinden waarop LL exampbestanden worden geïmplementeerd, raadpleeg de lijst met LL examples STM32CubeProjectsList.html.
- Port de LL exampon:
- Kopieer/plak de map Templates_LL – om de oorspronkelijke bron te behouden – of werk het bestaande Templates_LL-project direct bij.
- Porteren bestaat dan voornamelijk uit het vervangen van Templates_LL files door de examples_LL gericht project.
- Bewaar alle bordspecifieke onderdelen. Omwille van de duidelijkheid zijn bordspecifieke onderdelen gemarkeerd met specifiek tags:
- De belangrijkste porteerstappen zijn dus de volgende:
- Vervang de stm32wbaxx_it.h file
- Vervang de stm32wbaxx_it.c file
- Vervang de hoofd.h file en update deze: Behoud de LED- en gebruikersknopdefinitie van de LL-sjabloon onder BOARD SPECIFIEKE CONFIGURATIE tags.
- Vervang de hoofdc file en update deze:
- Bewaar de klokconfiguratie van de SystemClock_Config() LL-sjabloonfunctie onder BOARD SPECIFIEKE CONFIGURATIE tags.
- Afhankelijk van de LED-definitie vervangt u elke LDx-verschijning door een andere LDy die beschikbaar is in de main.h file.
- Met deze wijzigingen wordt de example draait nu op het beoogde bord
Beveiligingstoepassingen
Dit pakket wordt geleverd met beveiligingsapplicaties.
SBSFU-applicaties
- SBSFU biedt een Root of Trust-oplossing, inclusief Secure Boot- en Secure Firmware Update-functionaliteiten (gebaseerd op MCUboot).
- De oplossing wordt gebruikt voordat de applicatie wordt uitgevoerd.
- De oplossing biedt een exampbestand van een beveiligde service (GPIO-schakelaar), die geïsoleerd is van de niet-beveiligde applicatie. De niet-beveiligde applicatie tijdens runtime kan deze oplossing nog steeds gebruiken.
TFM-applicaties
De TFM biedt een Root of Trust-oplossing inclusief Secure Boot- en Secure Firmware Update-functionaliteiten
(gebaseerd op MCUboot). De oplossing wordt gebruikt voordat de applicatie wordt uitgevoerd. De oplossing biedt beveiligde TFM-services die geïsoleerd zijn van de niet-beveiligde applicatie. De niet-beveiligde applicatie tijdens runtime kan deze oplossing nog steeds gebruiken.
RF-toepassingen
De RF-toepassing wordt beschreven in deze toepassingsnotitie: Draadloze toepassingen bouwen met microcontrollers uit de STM32WBA-serie (AN5928).
Release-updates voor STM32CubeWBA ophalen
De nieuwste STM32CubeWBA MCU-pakketreleases en patches zijn verkrijgbaar bij de STM32WBA-serie. Ze kunnen worden opgehaald via de knop CHECK FOR UPDATE in STM32CubeMX. Voor meer details raadpleegt u Hoofdstuk 3 van de gebruikershandleiding STM32CubeMX voor STM32-configuratie en initialisatie C-codegeneratie (UM1718).
Veelgestelde vragen
- Wanneer moet ik HAL gebruiken in plaats van LL-stuurprogramma's?
- HAL-stuurprogramma's bieden hoogwaardige en functiegerichte API's, met een hoge mate van draagbaarheid. Product- of randcomplexiteit is verborgen voor eindgebruikers.
- LL-stuurprogramma's bieden laaglaagse API's op registerniveau, met betere optimalisatie maar minder draagbaar. Ze vereisen diepgaande kennis van product- of IP-specificaties.
- Kan ik HAL- en LL-stuurprogramma's samen gebruiken? Als ik dat kan, wat zijn dan de beperkingen?
- Het is mogelijk om zowel HAL- als LL-stuurprogramma's te gebruiken. Gebruik de HAL voor de IP-initialisatiefase en beheer vervolgens de I/O-bewerkingen met LL-stuurprogramma's.
- Het belangrijkste verschil tussen HAL en LL is dat HAL-stuurprogramma's handvatten moeten maken en gebruiken voor operationeel beheer, terwijl LL-stuurprogramma's rechtstreeks op perifere registers werken. De examples_MIX bijvample illustreert hoe je HAL en LL mengt.
- Hoe worden LL-initialisatie-API's ingeschakeld?
- De definitie van LL-initialisatie-API's en bijbehorende bronnen (structuren, letterlijke waarden en prototypes) wordt bepaald door de compilatieschakelaar USE_FULL_LL_DRIVER.
- Om LL-initialisatie-API's te kunnen gebruiken, voegt u deze schakelaar toe aan de preprocessor van de toolchain-compiler.
- Hoe kan STM32CubeMX code genereren op basis van embedded software?
STM32CubeMX heeft ingebouwde kennis van STM32-microcontrollers, inclusief hun randapparatuur en software waarmee een grafische weergave aan de gebruiker kan worden geboden en *.h of *.c kan worden gegenereerd files gebaseerd op gebruikersconfiguratie.
BELANGRIJKE MEDEDELING – LEES ZORGVULDIG
- STMicroelectronics NV en haar dochterondernemingen ("ST") behouden zich het recht voor om op elk moment zonder kennisgeving wijzigingen, correcties, verbeteringen, aanpassingen en aanpassingen aan te brengen in ST-producten en/of in dit document. Kopers dienen de laatste relevante informatie over ST-producten te verkrijgen voordat ze een bestelling plaatsen. ST-producten worden verkocht overeenkomstig de verkoopvoorwaarden van ST die van kracht zijn op het moment van orderbevestiging.
- Kopers zijn als enige verantwoordelijk voor de keuze, selectie en het gebruik van ST-producten. ST aanvaardt geen aansprakelijkheid voor hulp bij de toepassing of het ontwerp van de producten van kopers.
- ST verleent hierbij geen enkele licentie, expliciet of impliciet, op enig intellectueel eigendomsrecht.
- Bij wederverkoop van ST-producten met bepalingen die afwijken van de hierin vermelde informatie, vervalt de garantie die ST op dat product verleent.
- ST en het ST-logo zijn handelsmerken van ST. Raadpleeg voor meer informatie over ST-handelsmerken www.st.com/trademarks. Alle andere product- of servicenamen zijn eigendom van hun respectievelijke eigenaren.
- De informatie in dit document vervangt de informatie die eerder in eerdere versies van dit document is verstrekt.
- © 2023 STMicroelectronics – Alle rechten voorbehouden
Documenten / Bronnen
![]() |
STMicroelectronics STM32WBA-serie Aan de slag [pdf] Gebruikershandleiding STM32WBA-serie Aan de slag, aan de slag, aan de slag |