Seria STMicroelectronics STM32WBA Introducere
Informații despre produs
Specificatii:
- Nume produs: Pachetul MCU STM32CubeWBA
- Producător: STMicroelectronics
- Compatibilitate: Microcontrolere din seria STM32WBA
- Licențiere: Licență BSD open-source
Instrucțiuni de utilizare a produsului
Principalele caracteristici ale pachetului MCU STM32CubeWBA:
Pachetul MCU STM32CubeWBA oferă toate componentele software încorporate necesare pentru dezvoltarea aplicațiilor pe microcontrolerele din seria STM32WBA. Este foarte portabil în seria STM32 și vine cu API-uri HAL și LL, de exampfișiere și componente middleware.
Arhitectura S-a terminatview:
Arhitectura pachetului MCU STM32CubeWBA constă din trei niveluri - Aplicații, componente bazate pe bibliotecă și protocol, stratul de abstractizare hardware, drivere BSP, drivere de bază și API-uri de nivel inferior.
FAQ
- Ce este inclus în pachetul MCU STM32CubeWBA?
Pachetul include API-uri low-layer (LL) și hardware abstraction layer (HAL), de exampfișiere, aplicații, componente middleware precum FileX/LevelX, NetX Duo, biblioteci mbed-crypto și multe altele. - Este pachetul MCU STM32CubeWBA compatibil cu generatorul de cod STM32CubeMX?
Da, pachetul este pe deplin compatibil cu generatorul de cod STM32CubeMX pentru generarea codului de inițializare.
Introducere
- STM32Cube este o inițiativă originală STMicroelectronics de îmbunătățire semnificativă a productivității designerilor prin reducerea efortului, timpului și costurilor de dezvoltare. STM32Cube acoperă întregul portofoliu STM32.
STM32Cube include:- Un set de instrumente de dezvoltare software ușor de utilizat pentru a acoperi dezvoltarea proiectelor de la concepție până la realizare, printre care se numără:
- STM32CubeMX, un instrument de configurare software grafic care permite generarea automată a codului de inițializare C folosind vrăjitori grafici
- STM32CubeIDE, un instrument de dezvoltare all-in-one cu configurație periferică, generare de cod, compilare de cod și caracteristici de depanare
- STM32CubeCLT, un set de instrumente de dezvoltare cu linie de comandă all-in-one cu compilare de cod, programare pe placă și caracteristici de depanare
- STM32CubeProgrammer (STM32CubeProg), un instrument de programare disponibil în versiuni grafice și de linie de comandă
- STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), instrumente puternice de monitorizare pentru reglarea fină a comportamentului și performanței aplicațiilor STM32 în timp real
- Pachete MCU și MPU STM32Cube, platforme cuprinzătoare de software încorporat specifice fiecărei serii de microcontrolere și microprocesoare (cum ar fi STM32CubeWBA pentru seria STM32WBA), care includ:
- Stratul de abstractizare hardware (HAL) STM32Cube, asigurând portabilitate maximizată în portofoliul STM32
- API-uri STM32Cube low-layer, asigurând cea mai bună performanță și amprente cu un grad ridicat de control al utilizatorului asupra hardware-ului
- Un set consistent de componente middleware, cum ar fi ThreadX, FileX / LevelX, NetX Duo, USBX, biblioteca tactilă, mbed-crypto, TFM, MCUboot, OpenBL și STM32_WPAN (inclusiv Bluetooth® Low Energy profileși servicii, Mesh, Zigbee®, OpenThread, Matter și stratul MAC 802.15.4)
- Toate utilitățile software încorporate cu seturi complete de periferice și aplicative de examples
- Pachetele de extindere STM32Cube, care conțin componente software încorporate care completează funcționalitățile pachetelor MCU și MPU STM32Cube cu:
- Extensii middleware și straturi aplicative
- Exampfișiere care rulează pe anumite plăci de dezvoltare STMicroelectronics
- Un set de instrumente de dezvoltare software ușor de utilizat pentru a acoperi dezvoltarea proiectelor de la concepție până la realizare, printre care se numără:
- Acest manual de utilizare descrie cum să începeți cu pachetul MCU STM32CubeWBA.
- Secțiunea 2 Principalele caracteristici ale STM32CubeWBA descrie principalele caracteristici ale pachetului MCU STM32CubeWBA.
- Secțiunea 3 STM32CubeWBA arhitectura terminatăview oferă un pesteview a arhitecturii STM32CubeWBA și a structurii pachetului MCU.
Informații generale
Pachetul MCU STM32CubeWBA rulează pe microcontrolere STM32 pe 32 de biți bazate pe procesorul Arm® Cortex®-M33 cu Arm® TrustZone® și FPU.
Nota: Arm și TrustZone sunt mărci comerciale înregistrate ale Arm Limited (sau ale filialelor sale) în SUA și/sau în altă parte.
Principalele caracteristici ale STM32CubeWBA
- Pachetul MCU STM32CubeWBA rulează pe microcontrolere STM32 pe 32 de biți bazate pe procesorul Arm® Cortex®-M33 cu TrustZone® și FPU.
- STM32CubeWBA reunește, într-un singur pachet, toate componentele software încorporate generice necesare dezvoltării unei aplicații pentru microcontrolerele din seria STM32WBA. În conformitate cu inițiativa STM32Cube, acest set de componente este foarte portabil, nu numai în cadrul microcontrolerelor din seria STM32WBA, ci și în alte serii STM32.
- STM32CubeWBA este pe deplin compatibil cu generatorul de cod STM32CubeMX, pentru a genera codul de inițializare. Pachetul include API-uri low-layer (LL) și hardware abstraction layer (HAL) care acoperă hardware-ul microcontrolerului, împreună cu un set extins de ex.ampfișierele care rulează pe plăci STMicroelectronics. API-urile HAL și LL sunt disponibile într-o licență BSD open-source pentru confortul utilizatorului.
- Pachetul MCU STM32CubeWBA conține, de asemenea, o componentă middleware cuprinzătoare construită în jurul middleware-ului Microsoft® Azure® RTOS și alte stive interne și open-source, cu ex-ul corespunzătoare.amples.
- Acestea vin cu termeni de licență gratuiti, ușor de utilizat:
- Azure® RTOS integrat și cu funcții complete: Azure® RTOS ThreadX
- Implementarea CMSIS-RTOS cu Azure® RTOS ThreadX
- Stack-uri de gazdă și dispozitive USB care vin cu multe clase: Azure® RTOS USBX
- Avansat file sistem și stratul de traducere flash: FileX / NivelX
- Stack de rețea de calitate industrială: optimizat pentru performanța care vine cu multe protocoale IoT: NetX Duo
- OpenBootloader
- Soluție de integrare Arm® Trusted Firmware-M (TF-M).
- biblioteci mbed-crypto
- Biblioteca ST Netwok
- Soluție de bibliotecă de detectare a atingerii STMTouch
- Câteva aplicații și demonstrații care implementează toate aceste componente middleware sunt, de asemenea, furnizate în pachetul MCU STM32CubeWBA.
- Aspectul componentelor pachetului MCU STM32CubeWBA este ilustrat în Figura 1. Componentele pachetului MCU STM32CubeWBA .
Arhitectura STM32CubeWBA s-a terminatview
Soluția pachetului MCU STM32CubeWBA este construită în jurul a trei niveluri independente care interacționează cu ușurință, așa cum este descris în Figura 2. Arhitectura pachetului MCU STM32CubeWBA.
Nivelul 0
Acest nivel este împărțit în trei substraturi:
- Pachetul de suport pentru bord (BSP).
- Stratul de abstractizare hardware (HAL):
- Drivere periferice HAL
- Drivere de nivel inferior
- Utilizare periferică de bază examples.
Pachetul de suport pentru bord (BSP)
Acest strat oferă un set de API-uri referitoare la componentele hardware din plăcile hardware (cum ar fi driverele LCD, Audio,\microSD™ și MEMS). Este compus din două părți:
- Driver de componentă:
Acest driver este legat de dispozitivul extern de pe placă și nu de dispozitivul STM32. Driverul pentru componente oferă API-uri specifice componentelor externe ale driverului BSP și poate fi portabil pe orice altă placă. - Driver BSP:
Driverul BSP permite conectarea driverelor componente la o placă specifică și oferă un set de ușor de utilizat
API-uri. Regula de numire API este BSP_FUNCT_Action().
Exampfișier: BSP_LED_Init(), BSP_LED_On()
BSP se bazează pe o arhitectură modulară care permite portarea ușoară pe orice hardware prin simpla implementare a rutinelor de nivel scăzut.
Stratul de abstractizare hardware (HAL) și stratul inferior (LL)
STM32CubeWBA HAL și LL sunt complementare și acoperă o gamă largă de cerințe de aplicație:
- Driverele HAL oferă API-uri extrem de portabile, de nivel înalt, orientate spre funcții. Ele ascund MCU și complexitatea periferică pentru utilizatorul final.
Driverele HAL furnizează API-uri generice orientate spre funcții multi-instanță, care simplifică implementarea aplicației utilizator prin furnizarea de procese gata de utilizare. De example, pentru perifericele de comunicație (I2S, UART și altele), oferă API-uri care permit inițializarea și configurarea perifericului, gestionarea transferului de date pe baza procesului de interogare, întrerupere sau DMA și gestionarea erorilor de comunicare care pot apărea în timpul comunicării. API-urile driverului HAL sunt împărțite în două categorii:- API-uri generice, care oferă funcții comune și generice tuturor microcontrolerelor din seria STM32.
- API-uri de extensie, care oferă funcții specifice și personalizate pentru o anumită familie sau un anumit număr de piesă.
- API-urile de nivel inferior oferă API-uri de nivel scăzut la nivel de registru, cu o optimizare mai bună, dar mai puțină portabilitate.
- Acestea necesită cunoștințe profunde despre MCU și specificațiile periferice.
- Driverele LL sunt proiectate pentru a oferi un strat rapid și ușor orientat către experți, care este mai aproape de hardware decât HAL. Spre deosebire de HAL, API-urile LL nu sunt furnizate pentru periferice unde accesul optimizat nu este o caracteristică cheie sau pentru cele care necesită o configurație de software grea sau o stivă complexă de nivel superior.
- Caracteristicile driverelor LL:
- Un set de funcții pentru a inițializa caracteristicile principale ale perifericelor în funcție de parametrii specificați în structurile de date.
- Un set de funcții pentru a completa structurile de date de inițializare cu valorile de resetare corespunzătoare fiecărui câmp.
- Funcție pentru deinițializare periferică (registrele periferice restaurate la valorile implicite).
- Un set de funcții inline pentru acces direct și la registrul atomic.
- Independență deplină față de HAL și capacitatea de a fi utilizat în modul de sine stătător (fără drivere HAL).
- Acoperire completă a caracteristicilor periferice acceptate.
Utilizare periferică de bază examples
Acest strat cuprinde exampfișierele construite peste perifericele STM32 folosind doar resursele HAL și BSP.
Nivelul 1
Acest nivel este împărțit în două substraturi:
- Componente middleware
- Exampfișiere bazate pe componentele middleware
Componente middleware
- Middleware-ul este un set de biblioteci care acoperă Bluetooth® Low Energy (Linklayer, HCI, Stack), Thread®, Zigbee®,
- Matter, OpenBootloader, Microsoft® Azure® RTOS, TF‑M, MCUboot și mbed-crypto.
- Interacțiunea orizontală între componentele acestui strat se realizează prin apelarea API-urilor prezentate.
- Interacțiunea verticală cu driverele de nivel inferior se realizează prin apeluri specifice și macro-uri statice implementate în interfața de apelare a sistemului de bibliotecă.
- Principalele caracteristici ale fiecărei componente middleware sunt următoarele:
- Microsoft® Azure® RTOS
- Azure® RTOS ThreadX: Un sistem de operare în timp real (RTOS), conceput pentru sisteme încorporate cu două moduri funcționale.
- Modul comun: funcționalități comune RTOS, cum ar fi gestionarea și sincronizarea firelor, gestionarea pool-ului de memorie, mesageria și gestionarea evenimentelor.
- Modul modul: un mod avansat de utilizator care permite încărcarea și descărcarea modulelor ThreadX preconectate din mers printr-un manager de module.
- NetX Duo
- FileX
- USBX
- Azure® RTOS ThreadX: Un sistem de operare în timp real (RTOS), conceput pentru sisteme încorporate cu două moduri funcționale.
- Bluetooth® Low Energy (BLE): Implementează protocolul Bluetooth® Low Energy pentru straturile Link și Stack.
- MCUboot (software open-source)
- Protocoale Zigbee® pentru stivă și clustere aferente.
- Stivă de protocol Thread® și strat de legătură.
- Arm® trusted firmware-M, TF-M (software open-source): implementarea de referință a arhitecturii de securitate a platformei Arm® (PSA) pentru TrustZone® cu serviciile securizate asociate.
- mbed-crypto (software cu sursă deschisă): middleware-ul mbed-crypto oferă o implementare API de criptare PSA.
- Biblioteca de detectare a atingerii STM32: soluție robustă de detectare a atingerii capacitive STMTouch, care acceptă senzori de proximitate, taste tactile, liniari și rotativi. Se bazează pe un principiu dovedit de achiziție a transferului de sarcină de suprafață.
- Microsoft® Azure® RTOS
Exampfișiere bazate pe componentele middleware
Fiecare componentă middleware vine cu unul sau mai multe exampfișierele (numite și aplicații) care arată cum să-l folosească. Integrare exampDe asemenea, sunt furnizate fișiere care utilizează mai multe componente middleware.
Pachetul firmware STM32CubeWBA s-a terminatview
Dispozitive și hardware din seria STM32WBA acceptate
- STM32Cube oferă un strat de abstractizare hardware (HAL) extrem de portabil, construit în jurul unei arhitecturi generice. Permite principiul build-on-layers, cum ar fi utilizarea stratului middleware pentru a-și implementa funcțiile fără a ști, în profunzime, ce MCU este utilizat. Acest lucru îmbunătățește reutilizarea codului de bibliotecă și asigură o portabilitate ușoară către alte dispozitive.
- În plus, datorită arhitecturii sale stratificate, STM32CubeWBA oferă suport complet pentru toate seriile STM32WBA.
- Utilizatorul trebuie doar să definească macrocomanda corectă în stm32wbaxx.h.
- Tabelul 1 arată macro-ul de definit în funcție de dispozitivul din seria STM32WBA utilizat. Această macrocomandă trebuie definită și în preprocesorul compilatorului.
Tabelul 1. Macro-uri pentru seria STM32WBAMacro definită în stm32wbaxx.h Dispozitive din seria STM32WBA stm32wba52xx STM32WBA52CGU6, STM32WBA52KGU6, STM32WBA52CEU6, STM32WBA52KEU6 stm32wba55xx STM32WBA55CGU6, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CEU6, STM32WBA55CEU7 - STM32CubeWBA oferă un set bogat de exampfișiere și aplicații la toate nivelurile, facilitând înțelegerea și utilizarea oricărui driver HAL sau componente middleware. Aceste exampfișierele rulează pe plăcile STMicroelectronics enumerate în Tabelul 2.
Tabel 2. Plăci pentru seria STM32WBABord Dispozitive acceptate de bord STM32WBA NUCLEO-WBA52CG STM32WBA52CGU6 NUCLEO-WBA55CG STM32WBA55CGU6 STM32WBA55-DK1 STM32WBA55CGU7 - Pachetul STM32CubeWBA MCU poate rula pe orice hardware compatibil. Utilizatorul pur și simplu actualizează driverele BSP pentru a porta exampfișierele de pe placă, dacă aceasta din urmă are aceleași caracteristici hardware (cum ar fi LED, afișaj LCD și butoane).
Pachetul de firmware s-a terminatview
- Soluția pachetului STM32CubeWBA este furnizată într-un singur pachet zip având structura prezentată în Figura 3. Structura pachetului firmware STM32CubeWBA.
- Pentru fiecare tabla, un set de exampfișierul este furnizat cu proiecte preconfigurate pentru lanțurile de instrumente EWARM, MDK-ARM și STM32CubeIDE.
- Figura 4. STM32CubeWBA examples pesteview arată structura proiectului pentru plăcile NUCLEO-WBA52CG, NUCLEO-WBA55CG și STM32WBA55G-DK1.
- Exampfișierele sunt clasificate în funcție de nivelul STM32Cube la care se aplică și sunt denumite după cum urmează:
- Nivelul 0 exampse numesc Examples, Examples_LL și Examples_MIX. Ei folosesc, respectiv, drivere HAL, drivere LL și o combinație de drivere HAL și LL fără nicio componentă middleware.
- Nivelul 1 exampfișierele se numesc Aplicații. Acestea oferă cazuri de utilizare tipice pentru fiecare componentă middleware. Orice aplicație de firmware pentru o anumită placă poate fi construită rapid datorită proiectelor șabloane disponibile în directoarele Templ ates și Templates_LL.
Proiecte compatibile TrustZone®
- TrustZone® activat Exampnumele fișierelor conțin prefixul _TrustZone. Regula se aplică și aplicațiilor (cu excepția TFM și SBSFU, care sunt în mod nativ pentru TrustZone®).
- Ex. compatibil TrustZone®ampfișierele și aplicațiile sunt furnizate cu o structură multiproiect compusă din subproiecte sigure și nesecurizate, așa cum este prezentat în Figura 5. Structură de proiect multiproiect securizată și nesigură.
- Proiectele compatibile cu TrustZone® sunt dezvoltate conform șablonului de dispozitiv CMSIS-5, extins pentru a include antetul de partiționare a sistemului file partition_ .h, care este responsabil în principal pentru configurarea unității de atribute securizate (SAU), a FPU și a atribuirii întreruperilor securizate/nesecurizate în starea de execuție securizată.
- Această configurare este efectuată în funcția securizată SystemInit() CMSIS, care este apelată la pornire înainte de a intra în funcția securizată main() a aplicației. Consultați documentația Arm® TrustZone®-M a ghidurilor software.
- Pachetul de firmware al pachetului STM32CubeWBA oferă partiționarea implicită a memoriei în partiția _ .h filesunt disponibile sub: \Drivers\CMSIS\Device\ST\STM32WBAxx\Include\T şabloane
- În aceste partiții files, SAU este dezactivat implicit. În consecință, maparea memoriei IDAU este utilizată pentru atribuirea securității. Consultați figura Partiționare securizată/nesigură folosind tehnologia TrustZone® din manualul de referință RM0495.
- Dacă utilizatorul activează SAU, o configurație implicită a regiunilor SAU este predefinită în partiție fileeste după cum urmează:
- Regiunea SAU 0: 0x08080000 – 0x081FFFFF (jumătate nesigură securizată a memoriei flash (512 Kbytes))
- Regiunea SAU 1: 0x0BF88000 – 0x0BF97FFF (memorie de sistem nesecurizată)
- Regiunea SAU 2: 0x0C07E000 – 0x0C07FFFF (securizat, apelabil nesecurizat)
- Regiunea SAU 3: 0x20010000 – 0x2001FFFF (SRAM2 nesecurizat (64 Kbytes))
- Regiunea SAU 4: 0x40000000 – 0x4FFFFFFF (memorie mapată periferică nesecurizată)
- Pentru a se potrivi cu partiționarea implicită, dispozitivele din seria STM32WBAxx trebuie să aibă setați următorii octeți de opțiuni de utilizator:
- TZEN = 1 (dispozitiv compatibil TrustZone®)
- SECWM1_PSTRT = 0x0 SECWM1_PEND = 0x3F (64 din 128 de pagini de memorie flash internă setată ca securizată) Notă: Memoria flash internă este complet sigură în mod implicit în TZEN = 1. Octeții de opțiune pentru utilizator SECWM1_PSTRT/ SECWM1_PEND trebuie setați în funcție de aplicație configurația memoriei (regiuni SAU, dacă SAU este activat). Linker de proiect pentru aplicații securizate/nesigure files trebuie de asemenea să fie aliniate.
- toate exampfișierele au aceeași structură:
- Dosarul \Inc care conține toate anteturile files.
- Dosarul Src care conține codul sursă.
- folderele \EWARM, \MDK-ARM și \STM32CubeIDE care conțin proiectul preconfigurat pentru fiecare lanț de instrumente.
- readme.md și readme.html descriind exampcomportamentul și mediul necesar pentru ca acesta să funcționeze.
- ioc file care permite utilizatorilor să deschidă majoritatea firmware-ului, de exampfișiere din STM32CubeMX.
Noțiuni introductive cu STM32CubeWBA
Rularea unui prim HAL example
Această secțiune explică cât de simplu este să rulezi primul example în STM32CubeWBA. Folosește ca ilustrație generarea unui comutator LED simplu care rulează pe placa NUCLEO-WBA52CG:
- Descărcați pachetul STM32CubeWBA MCU.
- Dezarhivați-l într-un director la alegere.
- Asigurați-vă că nu modificați structura pachetului prezentată în Figura 1. De asemenea, este recomandat să copiați pachetul într-o locație apropiată de volumul rădăcină (adică C:\ST sau G:\Tests), deoarece unele IDE-uri întâmpină probleme când calea lungimea este prea mare.
Rularea unui prim TrustZone® activat de example
- Înainte de a încărca și de a rula un TrustZone® de example, este obligatoriu sa citesti example readme file pentru orice configurație specifică, care asigură că securitatea este activată așa cum este descris în Secțiunea 4.2.1 Proiecte activate TrustZone® (TZEN=1 (octet opțiunea utilizatorului)).
- Navigați la \Projects\NUCLEO-WBA52CG\Examples.
- Deschideți folderele \GPIO, apoi \GPIO_IOToggle_TrustZone.
- Deschideți proiectul cu lanțul de instrumente preferat. Un peste rapidview despre cum să deschideți, să construiți și să rulați un exampfișierul cu lanțurile de instrumente acceptate este prezentat mai jos.
- Reconstruiți în secvență toate proiectele sigure și nesecurizate files și încărcați imaginile sigure și nesecurizate în memoria țintă.
- Rulați example: în mod regulat, aplicația securizată comută LD2 în fiecare secundă, iar aplicația nesigură comută LD3 de două ori mai repede. Pentru mai multe detalii, consultați readme file a example.
- Pentru a deschide, a construi și a rula un exampcu lanțurile de instrumente acceptate, urmați pașii de mai jos:
- EWARM:
- Sub exampfolder, deschideți subfolderul \EWARM.
- Lansați spațiul de lucru Project.eww
- Reconstruiți proiectul securizat xxxxx_S files: [Proiect]>[Reconstruiți toate].
- Setați proiectul nesecurizat xxxxx_NS ca aplicație activă (clic dreapta pe proiectul xxxxx_NS [Set as Active])
- Reconstruiți proiectul nesecurizat xxxxx_NS files: [Proiect]>[Reconstruiți toate].
- Flash binarul nesecurizat cu [Proiect]>[Descărcare]>[Descărcare aplicație activă] .
- Setați xxxxx_S ca aplicație activă (clic dreapta pe proiectul xxxxx_S [Set as Active].
- Flash binarul securizat cu [Download and Debug] (Ctrl+D).
- Rulați programul: [Debug]>[Go(F5)]
- MDK-ARM:
- Deschideți lanțul de instrumente \MDK-ARM.
- Deschideți spațiul de lucru Multiprojects file Proiect.uvmpw.
- Selectați proiectul xxxxx_s ca aplicație activă ([Setare ca proiect activ]).
- Construiți proiectul xxxxx_s.
- Selectați proiectul xxxxx_ns ca proiect activ ([Setare ca proiect activ]).
- Construiți proiectul xxxxx_ns.
- Încărcați binarul nesecurizat ([F8]). Aceasta descarcă \MDK-ARM\xxxxx_ns\Exe\xxxxx_ns.axf în memoria flash)
- Selectați proiectul Project_s ca proiect activ ([Set as Active Project]).
- Încărcați binarul securizat ([F8]). Aceasta descarcă \MDK-ARM\xxxxx_s\Exe\xxxxx_s.axf în memoria flash).
- Rulați example.
- STM32CubeIDE:
- Deschideți lanțul de instrumente STM32CubeIDE.
- Deschideți spațiul de lucru Multiprojects file .proiect.
- Reconstruiți proiectul xxxxx_Secure.
- Reconstruiți proiectul xxxxx_NonSecure.
- Lansați aplicația [Debug as STM32 Cortex-M C/C++] pentru proiectul securizat.
- În fereastra [Editare configurație], selectați panoul [Startup] și adăugați încărcați imaginea și simbolurile proiectului nesecurizat.
Important: Proiectul nesecurizat trebuie să fie încărcat înainte de proiectul securizat. - Faceți clic pe [Ok].
- Rulați example pe perspectiva depanării.
- EWARM:
Rularea unui prim TrustZone® dezactivat, example
- Înainte de a încărca și de a rula un TrustZone® dezactivat, example, este obligatoriu sa citesti example readme file pentru orice configurație specifică. Dacă nu există mențiuni specifice, asigurați-vă că dispozitivul de bord are securitatea dezactivată (TZEN=0 (octet opțiunea utilizatorului)). Consultați Întrebări frecvente pentru a face regresia opțională la TZEN = 0
- Navigați la \Projects\NUCLEO-WBA52CG\Examples.
- Deschideți folderele \GPIO, apoi \GPIO_EXTI.
- Deschideți proiectul cu lanțul de instrumente preferat. Un peste rapidview despre cum să deschideți, să construiți și să rulați un exampfișierul cu lanțurile de instrumente acceptate este prezentat mai jos.
- Reconstruiește totul files și încărcați imaginea în memoria țintă.
- Rulați example: De fiecare dată când butonul [USER] este apăsat, LED-ul LD1 comută. Pentru mai multe detalii, consultați readme file a example.
- Pentru a deschide, a construi și a rula un exampcu lanțurile de instrumente acceptate, urmați pașii de mai jos:
- EWARM:
- Sub exampfolder, deschideți subfolderul \EWARM.
- Lansați spațiul de lucru Project.eww (numele spațiului de lucru se poate schimba de la unul de example la altul).
- Reconstruiește totul files: [Proiect]>[Reconstruiți toate].
- Încărcați imaginea proiectului: [Proiect]>[Debug].
- Rulați programul: [Debug]>[Go (F5)].
- MDK-ARM:
- Sub exampfolder, deschideți subfolderul \MDK-ARM.
- Lansați spațiul de lucru Project.uvproj (numele spațiului de lucru se poate schimba de la un example la altul).
- Reconstruiește totul files:[Proiect]>[Reconstruiți toată ținta files].
- Încărcați imaginea proiectului: [Debug]>[Start/Stop Debug Session].
- Rulați programul: [Debug]>[Run (F5)].
- STM32CubeIDE:
- Deschideți lanțul de instrumente STM32CubeIDE.
- Faceți clic pe [File]>[Switch Workspace]>[Other] și răsfoiți la directorul STM32CubeIDE spațiu de lucru.
- Faceți clic pe [File]>[Import] , selectați [General]>[Proiecte existente în spațiul de lucru], apoi faceți clic pe [Next].
- Navigați la directorul spațiului de lucru STM32CubeIDE și selectați proiectul.
- Reconstruiți tot proiectul files: Selectați proiectul în fereastra [Project Explorer] apoi faceți clic pe meniul [Proiect]>[Build project].
- Rulați programul: [Run]>[Debug (F11)]
- EWARM:
Dezvoltarea unei aplicații personalizate
Nota: Software-ul trebuie să permită cache-ul de instrucțiuni (ICACHE) pentru a obține o execuție în stare de așteptare 0 din memoria flash și pentru a atinge performanța maximă și un consum de energie mai bun.
Utilizarea STM32CubeMX pentru a dezvolta sau actualiza o aplicație
- În pachetul STM32CubeWBA MCU, aproape toate proiectele de exampfișierele sunt generate cu instrumentul STM32CubeMX pentru a inițializa sistemul, perifericele și middleware-ul.
- Utilizarea directă a unui proiect existent exampfișierul din instrumentul STM32CubeMX necesită STM32CubeMX 6.10.0 sau o versiune ulterioară:
- După instalarea STM32CubeMX, deschideți și, dacă este necesar, actualizați un proiect propus. Cel mai simplu mod de a deschide un proiect existent este să faceți dublu clic pe *.ioc file astfel încât STM32CubeMX deschide automat proiectul și sursa acestuia files.
- STM32CubeMX generează codul sursă de inițializare a unor astfel de proiecte. Codul sursă principal al aplicației este conținut de comentariile „USER CODE BEGIN” și „USER CODE END”. În cazul în care selecția și setarea IP sunt modificate, STM32CubeMX actualizează partea de inițializare a codului, dar păstrează codul sursă principal al aplicației.
- Pentru a dezvolta un proiect personalizat în STM32CubeMX, urmați procesul pas cu pas:
- Selectați microcontrolerul STM32 care se potrivește cu setul necesar de periferice.
- Configurați tot software-ul încorporat necesar utilizând un rezolutor de conflicte de pinout, un ajutor de setare a arborelui ceasului, un calculator de consum de energie și utilitarul care realizează configurarea perifericelor MCU (cum ar fi GPIO sau USART) și stive de middleware (cum ar fi USB).
- Generați codul C de inițializare pe baza configurației selectate. Acest cod este gata de utilizare în mai multe medii de dezvoltare. Codul utilizatorului este păstrat la următoarea generație de cod.
- Pentru mai multe informații despre STM32CubeMX, consultați manualul de utilizare STM32CubeMX pentru configurarea STM32 și generarea codului C de inițializare (UM1718).
- Pentru o listă a proiectelor disponibile exampfișiere pentru STM32CubeWBA, consultați nota de aplicație firmware STM32Cube exampfișiere pentru seria STM32WBA (AN5929).
Aplicații pentru drivere
Aplicația HAL
Această secțiune descrie pașii necesari pentru a crea o aplicație HAL personalizată folosind STM32CubeWBA:
- Creați un proiect
- Pentru a crea un proiect nou, începeți fie de la proiectul șablon furnizat pentru fiecare tablă sub \Proiecte\ \Șabloane sau din orice proiect disponibil sub \Proiecte\ \Exemple sau \Proiecte\ \Aplicații (unde se referă la numele plăcii, cum ar fi STM32CubeWBA).
- Proiectul Template oferă o funcție de buclă principală goală. Cu toate acestea, este un bun punct de plecare pentru a înțelege setările proiectului STM32CubeWBA. Șablonul are următoarele caracteristici:
- Conține codul sursă HAL, driverele CMSIS și BSP, care sunt setul minim de componente necesare pentru a dezvolta un cod pe o placă dată.
- Conține căile incluse pentru toate componentele firmware-ului.
- Acesta definește dispozitivele din seria STM32WBA acceptate, permițând configurarea corectă a driverelor CMSIS și HAL.
- Oferă utilizatorului gata de utilizare fileeste preconfigurat după cum se arată mai jos:
HAL inițializat cu baza de timp implicită cu Arm® Core SysTick. SysTick ISR implementat în scopul HAL_Delay().
Nota: Când copiați un proiect existent într-o altă locație, asigurați-vă că toate căile incluse sunt actualizate.
- Adăugați middleware-ul necesar la proiectul utilizatorului (opțional)
Pentru a identifica sursa files să fie adăugat la proiect file listă, consultați documentația furnizată pentru fiecare middleware. Consultați aplicațiile de sub \Projects\STM32xxx_yyy\Applications\ (Unde se referă la stiva de middleware, cum ar fi ThreadX) pentru a ști ce sursă files și include căile trebuie adăugate. - Configurați componentele firmware-ului
Componentele HAL și middleware oferă un set de opțiuni de configurare în timpul construirii folosind macrocomenzi #define declarate într-un antet file. O configurație de șablon file este furnizat în fiecare componentă, care trebuie copiată în folderul proiectului (de obicei configurația file se numește xxx_conf_template.h, cuvântul _template trebuie eliminat atunci când îl copiați în folderul proiectului). Configurația file oferă suficiente informații pentru a înțelege impactul fiecărei opțiuni de configurare. Informații mai detaliate sunt disponibile în documentația furnizată pentru fiecare componentă. - Porniți biblioteca HAL
După ce sari la programul principal, codul aplicației trebuie să apeleze API-ul HAL_Init() pentru a inițializa biblioteca HAL, care efectuează următoarele sarcini:- Configurarea preluării memoriei flash și a priorității întreruperii SysTick (prin macro-urile definite în st m32wbaxx_hal_conf.h).
- Configurarea SysTick pentru a genera o întrerupere la fiecare milisecundă la prioritatea de întrerupere SysTick TICK_INT_PRIO definită în stm32wbaxx_hal_conf.h.
- Setarea priorității grupului NVIC la 0.
- Apelul funcției de apel invers HAL_MspInit() definit în utilizatorul stm32wbaxx_hal_msp.c file pentru a efectua inițializari hardware globale de nivel scăzut.
- Configurați ceasul sistemului
Configurarea ceasului sistemului se face apelând cele două API-uri descrise mai jos:- HAL_RCC_OscConfig(): acest API configurează oscilatorii interni și externi. Utilizatorul alege să configureze unul sau toate oscilatoarele.
- HAL_RCC_ClockConfig(): acest API configurează sursa ceasului sistemului, latența memoriei flash și prescalers AHB și APB.
- Inițializați perifericul
- Mai întâi scrieți funcția periferică HAL_PPP_MspInit. Procedați după cum urmează:
- Activați ceasul periferic.
- Configurați GPIO-urile periferice.
- Configurați canalul DMA și activați întreruperea DMA (dacă este necesar).
- Activați întreruperea periferică (dacă este necesar).
- Editați stm32xxx_it.c pentru a apela gestionatorii de întreruperi necesari (periferice și DMA), dacă este necesar.
- Procesul de scriere a funcțiilor de apel invers complet, dacă este planificat să fie utilizat o întrerupere periferică sau DMA.
- În user main.c file, inițializați structura mânerului periferic apoi apelați funcția HAL_PPP_Init() pentru a inițializa perifericul.
- Mai întâi scrieți funcția periferică HAL_PPP_MspInit. Procedați după cum urmează:
- Dezvoltați o aplicație
- La acest stage, sistemul este gata și dezvoltarea codului aplicației utilizator poate începe.
- HAL oferă API-uri intuitive și gata de utilizare pentru a configura perifericele. Acceptă sondarea, întreruperile și un model de programare DMA, pentru a se adapta oricăror cerințe ale aplicației. Pentru mai multe detalii despre cum să utilizați fiecare periferic, consultați exampsetul de fișiere furnizat în pachetul MCU STM32CubeWBA.
Atenţie: În implementarea HAL implicită, cronometrul SysTick este folosit ca bază de timp: generează întreruperi la intervale de timp regulate. Dacă HAL_Delay() este apelat din procesul ISR periferic, asigurați-vă că întreruperea SysTick are o prioritate mai mare (mai mică numeric) decât întreruperea periferică. În caz contrar, procesul ISR apelantului este blocat. Funcțiile care afectează configurațiile bazei de timp sunt declarate ca __slabe pentru a face posibilă înlocuirea în cazul altor implementări în utilizator file (folosind un temporizator de uz general, de example, sau altă sursă de timp). Pentru mai multe detalii, consultați HAL_TimeBase example.
Aplicație LL
Această secțiune descrie pașii necesari pentru a crea o aplicație LL personalizată folosind STM32CubeWBA.
- Creați un proiect
- Pentru a crea un proiect nou, fie porniți de la proiectul Templates_LL furnizat pentru fiecare panou sub \Proiecte\ \Templates_LL sau din orice proiect disponibil sub \Projects\ \Examples_LL ( se referă la numele plăcii, cum ar fi NUCLEO-WBA32CG).
- Proiectul șablon oferă o funcție de buclă principală goală, care este un bun punct de plecare pentru a înțelege setările proiectului pentru STM32CubeWBA. Principalele caracteristici ale șablonului sunt următoarele:
- Conține codurile sursă ale driverelor LL și CMSIS, care sunt setul minim de componente necesare pentru a dezvolta codul pe o placă dată.
- Conține căile incluse pentru toate componentele firmware necesare.
- Selectează dispozitivul din seria STM32WBA acceptat și permite configurarea corectă a driverelor CMSIS și LL.
- Oferă utilizatorului gata de utilizare files care sunt preconfigurate după cum urmează:
◦ main.h: stratul de abstractizare definiție LED și USER_BUTTON.
◦ main.c: Configurarea ceasului de sistem pentru frecvența maximă.
- Portați un proiect existent pe o altă placă
Pentru a susține un proiect existent pe un alt panou țintă, începeți de la proiectul Templates_LL furnizat pentru fiecare placă și disponibil în \Proiecte\ \Templates_LL.- Selectați un LL example: Pentru a găsi tabla pe care LL exampfișierele sunt implementate, consultați lista de LL examples STM32CubeProjectsList.html.
- Port LL examppe:
- Copiați/lipiți folderul Templates_LL – pentru a păstra sursa inițială – sau actualizați direct proiectul Temp lates_LL existent.
- Apoi portarea constă în principal în înlocuirea Templates_LL files de către Exampproiect vizat les_LL.
- Păstrați toate piesele specifice plăcii. Din motive de claritate, părțile specifice plăcii sunt marcate cu specific tags:
- Astfel, pașii principali de portare sunt următorii:
- Înlocuiți stm32wbaxx_it.h file
- Înlocuiți stm32wbaxx_it.c file
- Înlocuiți principalul.h file și actualizați-l: păstrați definiția LED-ului și a butonului utilizator a șablonului LL în CONFIGURARE SPECIFĂ A PLACULUI tags.
- Înlocuiți principal.c file și actualizați-l:
- Păstrați configurația ceasului a funcției de șablon SystemClock_Config() LL în CONFIGURARE SPECIFĂ DE PLACĂ tags.
- În funcție de definiția LED-ului, înlocuiți fiecare apariție LDx cu un alt LDy disponibil în principal.h file.
- Cu aceste modificări, example rulează acum pe placa vizată
Aplicații de securitate
Acest pachet este livrat cu aplicații de securitate.
aplicații SBSFU
- SBSFU oferă o soluție Root of Trust, inclusiv funcționalități Secure Boot și Secure Firmware Update (bazate pe MCUboot).
- Soluția este utilizată înainte de a executa aplicația.
- Soluția oferă un exampfișierul unui serviciu securizat (comutator GPIO), care este izolat de aplicația nesecurizată. Aplicația nesigură în timpul execuției poate folosi în continuare această soluție.
aplicații TFM
TFM oferă o soluție Root of Trust, inclusiv funcționalități Secure Boot și Secure Firmware Update
(bazat pe MCUboot). Soluția este utilizată înainte de a executa aplicația. Soluția oferă servicii securizate TFM care sunt izolate de aplicația nesecurizată. Aplicația nesecurizată în timpul execuției poate folosi în continuare această soluție.
aplicații RF
Aplicația RF este descrisă în această notă de aplicație: Construirea de aplicații fără fir cu microcontrolere din seria STM32WBA (AN5928).
Obținerea actualizărilor versiunii STM32CubeWBA
Cele mai recente versiuni ale pachetului MCU STM32CubeWBA și corecții sunt disponibile din seria STM32WBA. Acestea pot fi preluate de pe butonul VERIFICAȚI PENTRU ACTUALIZARE din STM32CubeMX. Pentru mai multe detalii, consultați Secțiunea 3 a manualului de utilizare STM32CubeMX pentru configurarea STM32 și generarea codului C de inițializare (UM1718).
FAQ
- Când ar trebui să folosesc driverele HAL în loc de LL?
- Driverele HAL oferă API-uri de nivel înalt și orientate spre funcție, cu un nivel ridicat de portabilitate. Complexitatea produsului sau periferică este ascunsă pentru utilizatorii finali.
- Driverele LL oferă API-uri la nivel de registru de nivel inferior, cu o optimizare mai bună, dar mai puțin portabile. Acestea necesită cunoștințe aprofundate ale produsului sau ale specificațiilor IP.
- Pot folosi driverele HAL și LL împreună? Dacă pot, care sunt constrângerile?
- Este posibil să utilizați atât driverele HAL, cât și LL. Utilizați HAL pentru faza de inițializare IP și apoi gestionați operațiunile I/O cu driverele LL.
- Diferența majoră dintre HAL și LL este că driverele HAL necesită să creeze și să utilizeze mânere pentru gestionarea operațiunilor, în timp ce driverele LL operează direct pe registrele periferice. Fostulamples_MIX example ilustrează cum să amestecați HAL și LL.
- Cum sunt activate API-urile de inițializare LL?
- Definiția API-urilor de inițializare LL și a resurselor asociate (Structuri, literale și prototipuri) este condiționată de comutatorul de compilare USE_FULL_LL_DRIVER.
- Pentru a putea folosi API-urile de inițializare LL, adăugați acest comutator în preprocesorul compilatorului lanțului de instrumente.
- Cum poate STM32CubeMX să genereze cod pe baza software-ului încorporat?
STM32CubeMX are cunoștințe încorporate despre microcontrolerele STM32, inclusiv despre perifericele și software-ul acestora, care permite furnizarea unei reprezentări grafice utilizatorului și generarea *.h sau *.c filese bazează pe configurația utilizatorului.
NOTIFICARE IMPORTANT – CITIȚI CU ATENTIE
- STMicroelectronics NV și filialele sale („ST”) își rezervă dreptul de a face modificări, corecții, îmbunătățiri, modificări și îmbunătățiri produselor ST și/sau acestui document în orice moment, fără notificare. Cumpărătorii trebuie să obțină cele mai recente informații relevante despre produsele ST înainte de a plasa comenzi. Produsele ST sunt vândute în conformitate cu termenii și condițiile de vânzare ale ST în vigoare la momentul confirmării comenzii.
- Cumpărătorii sunt singurii responsabili pentru alegerea, selecția și utilizarea produselor ST, iar ST nu își asumă nicio responsabilitate pentru asistența la aplicare sau proiectarea produselor cumpărătorilor.
- Nicio licență, expresă sau implicită, pentru niciun drept de proprietate intelectuală nu este acordată de către ST prin prezenta.
- Revânzarea produselor ST cu prevederi diferite de informațiile prezentate aici va anula orice garanție acordată de ST pentru un astfel de produs.
- ST și sigla ST sunt mărci comerciale ale ST. Pentru informații suplimentare despre mărcile comerciale ST, consultați www.st.com/trademarks. Toate celelalte nume de produse sau servicii sunt proprietatea proprietarilor respectivi.
- Informațiile din acest document înlocuiesc și înlocuiesc informațiile furnizate anterior în orice versiuni anterioare ale acestui document.
- © 2023 STMicroelectronics – Toate drepturile rezervate
Documente/Resurse
![]() |
Seria STMicroelectronics STM32WBA Introducere [pdfManual de utilizare Seria STM32WBA Noţiuni de bază, Noţiuni de bază, Noţiuni de bază |