STMicroelectronics-logo

STMicroelectronics STM32WBA-serien Kom godt i gang

STMicroelectronics-STM32WBA-Series-Kom i gang-fig-1

Produktinformation

Specifikationer:

  • Produktnavn: STM32CubeWBA MCU-pakke
  • Fabrikant: STMicroelectronics
  • Kompatibilitet: STM32WBA serie mikrocontrollere
  • Licensering: Open source BSD-licens

Produktbrugsvejledning

Hovedfunktioner i STM32CubeWBA MCU-pakken:
STM32CubeWBA MCU-pakken indeholder alle de nødvendige indlejrede softwarekomponenter til udvikling af applikationer på STM32WBA-seriens mikrocontrollere. Den er meget bærbar inden for STM32-serien og leveres med HAL og LL API'er, f.eksamples og middleware-komponenter.

Arkitektur forbiview:
Arkitekturen af ​​STM32CubeWBA MCU-pakken består af tre niveauer – applikationer, bibliotek og protokolbaserede komponenter, hardwareabstraktionslag, BSP-drivere, kernedrivere og lavlags-API'er.

FAQ

  • Hvad er inkluderet i STM32CubeWBA MCU-pakken?
    Pakken inkluderer lavlags (LL) og hardwareabstraktionslag (HAL) API'er, f.eksamples, applikationer, middleware-komponenter som FileX/LevelX, NetX Duo, mbed-crypto-biblioteker og mere.
  • Er STM32CubeWBA MCU-pakken kompatibel med STM32CubeMX-kodegeneratoren?
    Ja, pakken er fuldt ud kompatibel med STM32CubeMX-kodegeneratoren til generering af initialiseringskode.

Indledning

  • STM32Cube er et originalt STMicroelectronics-initiativ til at forbedre designerens produktivitet betydeligt ved at reducere udviklingsindsats, tid og omkostninger. STM32Cube dækker hele STM32-porteføljen.
    STM32Cube inkluderer:
    • Et sæt brugervenlige softwareudviklingsværktøjer til at dække projektudvikling fra idé til realisering, herunder:
      • STM32CubeMX, et grafisk softwarekonfigurationsværktøj, der tillader automatisk generering af C initialiseringskode ved hjælp af grafiske guider
      • STM32CubeIDE, et alt-i-et udviklingsværktøj med perifer konfiguration, kodegenerering, kodekompilering og fejlfindingsfunktioner
      • STM32CubeCLT, et alt-i-én kommandolinjeudviklingsværktøjssæt med kodekompilering, tavleprogrammering og fejlfindingsfunktioner
      • STM32CubeProgrammer (STM32CubeProg), et programmeringsværktøj tilgængeligt i grafiske og kommandolinjeversioner
      • STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), kraftfulde overvågningsværktøjer til at finjustere adfærden og ydeevnen af ​​STM32-applikationer i realtid
    • STM32Cube MCU og MPU-pakker, omfattende indlejrede softwareplatforme, der er specifikke for hver mikrocontroller og mikroprocessorserie (såsom STM32CubeWBA for STM32WBA-serien), som omfatter:
      • STM32Cube hardwareabstraktionslag (HAL), der sikrer maksimeret portabilitet på tværs af STM32-porteføljen
      • STM32Cube lavlags API'er, der sikrer den bedste ydeevne og fodspor med en høj grad af brugerkontrol over hardware
      • Et ensartet sæt middleware-komponenter såsom ThreadX, FileX / LevelX, NetX Duo, USBX, touch-bibliotek, mbed-crypto, TFM, MCUboot, OpenBL og STM32_WPAN (inklusive Bluetooth® Low Energy profiles og tjenester, Mesh, Zigbee®, OpenThread, Matter og 802.15.4 MAC-lag)
      • Alle indlejrede softwareværktøjer med komplette sæt af perifere og applikative f.eksamples
    • STM32Cube-udvidelsespakker, som indeholder indlejrede softwarekomponenter, der komplementerer funktionaliteterne i STM32Cube MCU- og MPU-pakker med:
      • Middleware-udvidelser og applikative lag
      • Exampfiler, der kører på nogle specifikke STMicroelectronics-udviklingstavler
  • Denne brugervejledning beskriver, hvordan du kommer i gang med STM32CubeWBA MCU-pakken.
    • Afsnit 2 STM32CubeWBAs hovedfunktioner beskriver hovedfunktionerne i STM32CubeWBA MCU-pakken.
    • Afsnit 3 STM32CubeWBA arkitektur overståetview giver en overview af STM32CubeWBA-arkitekturen og MCU-pakkestrukturen.

Generel information

STM32CubeWBA MCU-pakken kører på STM32 32-bit mikrocontrollere baseret på Arm® Cortex®-M33 processoren med Arm® TrustZone® og FPU.
Note: Arm og TrustZone er registrerede varemærker tilhørende Arm Limited (eller dets datterselskaber) i USA og/eller andre steder.

STM32CubeWBA hovedfunktioner

  • STM32CubeWBA MCU-pakken kører på STM32 32-bit mikrocontrollere baseret på Arm® Cortex®-M33 processoren med TrustZone® og FPU.
  • STM32CubeWBA samler i en enkelt pakke alle de generiske indlejrede softwarekomponenter, der er nødvendige for at udvikle en applikation til STM32WBA-seriens mikrocontrollere. I overensstemmelse med STM32Cube-initiativet er dette sæt komponenter yderst bærbart, ikke kun inden for STM32WBA-seriens mikrocontrollere, men også til andre STM32-serier.
  • STM32CubeWBA er fuldt kompatibel med STM32CubeMX-kodegeneratoren til at generere initialiseringskode. Pakken inkluderer low-layer (LL) og hardware abstraction layer (HAL) API'er, der dækker mikrocontrollerhardwaren, sammen med et omfattende sæt f.eks.amples, der kører på STMicroelectronics-kort. HAL og LL API'erne er tilgængelige i en open source BSD-licens for brugerens bekvemmelighed.
  • STM32CubeWBA MCU-pakken indeholder også en omfattende middleware-komponent bygget op omkring Microsoft® Azure® RTOS-middleware og andre interne og open source stakke med den tilsvarende f.amples.
  • De kommer med gratis, brugervenlige licensvilkår:
    • Integreret og fuldt udstyret Azure® RTOS: Azure® RTOS ThreadX
    • CMSIS-RTOS-implementering med Azure® RTOS ThreadX
    • USB-værts- og enhedsstakke kommer med mange klasser: Azure® RTOS USBX
    • Fremskreden file system og flash-oversættelseslag: FileX / LevelX
    • Industriel netværksstak: optimeret til ydeevne, der kommer med mange IoT-protokoller: NetX Duo
    • OpenBootloader
    • Arm® Trusted Firmware-M (TF‑M) integrationsløsning
    • mbed-crypto biblioteker
    • ST Netværksbibliotek
    • STMTouch berøringsfølende biblioteksløsning
  • Adskillige applikationer og demonstrationer, der implementerer alle disse middleware-komponenter, er også inkluderet i STM32CubeWBA MCU-pakken.
  • STM32CubeWBA MCU-pakkekomponentlayoutet er illustreret i figur 1. STM32CubeWBA MCU-pakkekomponenter.

    STMicroelectronics-STM32WBA-Series-Kom i gang-fig-2

STM32CubeWBA arkitektur overståetview

STM32CubeWBA MCU-pakkeløsningen er bygget op omkring tre uafhængige niveauer, der nemt interagerer som beskrevet i figur 2. STM32CubeWBA MCU-pakkearkitektur.

STMicroelectronics-STM32WBA-Series-Kom i gang-fig-3

Niveau 0

Dette niveau er opdelt i tre underlag:

  • Board Support Package (BSP).
  • Hardwareabstraktionslag (HAL):
    • HAL perifere drivere
    • Lavt lag drivere
  • Grundlæggende perifer brug f.eksamples.

Board Support-pakke (BSP)
Dette lag tilbyder et sæt API'er i forhold til hardwarekomponenterne i hardwarekortene (såsom LCD-, Audio-,\microSD™- og MEMS-drivere). Den er sammensat af to dele:

  • Komponent driver:
    Denne driver er relateret til den eksterne enhed på kortet og ikke til STM32-enheden. Komponentdriveren leverer specifikke API'er til BSP-driverens eksterne komponenter og kan være bærbar på et hvilket som helst andet kort.
  • BSP driver:
    BSP-driveren gør det muligt at forbinde komponentdriverne til et specifikt kort og giver et sæt brugervenlige
    API'er. API-navngivningsreglen er BSP_FUNCT_Action().
    Example: BSP_LED_Init(), BSP_LED_On()
    BSP er baseret på en modulær arkitektur, der tillader nem portering på enhver hardware ved blot at implementere rutinerne på lavt niveau.

Hardwareabstraktionslag (HAL) og lavtlag (LL)
STM32CubeWBA HAL og LL er komplementære og dækker en lang række anvendelseskrav:

  • HAL-driverne tilbyder funktionsorienterede meget bærbare API'er på højt niveau. De skjuler MCU'en og den perifere kompleksitet for slutbrugeren.
    HAL-driverne leverer generiske multi-instans funktionsorienterede API'er, som forenkler implementering af brugerapplikationer ved at levere processer, der er klar til brug. F.eksample, for kommunikationsudstyret (I2S, UART og andre), giver det API'er, der tillader initialisering og konfiguration af det perifere udstyr, styring af dataoverførsel baseret på polling, afbrydelse eller DMA-proces og håndtering af kommunikationsfejl, der kan opstå under kommunikation. HAL-driver-API'erne er opdelt i to kategorier:
    1. Generiske API'er, som giver fælles og generiske funktioner til alle STM32-seriens mikrocontrollere.
    2. Extension API'er, som giver specifikke og tilpassede funktioner til en specifik familie eller et specifikt varenummer.
  • Lav-lags API'erne leverer API'er på lavt niveau på registerniveau, med bedre optimering, men mindre portabilitet.
    • De kræver et dybt kendskab til MCU og perifere specifikationer.
    • LL-driverne er designet til at tilbyde et hurtigt letvægts ekspert-orienteret lag, der er tættere på hardwaren end HAL. I modsætning til HAL leveres LL API'er ikke til ydre enheder, hvor optimeret adgang ikke er en nøglefunktion, eller for dem, der kræver tung softwarekonfiguration eller kompleks stak på øverste niveau.
    • LL-driverne har:
      • Et sæt funktioner til at initialisere perifere hovedfunktioner i henhold til parametrene specificeret i datastrukturer.
      • Et sæt funktioner til at udfylde initialiseringsdatastrukturer med de nulstillingsværdier, der svarer til hvert felt.
      • Funktion til perifer deinitialisering (perifere registre gendannet til deres standardværdier).
      • Et sæt inline-funktioner til direkte og atomregisteradgang.
      • Fuld uafhængighed af HAL og mulighed for at blive brugt i selvstændig tilstand (uden HAL-drivere).
      • Fuld dækning af de understøttede perifere funktioner.

Grundlæggende perifer brug f.eksamples
Dette lag omslutter examples bygget over STM32-ydre enheder ved kun at bruge HAL- og BSP-ressourcerne.

Niveau 1

Dette niveau er opdelt i to underlag:

  • Middleware komponenter
  • Examples baseret på middleware-komponenterne

Middleware komponenter

  • Middlewaren er et sæt biblioteker, der dækker Bluetooth® Low Energy (Linklayer, HCI, Stack), Thread®, Zigbee®,
  • Matter, OpenBootloader, Microsoft® Azure® RTOS, TF-M, MCUboot og mbed-crypto.
  • Horisontal interaktion mellem komponenterne i dette lag udføres ved at kalde de fremhævede API'er.
  • Vertikal interaktion med lavlagsdriverne sker gennem specifikke tilbagekald og statiske makroer implementeret i bibliotekssystemets opkaldsgrænseflade.
  • De vigtigste funktioner i hver middleware-komponent er som følger:
    • Microsoft® Azure® RTOS
      • Azure® RTOS ThreadX: Et realtidsoperativsystem (RTOS), designet til indlejrede systemer med to funktionelle tilstande.
        • Fælles tilstand: Fælles RTOS-funktioner såsom trådstyring og synkronisering, hukommelsespuljestyring, meddelelser og hændelseshåndtering.
        • Modultilstand: En avanceret brugertilstand, der tillader indlæsning og aflæsning af forudforbundne ThreadX-moduler på farten gennem en moduladministrator.
      • NetX Duo
      • FileX
      • USBX
    • Bluetooth® Low Energy (BLE): Implementerer Bluetooth® Low Energy-protokollen for Link- og Stack-lagene.
    • MCUboot (open source software)
    • Zigbee®-protokoller til stakken og relaterede klynger.
    • Thread® protokolstak og linklag.
    • Arm® betroet firmware-M, TF-M (open source software): Referenceimplementering af Arm® platformsikkerhedsarkitekturen (PSA) for TrustZone® med de tilhørende sikre tjenester.
    • mbed-crypto (open source-software): mbed-crypto-middlewaren giver en PSA-kryptografi API-implementering.
    • STM32 Touch sensing bibliotek: Robust STMTouch kapacitiv touch sensing løsning, der understøtter nærhed, touchkey, lineære og roterende berøringssensorer. Den er baseret på et gennemprøvet princip om overførsel af overfladeladning.

Examples baseret på middleware-komponenterne
Hver middleware-komponent kommer med en eller flere examples (også kaldet applikationer), der viser, hvordan man bruger det. Integration exampfiler, der bruger flere middleware-komponenter, leveres også.

STM32CubeWBA firmwarepakke overståetview

Understøttede STM32WBA-enheder og hardware

  • STM32Cube tilbyder et meget bærbart hardwareabstraktionslag (HAL) bygget op omkring en generisk arkitektur. Det tillader opbygnings-på-lag-princippet, såsom at bruge middleware-laget til at implementere deres funktioner uden at vide, i dybden, hvilken MCU der bruges. Dette forbedrer genbrugbarheden af ​​bibliotekskoden og sikrer en nem portabilitet til andre enheder.
  • Derudover, takket være sin lagdelte arkitektur, tilbyder STM32CubeWBA fuld understøttelse af alle STM32WBA-serier.
  • Brugeren skal kun definere den rigtige makro i stm32wbaxx.h.
  • Tabel 1 viser den makro, der skal defineres afhængigt af den anvendte enhed i STM32WBA-serien. Denne makro skal også defineres i compilerens præprocessor.
    Tabel 1. Makroer til STM32WBA-serien
    Makro defineret i stm32wbaxx.h STM32WBA serie enheder
    stm32wba52xx STM32WBA52CGU6, STM32WBA52KGU6, STM32WBA52CEU6, STM32WBA52KEU6
    stm32wba55xx STM32WBA55CGU6, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CEU6, STM32WBA55CEU7

     

  • STM32CubeWBA har et rigt sæt af exampfiler og applikationer på alle niveauer, hvilket gør det nemt at forstå og bruge enhver HAL-driver eller middleware-komponenter. Disse examples kører på STMicroelectronics-kortene, der er angivet i tabel 2.
    Tabel 2. Boards til STM32WBA-serien
    Bestyrelse Board STM32WBA understøttede enheder
    NUCLEO-WBA52CG STM32WBA52CGU6
    NUCLEO-WBA55CG STM32WBA55CGU6
    STM32WBA55-DK1 STM32WBA55CGU7
  • STM32CubeWBA MCU-pakken kan køre på enhver kompatibel hardware. Brugeren opdaterer blot BSP-driverne for at porte det medfølgende examples på tavlen, hvis sidstnævnte har de samme hardwarefunktioner (såsom LED, LCD-skærm og knapper).
Firmwarepakke overståetview
  • STM32CubeWBA-pakkeløsningen leveres i én enkelt zip-pakke med strukturen vist i figur 3. STM32CubeWBA firmwarepakkestruktur.

    STMicroelectronics-STM32WBA-Series-Kom i gang-fig-4

  • Til hvert bræt er et sæt examples er forsynet med prækonfigurerede projekter til EWARM, MDK-ARM og STM32CubeIDE værktøjskæder.
  • Figur 4. STM32CubeWBA examples overview viser projektstrukturen for NUCLEO-WBA52CG, NUCLEO-WBA55CG og STM32WBA55G-DK1 tavlerne.

    STMicroelectronics-STM32WBA-Series-Kom i gang-fig-5

  • Eksampfiler er klassificeret afhængigt af det STM32Cube-niveau, de gælder for, og de er navngivet som følger:
    • Niveau 0 examples kaldes Examples, Examples_LL og Examples_MIX. De bruger henholdsvis HAL-drivere, LL-drivere og en blanding af HAL- og LL-drivere uden nogen middleware-komponent.
    • Niveau 1 examples kaldes applikationer. De giver typiske use cases for hver middleware-komponent. Enhver firmwareapplikation til et givent kort kan hurtigt bygges takket være skabelonprojekter, der er tilgængelige i mapperne Templates og Templates_LL.

TrustZone®-aktiverede projekter

  • TrustZone®-aktiveret Eksamples navne indeholder præfikset _TrustZone. Reglen anvendes også for applikationer (bortset fra TFM og SBSFU, som er native for TrustZone®).
  • TrustZone®-aktiveret Eksamples og applikationer er forsynet med en multiprojektstruktur sammensat af sikre og usikre delprojekter som vist i figur 5. Multiprojekt sikker og usikre projektstruktur.
  • TrustZone®-aktiverede projekter er udviklet i henhold til CMSIS-5 enhedsskabelonen, udvidet til at omfatte systempartitioneringsheaderen file skillevæg_ .h, som hovedsageligt er ansvarlig for opsætningen af ​​den sikre attributenhed (SAU), FPU'en og tildelingen af ​​sikre/ikke-sikre afbrydelser i sikker udførelsestilstand.
  • Denne opsætning udføres i den sikre CMSIS SystemInit()-funktion, som kaldes ved opstart, før den åbner den sikre applikations main()-funktion. Der henvises til Arm® TrustZone®-M dokumentation for softwareretningslinjer.

    STMicroelectronics-STM32WBA-Series-Kom i gang-fig-6

  • STM32CubeWBA-pakkens firmwarepakke giver standard hukommelsespartitionering i partitionen _ .h files tilgængelig under: \Drivers\CMSIS\Device\ST\STM32WBAxx\Include\T-emplates
  • I disse partitioner files, er SAU'en deaktiveret som standard. Følgelig bruges IDAU-hukommelseskortlægningen til sikkerhedstilskrivning. Se figur Sikker/ikke-sikker partitionering ved hjælp af TrustZone®-teknologi i RM0495-referencemanualen.
  • Hvis brugeren aktiverer SAU, er en standard SAU regions konfiguration foruddefineret i partitionen files som følger:
    • SAU-område 0: 0x08080000 – 0x081FFFFF (usikret sikker halvdel af flashhukommelsen (512 Kbytes))
    • SAU-område 1: 0x0BF88000 – 0x0BF97FFF (ikke-sikker systemhukommelse)
    • SAU-område 2: 0x0C07E000 – 0x0C07FFFF (sikker, ikke-sikker opkaldbar)
    • SAU-område 3: 0x20010000 – 0x2001FFFF (ikke-sikker SRAM2 (64 Kbytes))
    • SAU-område 4: 0x40000000 – 0x4FFFFFFF (usikret perifer kortlagt hukommelse)
  • For at matche standardpartitioneringen skal enhederne i STM32WBAxx-serien have følgende brugerindstillingsbytes indstillet:
    • TZEN = 1 (TrustZone®-aktiveret enhed)
    • SECWM1_PSTRT = 0x0 SECWM1_PEND = 0x3F (64 ud af 128 sider med intern flashhukommelse angivet som sikker) Bemærk: Den interne flashhukommelse er som standard fuldt sikker i TZEN = 1. Brugerindstillingsbytes SECWM1_PSTRT/SECWM1_PEND skal indstilles i henhold til applikationen hukommelseskonfiguration (SAU-regioner, hvis SAU er aktiveret). Sikker/ikke-sikre applikationer projektlinker files skal også justeres.
  • Alle examples har samme struktur:
    • \Inc-mappe, der indeholder alle overskrifter files.
    • Src-mappe, der indeholder kildekoden.
    • \EWARM, \MDK-ARM og \STM32CubeIDE mapper, der indeholder det forudkonfigurerede projekt for hver værktøjskæde.
    • readme.md og readme.html, der beskriver exampadfærden og det nødvendige miljø for at få det til at fungere.
    • ioc file der giver brugerne mulighed for at åbne det meste af firmwaren, f.eksamples inden for STM32CubeMX.

Kom godt i gang med STM32CubeWBA

Kører en første HAL example

Dette afsnit forklarer, hvor nemt det er at køre det første example inden for STM32CubeWBA. Den bruger som illustration genereringen af ​​en simpel LED-omskifter, der kører på NUCLEO-WBA52CG-kortet:

  1. Download STM32CubeWBA MCU-pakken.
  2. Pak den ud i en mappe efter eget valg.
  3. Sørg for ikke at ændre pakkestrukturen vist i figur 1. Det anbefales også at kopiere pakken på et sted tæt på dit rodvolumen (hvilket betyder C:\ST eller G:\Tests), da nogle IDE'er støder på problemer, når stien længden er for lang.

Kørsel af en første TrustZone®-aktiveret example

  • Før indlæsning og kørsel af en TrustZone®-aktiveret f.eksample, er det obligatorisk at læse examplæs mig file for enhver specifik konfiguration, som sikrer, at sikkerheden er aktiveret som beskrevet i Afsnit 4.2.1 TrustZone®-aktiverede projekter (TZEN=1 (brugervalgbyte)).
    1. Gå til \Projects\NUCLEO-WBA52CG\Examples.
    2. Åbn \GPIO, derefter \GPIO_IOToggle_TrustZone-mapper.
    3. Åbn projektet med din foretrukne værktøjskæde. En hurtig forbiview om, hvordan man åbner, bygger og kører en example med de understøttede værktøjskæder er angivet nedenfor.
    4. Genopbyg i rækkefølge alle sikre og usikre projekter files og indlæs de sikre og ikke-sikre billeder i målhukommelsen.
    5. Kør example: regelmæssigt skifter den sikre applikation LD2 hvert sekund, og den ikke-sikre applikation skifter LD3 dobbelt så hurtigt. For flere detaljer, se readme file af example.
  • For at åbne, bygge og køre en exampHvis du har de understøttede værktøjskæder, skal du følge nedenstående trin:
    • EWARM:
      1. Under exampi mappen, åbn undermappen \EWARM.
      2. Start Project.eww-arbejdsområdet
      3. Genopbyg det sikre xxxxx_S-projekt files: [Projekt]>[Genopbyg alle].
      4. Indstil xxxxx_NS usikre projekt som aktiv applikation (højreklik på xxxxx_NS projekt [Set as Active])
      5. Genopbyg det xxxxx_NS usikre projekt files: [Projekt]>[Genopbyg alle].
      6. Flash den ikke-sikre binære med [Project]>[Download]>[Download aktiv applikation] .
      7. Indstil xxxxx_S som aktiv applikation (højreklik på xxxxx_S projekt [Set as Active].
      8. Flash den sikre binære med [Download og debug] (Ctrl+D).
      9. Kør programmet: [Debug]>[Go(F5)]
    • MDK-ARM:
      1. Åbn \MDK-ARM værktøjskæden.
      2. Åbn Multiprojects-arbejdsområdet file Project.uvmpw.
      3. Vælg xxxxx_s-projektet som aktivt program ([Sæt som aktivt projekt]).
      4. Byg xxxxx_s-projektet.
      5. Vælg xxxxx_ns-projektet som aktivt projekt ([Sæt som aktivt projekt]).
      6. Byg xxxxx_ns-projektet.
      7. Indlæs den ikke-sikre binære ([F8]). Dette downloader \MDK-ARM\xxxxx_ns\Exe\xxxxx_ns.axf til flash-hukommelsen)
      8. Vælg Project_s-projektet som aktivt projekt ([Sæt som aktivt projekt]).
      9. Indlæs den sikre binære ([F8]). Dette downloader \MDK-ARM\xxxxx_s\Exe\xxxxx_s.axf til flash-hukommelsen).
      10. Kør example.
    • STM32CubeIDE:
      1. Åbn STM32CubeIDE værktøjskæden.
      2. Åbn Multiprojects-arbejdsområdet file .projekt.
      3. Genopbyg xxxxx_Secure-projektet.
      4. Genopbyg xxxxx_NonSecure-projektet.
      5. Start applikationen [Debug as STM32 Cortex-M C/C++] til det sikre projekt.
      6. I vinduet [Rediger konfiguration] skal du vælge panelet [Startup] og indlæse billedet og symbolerne for det usikre projekt.
        Vigtig: Det usikre projekt skal indlæses før det sikre projekt.
      7. Klik på [Ok].
      8. Kør example om fejlfindingsperspektiv.

Kørsel af en første TrustZone® deaktiveret example

  • Før indlæsning og kørsel af en TrustZone® deaktiveret f.eksample, er det obligatorisk at læse examplæs mig file for enhver specifik konfiguration. Hvis der ikke er nogen specifikke omtaler, skal du sikre dig, at kortenheden er deaktiveret sikkerhed (TZEN=0 (brugeroption byte)). Se ofte stillede spørgsmål for at udføre den valgfri regression til TZEN = 0
    1. Gå til \Projects\NUCLEO-WBA52CG\Examples.
    2. Åbn \GPIO, derefter \GPIO_EXTI-mapper.
    3. Åbn projektet med din foretrukne værktøjskæde. En hurtig forbiview om, hvordan man åbner, bygger og kører en example med de understøttede værktøjskæder er angivet nedenfor.
    4. Genopbygg det hele files og indlæs dit billede i målhukommelsen.
    5. Kør example: Hver gang der trykkes på [USER]-trykknappen, skifter LD1-LED'en. For flere detaljer, se readme file af example.
  • For at åbne, bygge og køre en exampHvis du har de understøttede værktøjskæder, skal du følge nedenstående trin:
    • EWARM:
      1. Under exampi mappen, åbn undermappen \EWARM.
      2. Start Project.eww-arbejdsområdet (arbejdsområdets navn kan ændre sig fra et f.eksample til en anden).
      3. Genopbygg det hele files: [Projekt]>[Genopbyg alle].
      4. Indlæs projektbilledet: [Project]>[Debug].
      5. Kør program: [Debug]>[Go (F5)].
    • MDK-ARM:
      1. Under exampi mappen, skal du åbne undermappen \MDK-ARM.
      2. Start Project.uvproj-arbejdsområdet (arbejdsområdets navn kan ændre sig fra et f.eksample til en anden).
      3. Genopbygg det hele files:[Projekt]>[Genopbyg alle mål files].
      4. Indlæs projektbilledet: [Debug]>[Start/Stop Debug Session].
      5. Kør program: [Debug]>[Kør (F5)].
    • STM32CubeIDE:
      1. Åbn STM32CubeIDE værktøjskæden.
      2. Klik på [File]>[Skift arbejdsområde]>[Andet], og browse til STM32CubeIDE-arbejdsområdebiblioteket.
      3. Klik på [File]>[Importer] , vælg [Generelt]>[Eksisterende projekter til arbejdsområde], og klik derefter på [Næste].
      4. Gå til STM32CubeIDE-arbejdsområdebiblioteket, og vælg projektet.
      5. Genopbyg alle projekter files: Vælg projektet i vinduet [Project Explorer] og klik derefter på menuen [Project]>[Build project].
      6. Kør programmet: [Kør]>[Debug (F11)]
Udvikling af en skræddersyet applikation

Note: Software skal aktivere instruktionscachen (ICACHE) for at få en 0 wait-state eksekvering fra flashhukommelsen og nå den maksimale ydeevne og et bedre strømforbrug.

Brug af STM32CubeMX til at udvikle eller opdatere en applikation

  • I STM32CubeWBA MCU-pakken er næsten alle projekter exampfiler genereres med STM32CubeMX-værktøjet for at initialisere systemet, ydre enheder og middleware.
  • Den direkte brug af et eksisterende projekt f.eksample fra STM32CubeMX-værktøjet kræver STM32CubeMX 6.10.0 eller højere:
    • Efter installationen af ​​STM32CubeMX skal du åbne og om nødvendigt opdatere et foreslået projekt. Den enkleste måde at åbne et eksisterende projekt på er at dobbeltklikke på *.ioc file så STM32CubeMX automatisk åbner projektet og dets kilde files.
    • STM32CubeMX genererer initialiseringskildekoden for sådanne projekter. Hovedapplikationens kildekode er indeholdt af kommentarerne "BRUGERKODE BEGIN" og "BRUGERKODE SLUT". I tilfælde af at IP-valget og -indstillingen ændres, opdaterer STM32CubeMX initialiseringsdelen af ​​koden, men bevarer hovedapplikationens kildekode.
  • For at udvikle et brugerdefineret projekt i STM32CubeMX, følg trin-for-trin-processen:
    1. Vælg den STM32-mikrocontroller, der matcher det nødvendige sæt periferiudstyr.
    2. Konfigurer al den nødvendige indlejrede software ved hjælp af en pinout-konfliktløser, en clock-tree indstillingshjælper, en strømforbrugsberegner og værktøjet, der udfører MCU perifer konfiguration (såsom GPIO eller USART) og middleware stakke (såsom USB).
    3. Generer initialiserings C-koden baseret på den valgte konfiguration. Denne kode er klar til brug i flere udviklingsmiljøer. Brugerkoden opbevares ved næste kodegenerering.
  • For mere information om STM32CubeMX henvises til brugermanualen STM32CubeMX til STM32-konfiguration og initialisering C-kodegenerering (UM1718).
  • For en liste over de tilgængelige projekter f.eksamples for STM32CubeWBA, se applikationsbemærkningen STM32Cube firmware examples til STM32WBA-serien (AN5929).

Driver applikationer

HAL ansøgning
Dette afsnit beskriver de nødvendige trin for at oprette en brugerdefineret HAL-applikation ved hjælp af STM32CubeWBA:

  1. Opret et projekt
    • For at oprette et nyt projekt, start enten fra skabelonprojektet, der er angivet for hver tavle under \Projects\ \Skabeloner eller fra ethvert tilgængeligt projekt under \Projekter\ \Eksempler eller \Projekter\ \Applikationer (hvor refererer til bestyrelsens navn, såsom STM32CubeWBA).
    • Skabelonprojektet giver en tom hovedsløjfefunktion. Det er dog et godt udgangspunkt for at forstå STM32CubeWBA-projektindstillingerne. Skabelonen har følgende egenskaber:
      • Den indeholder HAL-kildekoden, CMSIS og BSP-driverne, som er det minimumssæt af komponenter, der kræves for at udvikle en kode på et givet kort.
      • Den indeholder de inkluderede stier til alle firmwarekomponenterne.
      • Den definerer de understøttede STM32WBA-enheder, hvilket gør det muligt at konfigurere CMSIS- og HAL-driverne korrekt.
      • Det giver brugeren klar til brug files forudkonfigureret som vist nedenfor:
        HAL initialiseret med standardtidsbasen med Arm® core SysTick. SysTick ISR implementeret til HAL_Delay() formål.
        Note: Når du kopierer et eksisterende projekt til en anden placering, skal du sørge for, at alle de inkluderede stier er opdateret.
  2. Tilføj den nødvendige middleware til brugerprojektet (valgfrit)
    For at identificere kilden files tilføjes til projektet file liste, se den medfølgende dokumentation for hver middleware. Se applikationerne under \Projects\STM32xxx_yyy\Applications\ (hvor henviser til middleware-stakken, såsom ThreadX) for at vide, hvilken kilde files og inkludere stier skal tilføjes.
  3. Konfigurer firmwarekomponenterne
    HAL- og middleware-komponenterne tilbyder et sæt konfigurationsmuligheder for opbygningstid ved hjælp af makroer #define erklæret i en header file. En skabelonkonfiguration file findes inden for hver komponent, som skal kopieres til projektmappen (normalt konfigurationen file hedder xxx_conf_template.h, skal ordet _template fjernes, når det kopieres til projektmappen). Konfigurationen file giver nok information til at forstå virkningen af ​​hver konfigurationsmulighed. Mere detaljerede oplysninger er tilgængelige i den medfølgende dokumentation for hver komponent.
  4. Start HAL-biblioteket
    Efter at have hoppet til hovedprogrammet, skal applikationskoden kalde HAL_Init() API for at initialisere HAL-biblioteket, som udfører følgende opgaver:
    • Konfiguration af flashhukommelsens prefetch og SysTick-afbrydelsesprioritet (via makroer defineret i st m32wbaxx_hal_conf.h).
    • Konfiguration af SysTick til at generere et interrupt hvert millisekund ved SysTick interrupt-prioriteten TICK_INT_PRIO defineret i stm32wbaxx_hal_conf.h.
    • Indstilling af NVIC-gruppeprioritet til 0.
    • Kald af HAL_MspInit() tilbagekaldsfunktion defineret i stm32wbaxx_hal_msp.c bruger file at udføre globale hardwareinitialiseringer på lavt niveau.
  5. Konfigurer systemuret
    Systemurets konfiguration udføres ved at kalde de to API'er, der er beskrevet nedenfor:
    • HAL_RCC_OscConfig(): denne API konfigurerer de interne og eksterne oscillatorer. Brugeren vælger at konfigurere en eller alle oscillatorer.
    • HAL_RCC_ClockConfig(): denne API konfigurerer systemurkilden, flashhukommelsesforsinkelsen og AHB- og APB-forskalere.
  6. Initialiser den perifere enhed
    • Skriv først den perifere HAL_PPP_MspInit-funktion. Fortsæt som følger:
      • Aktiver det perifere ur.
      • Konfigurer de perifere GPIO'er.
      • Konfigurer DMA-kanalen og aktiver DMA-afbrydelse (hvis nødvendigt).
      • Aktiver perifer afbrydelse (hvis nødvendigt).
    • Rediger stm32xxx_it.c for at kalde de nødvendige interrupt-handlere (perifert og DMA), hvis det er nødvendigt.
    • Skriv proces komplette tilbagekaldsfunktioner, hvis en perifer afbrydelse eller DMA er planlagt til at blive brugt.
    • I bruger main.c file, initialiser den perifere håndtagsstruktur og kald derefter funktionen HAL_PPP_Init() for at initialisere den perifere enhed.
  7. Udvikle en applikation
    • På dette stage, systemet er klar, og udviklingen af ​​brugerapplikationskoden kan starte.
    • HAL'en giver intuitive og klar til brug API'er til at konfigurere det perifere udstyr. Den understøtter polling, interrupts og en DMA-programmeringsmodel for at imødekomme alle applikationskrav. For flere detaljer om, hvordan du bruger hver perifer enhed, henvises til den rige exampsæt, der følger med STM32CubeWBA MCU-pakken.
      Forsigtighed: I standard-HAL-implementeringen bruges SysTick-timeren som en tidsbase: den genererer afbrydelser med regelmæssige tidsintervaller. Hvis HAL_Delay() kaldes fra den perifere ISR-proces, skal du sørge for, at SysTick-afbrydelsen har en højere prioritet (numerisk lavere) end den perifere afbrydelse. Ellers blokeres den opkaldende ISR-proces. Funktioner, der påvirker tidsbasekonfigurationer, erklæres som __svage for at gøre tilsidesættelse mulig i tilfælde af andre implementeringer i brugeren file (ved at bruge en almindelig timer, f.eksample eller en anden tidskilde). For flere detaljer henvises til HAL_TimeBase example.

LL ansøgning
Dette afsnit beskriver de nødvendige trin for at oprette en brugerdefineret LL-applikation ved hjælp af STM32CubeWBA.

  1. Opret et projekt
    • For at oprette et nyt projekt skal du enten starte fra Templates_LL-projektet, der er angivet for hvert bord under \Projects\ \Templates_LL, eller fra ethvert tilgængeligt projekt under \Projects\ \Eksamples_LL ( refererer til bestyrelsens navn, såsom NUCLEO-WBA32CG).
    • Skabelonprojektet giver en tom hovedsløjfefunktion, som er et godt udgangspunkt for at forstå projektindstillingerne for STM32CubeWBA. Skabelonens hovedegenskaber er følgende:
      • Den indeholder kildekoderne til LL- og CMSIS-driverne, som er det minimumssæt af komponenter, der er nødvendige for at udvikle kode på et givet kort.
      • Den indeholder de inkluderede stier til alle de nødvendige firmwarekomponenter.
      • Den vælger den understøttede enhed i STM32WBA-serien og tillader den korrekte konfiguration af CMSIS- og LL-driverne.
      • Det giver brugeren klar til brug files, der er forudkonfigureret som følger:
        ◦ main.h: LED og USER_BUTTON definition abstraktionslag.
        ◦ main.c: Systemurkonfiguration for maksimal frekvens.
  2. Overfør et eksisterende projekt til en anden bestyrelse
    For at understøtte et eksisterende projekt på en anden måltavle skal du starte fra Templates_LL-projektet, der er angivet for hvert bræt og tilgængeligt under \Projects\ \Templates_LL.
    • Vælg en LL example: For at finde den tavle, hvorpå LL examples er implementeret, se listen over LL examples STM32CubeProjectsList.html.
  3. Port LL exampdet:
    • Kopier/indsæt mappen Templates_LL – for at beholde den oprindelige kilde – eller opdater det eksisterende Templates_LL-projekt direkte.
    • Så består portering primært i at erstatte Templates_LL files af Examples_LL målrettet projekt.
    • Gem alle brætspecifikke dele. Af overskuelighedsgrunde er tavlespecifikke dele markeret med specifikke tags:

      STMicroelectronics-STM32WBA-Series-Kom i gang-fig-7

    • De vigtigste porteringstrin er således følgende:
      • Udskift stm32wbaxx_it.h file
      • Udskift stm32wbaxx_it.c file
      • Udskift hoved.h file og opdater den: Behold LED- og brugerknapdefinitionen for LL-skabelonen under BOARD SPECIFIC CONFIGURATION tags.
      • Udskift hoved.c file og opdatere det:
    • Behold urkonfigurationen af ​​SystemClock_Config() LL skabelonfunktionen under BOARD SPECIFIC CONFIGURATION tags.
    • Afhængigt af LED-definitionen skal du udskifte hver LDx-forekomst med en anden LDy tilgængelig i main.h file.
    • Med disse modifikationer vil example kører nu på det målrettede bord

Sikkerhedsapplikationer
Denne pakke leveres med sikkerhedsapplikationer.

SBSFU ansøgninger

  • SBSFU leverer en Root of Trust-løsning, inklusive Secure Boot og Secure Firmware Update-funktioner (baseret på MCUboot).
  • Løsningen bruges før applikationen eksekveres.
  • Løsningen giver et example af en sikker tjeneste (GPIO toggle), der er isoleret fra den ikke-sikre applikation. Den usikre applikation ved runtime kan stadig bruge denne løsning.

TFM applikationer
TFM'en leverer en Root of Trust-løsning, herunder Secure Boot og Secure Firmware Update-funktioner
(baseret på MCUboot). Løsningen bruges før applikationen eksekveres. Løsningen giver TFM sikre tjenester, der er isoleret fra den ikke-sikre applikation. Den usikre applikation ved runtime kan stadig bruge denne løsning.

RF applikationer
RF-applikationen er beskrevet i denne applikationsnote: Opbygning af trådløse applikationer med STM32WBA-seriens mikrocontrollere (AN5928).

Få STM32CubeWBA udgivelsesopdateringer
De seneste STM32CubeWBA MCU-pakkeudgivelser og patches er tilgængelige fra STM32WBA-serien. De kan hentes fra knappen CHECK FOR UPDATE i STM32CubeMX. For flere detaljer henvises til afsnit 3 i brugervejledningen STM32CubeMX til STM32-konfiguration og initialisering C-kodegenerering (UM1718).

FAQ

  • Hvornår skal jeg bruge HAL i stedet for LL-drivere?
    • HAL-drivere tilbyder højniveau- og funktionsorienterede API'er med et højt niveau af portabilitet. Produkt- eller perifer kompleksitet er skjult for slutbrugere.
    • LL-drivere tilbyder lav-lags registerniveau API'er, med bedre optimering, men mindre bærbare. De kræver indgående kendskab til produkt- eller IP-specifikationer.
  • Kan jeg bruge HAL- og LL-drivere sammen? Hvis jeg kan, hvad er begrænsningerne?
    • Det er muligt at bruge både HAL- og LL-drivere. Brug HAL til IP-initieringsfasen, og administrer derefter I/O-operationerne med LL-drivere.
    • Den største forskel mellem HAL og LL er, at HAL-drivere kræver at oprette og bruge håndtag til driftsstyring, mens LL-drivere opererer direkte på perifere registre. Eksamples_MIX example illustrerer, hvordan man blander HAL og LL.
  • Hvordan aktiveres LL initialiserings-API'er?
    • Definitionen af ​​LL initialiserings-API'er og tilknyttede ressourcer (strukturer, bogstaver og prototyper) er betinget af USE_FULL_LL_DRIVER kompileringsswitchen.
    • For at være i stand til at bruge LL initialiserings-API'er skal du tilføje denne switch i værktøjskæde-kompilerens præprocessor.
  • Hvordan kan STM32CubeMX generere kode baseret på indlejret software?
    STM32CubeMX har indbygget viden om STM32 mikrocontrollere, inklusive deres perifere enheder og software, der gør det muligt at levere en grafisk repræsentation til brugeren og generere *.h eller *.c files baseret på brugerkonfiguration.

VIGTIG MEDDELELSE – LÆS OMHYGGELIGT

  • STMicroelectronics NV og dets datterselskaber ("ST") forbeholder sig retten til at foretage ændringer, rettelser, forbedringer, modifikationer og forbedringer af ST-produkter og/eller dette dokument til enhver tid uden varsel. Købere bør indhente de seneste relevante oplysninger om ST-produkter, før de afgiver ordre. ST-produkter sælges i henhold til STs salgs- og salgsbetingelser på tidspunktet for ordrebekræftelse.
  • Købere er alene ansvarlige for valg, udvælgelse og brug af ST-produkter, og ST påtager sig intet ansvar for ansøgningsassistance eller design af købers produkter.
  • Ingen licens, hverken udtrykkelig eller underforstået, til nogen intellektuel ejendomsret er givet af ST heri.
  • Videresalg af ST-produkter med andre bestemmelser end de oplysninger, der er angivet heri, annullerer enhver garanti givet af ST for et sådant produkt.
  • ST og ST-logoet er varemærker tilhørende ST. For yderligere information om ST-varemærker henvises til www.st.com/trademarks. Alle andre produkt- eller tjenestenavne tilhører deres respektive ejere.
  • Oplysningerne i dette dokument erstatter og erstatter oplysninger, der tidligere er leveret i alle tidligere versioner af dette dokument.
  • © 2023 STMicroelectronics – Alle rettigheder forbeholdes

Dokumenter/ressourcer

STMicroelectronics STM32WBA-serien Kom godt i gang [pdfBrugermanual
STM32WBA-serien Kom godt i gang, Kom godt i gang, i gang

Referencer

Efterlad en kommentar

Din e-mailadresse vil ikke blive offentliggjort. Påkrævede felter er markeret *