STM32WL3x-loigo

STM32WL3x mjukvarupaket

STM32WL3x-Programvarupaket -PRODUKT

Specifikationer

  • Produktnamn: STM32CubeWL3 mjukvarupaket
  • Kompatibilitet: STM32WL3x mikrokontroller
  • Huvudfunktioner:
    • API:er för lågt lager (LL) och hårdvaruabstraktionslager (HAL).
    • SigfoxTM, FatFS och FreeRTOSTM kärnmellanvarukomponenter
    • Applikationer och demonstrationer

Produktanvändningsinstruktioner

Komma igång
För att börja använda programvarupaketet STM32CubeWL3, följ dessa steg:

  1. Ladda ner mjukvarupaketet från tjänstemannen webplats.
  2. Installera den nödvändiga utvecklingsmiljön (t.ex. STM32CubeIDE, EWARM, MDK-ARM).
  3. Se exampläser och applikationer tillhandahållna för vägledning.

STM32CubeWL3 arkitektur överview
Mjukvarupaketet STM32CubeWL3 är byggt kring tre huvudnivåer

  • Nivå 0: Hårdvaruabstraktionslager (HAL) och BSP-drivrutiner.
  • Nivå 1: Applikationer, bibliotek och protokollbaserade komponenter.

Vanliga frågor (FAQ)

F: Vilka är huvudfunktionerna i mjukvarupaketet STM32CubeWL3?
S: Huvudfunktionerna inkluderar låglager- och HAL-API:er, mellanprogramkomponenter som SigfoxTM, FatFS, FreeRTOSTM-kärna, applikationer och demonstrationer.

Introduktion

STM32Cube är ett originalinitiativ från STMicroelectronics för att förbättra designers produktivitet avsevärt genom att minska utvecklingsansträngning, tid och kostnad. STM32Cube täcker hela STM32-portföljen.

STM32Cube innehåller:

  • En uppsättning användarvänliga mjukvaruutvecklingsverktyg för att täcka projektutveckling från idé till förverkligande, bland annat:
    • STM32CubeMX, ett grafiskt programvarukonfigurationsverktyg som tillåter automatisk generering av C-initieringskod med hjälp av grafiska guider
    • STM32CubeIDE, ett allt-i-ett-utvecklingsverktyg med perifer konfiguration, kodgenerering, kodkompilering och felsökningsfunktioner
    • STM32CubeCLT, en allt-i-ett kommandoradsutvecklingsverktyg med kodkompilering, kortprogrammering och felsökningsfunktioner
    • STM32CubeProgrammer (STM32CubeProg), ett programmeringsverktyg tillgängligt i grafiska och kommandoradsversioner
    • STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), kraftfulla övervakningsverktyg för att finjustera beteendet och prestanda för STM32-applikationer i realtid
  • STM32Cube MCU och MPU-paket, omfattande inbäddade mjukvaruplattformar specifika för varje mikrokontroller och mikroprocessorserie (som STM32CubeWL3 för STM32WL3x produktlinje), som inkluderar:
    • STM32Cube hårdvaruabstraktionslager (HAL), säkerställer maximerad portabilitet över STM32-portföljen
    • STM32Cube låglager-API:er, säkerställer bästa prestanda och fotavtryck med en hög grad av användarkontroll över] hårdvara
    • En konsekvent uppsättning mellanprogramkomponenter som FreeRTOS™-kärna, FatFS och Sigfox™
    • Alla inbäddade programvaruverktyg med kompletta uppsättningar av kringutrustning och applicerande examples
  • STM32Cube Expansion Packages, som innehåller inbäddade programvarukomponenter som kompletterar funktionerna i STM32Cube MCU och MPU-paket med:
    • Middleware-tillägg och applicerande lager
    • Exampfiler som körs på vissa specifika STMicroelectronics-utvecklingskort

Denna användarmanual beskriver hur du kommer igång med STM32CubeWL3 MCU-paketet.
Avsnitt 2 beskriver huvudfunktionerna i STM32CubeWL3 och avsnitt 3 ger en överview av dess arkitektur och MCU-paketstrukturen.

Allmän information

STM32CubeWL3 kör sub-GHz demonstrationsapplikationer, inklusive Sigfox™ binärer, på STM32WL3x produktlinjemikrokontroller baserade på Arm® Cortex®‑M0+ processorn.
STM32WL3x mikrokontroller bäddar in STMicroelectronics toppmoderna sub-GHz-kompatibla RF-radio kringutrustning, optimerad för ultralåg strömförbrukning och utmärkt radioprestanda, för oöverträffad batterilivslängd.
Notera: Arm är ett registrerat varumärke som tillhör Arm Limited (eller dess dotterbolag) i USA och/eller någon annanstans.

STM32CubeWL3 huvudfunktioner

  • STM32CubeWL3 MCU-paketet körs på STM32 32-bitars mikrokontroller baserade på Arm® Cortex®‑M0+-processorn. Den samlar, i ett enda paket, alla generiska inbäddade mjukvarukomponenter som krävs för att utveckla en applikation för STM32WL3x produktlinjemikrokontroller.
  • Paketet inkluderar låglager (LL) och hårdvaruabstraktionslager (HAL) API:er som täcker mikrokontrollerns hårdvara, tillsammans med en omfattande uppsättning ex.amples som körs på STMicroelectronics-kort. HAL- och LL-API:erna är tillgängliga i en BSD-licens med öppen källkod för användarens bekvämlighet. Den inkluderar också Sigfox™-, FatFS- och FreeRTOS™-kärnmedelvarukomponenterna.
  • STM32CubeWL3 MCU-paketet tillhandahåller också flera applikationer och demonstrationer som implementerar alla dess middleware-komponenter.
  • STM32CubeWL3 MCU-paketets komponentlayout illustreras i figur 1.

Figur 1. STM32CubeWL3 MCU-paketkomponenter 

STM32WL3x-programvara-paket (2)

STM32CubeWL3 arkitektur överview

STM32CubeWL3 MCU-paketlösningen är byggd kring tre oberoende nivåer som enkelt interagerar enligt beskrivningen i figur 2. STM32WL3x-programvara-paket (3)Nivå 0
Denna nivå är uppdelad i tre underskikt:

  • Styrelsestödspaket (BSP).
  • Hårdvaruabstraktionslager (HAL):
    • HAL perifera drivrutiner
    • Låglagers drivrutiner
  • Grundläggande perifer användning examples.

Styrelsestödspaket (BSP)
Detta lager erbjuder en uppsättning API:er i förhållande till hårdvarukomponenterna i hårdvarukorten (som lysdioder, knappar och COM-drivrutiner). Den består av två delar:

  • Komponent:
    Detta är drivrutinen i förhållande till den externa enheten på kortet och inte till STM32. Komponentdrivrutinen tillhandahåller specifika API:er till BSP-drivrutinen externa komponenter och kan vara portabel på vilket annat kort som helst.
  • BSP drivrutin:

Det gör det möjligt att länka komponentdrivrutinerna till ett specifikt kort och tillhandahåller en uppsättning användarvänliga API:er. API-namnregeln är BSP_FUNCT_Action().
Example: BSP_LED_Init(), BSP_LED_On()
BSP är baserad på en modulär arkitektur som möjliggör enkel portering på vilken hårdvara som helst genom att bara implementera rutinerna på låg nivå.

Hårdvaruabstraktionslager (HAL) och låglager (LL)
STM32CubeWL3 HAL och LL är komplementära och täcker ett brett spektrum av applikationskrav:

  • HAL-drivrutinerna erbjuder funktionsorienterade och mycket portabla API:er på hög nivå. De döljer MCU och perifer komplexitet för slutanvändaren.
    HAL-drivrutinerna tillhandahåller generiska funktionsorienterade API:er med flera instanser, som förenklar implementeringen av användarapplikationer genom att tillhandahålla processer som är färdiga att använda. Till exempelample, för kringutrustning för kommunikation (I2C, UART och andra), tillhandahåller den API:er som möjliggör initiering och konfigurering av kringutrustningen, hantering av dataöverföring baserat på avfrågnings-, avbrotts- eller DMA-process och hantering av kommunikationsfel som kan uppstå under kommunikation. HAL-drivrutinens API:er är uppdelade i två kategorier:
  1. Generiska API:er, som tillhandahåller gemensamma och generiska funktioner till alla mikrokontroller i STM32-serien.
  2. Extension APIs, som tillhandahåller specifika och anpassade funktioner för en specifik familj eller ett specifikt artikelnummer.
  • Lågskikts-API:erna tillhandahåller lågnivå-API:er på registernivå, med bättre optimering men mindre portabilitet. De kräver en djup kunskap om MCU och kringutrustningsspecifikationer.
    LL-drivrutinerna är designade för att erbjuda ett snabbt och lätt expertorienterat lager som är närmare hårdvaran än HAL. I motsats till HAL tillhandahålls inte LL API:er för kringutrustning där optimerad åtkomst inte är en nyckelfunktion, eller för de som kräver tung mjukvarukonfiguration eller komplex stack på övre nivån.

LL-drivrutinerna har:

  • En uppsättning funktioner för att initiera perifera huvudfunktioner enligt de parametrar som specificeras i datastrukturer.
  • En uppsättning funktioner för att fylla initialiseringsdatastrukturer med återställningsvärdena som motsvarar varje fält.
  • Funktion för perifer de-initialisering (perifera register återställda till sina standardvärden).
  • En uppsättning inline-funktioner för direkt- och atomregisteråtkomst.
  • Fullständigt oberoende av HAL och förmåga att användas i fristående läge (utan HAL-drivrutiner).
  • Full täckning av de kringutrustning som stöds.

Grundläggande perifer användning examples
Detta lager omsluter exampläser byggda över STM32 kringutrustning med endast HAL- och BSP-resurser.
Demonstration examples är också tillgängliga för att visa mer komplexa example scenarier med specifik kringutrustning, såsom MRSUBG och LPAWUR.

Nivå 1
Denna nivå är uppdelad i två underskikt:

  • Mellanvarukomponenter
  • Exampfiler baserade på mellanvarukomponenterna

Mellanvarukomponenter
Mellanvaran är en uppsättning bibliotek som täcker FreeRTOS™-kärnan, FatFS och Sigfox™-protokollbiblioteket. Horisontell interaktion mellan komponenterna i detta lager görs genom att anropa de utvalda API:erna.
Vertikal interaktion med låglagerdrivrutinerna görs genom specifika callbacks och statiska makron implementerade i bibliotekssystemets anropsgränssnitt.
Huvudfunktionerna för varje mellanprogramskomponent är följande:

  • FreeRTOS™ kärna: implementerar ett realtidsoperativsystem (RTOS), designat för inbäddade system.
  • Sigfox™: implementerar Sigfox™-protokollbiblioteket kompatibelt med Sigfox™-protokollnätverket och inkluderar RF-testprotokollbiblioteket för att testa mot RF Sigfox™-verktyg.
  • FatFS: implementerar den generiska FAT file systemmodul.

Exampfiler baserade på mellanvarukomponenterna
Varje middleware-komponent kommer med ett eller flera examples, även kallade applikationer, som visar hur man använder det. Integration exampfiler som använder flera mellanprogramkomponenter tillhandahålls också.

STM32CubeWL3 firmwarepaket överview

STM32WL3x-enheter och hårdvara som stöds
STM32Cube erbjuder ett mycket portabelt hårdvaruabstraktionslager (HAL) byggt kring en generisk arkitektur. Det tillåter principen om uppbyggnad av lager, som att använda mellanvarulagret för att implementera sina funktioner utan att på djupet veta vilken MCU som används. Detta förbättrar bibliotekskodens återanvändbarhet och säkerställer enkel portabilitet till andra enheter.

  • Dessutom, med sin skiktade arkitektur, erbjuder STM32CubeWL3 fullt stöd för alla STM32WL3x-produkter.
  • Användaren måste bara definiera rätt makro i stm32wl3x.h.

Tabell 1 visar makrot som ska definieras beroende på vilken STM32WL3x produktlinje som används. Detta makro måste också definieras i kompilatorns förprocessor.
Tabell 1. Makron för STM32WL3x produktlinje

Makro definieras i stm32wl3x.h STM32WL3x produktlinjeenheter
stm32wl33 STM32WL33xx mikrokontroller

STM32CubeWL3 har en rik uppsättning exampfiler och applikationer på alla nivåer, vilket gör det enkelt att förstå och använda alla HAL-drivrutiner eller mellanprogramkomponenter. Dessa exampkörs på STMicroelectronics-korten som anges i Tabell 2.

Styrelse STM32WL3x-kortstödda enheter
NUCLEO-WL33CC1 STM32WL33CC
NUCLEO-WL33CC2 STM32WL33CC

STM32CubeWL3 MCU-paketet kan köras på vilken kompatibel hårdvara som helst. Användarna uppdaterar helt enkelt BSP-drivrutinerna för att porta det medföljande examppå sina kort, om dessa har samma hårdvarufunktioner (som lysdioder eller knappar).

Firmware-paketet överview
STM32CubeWL3 MCU-paketlösningen tillhandahålls i ett enda zip-paket med strukturen som visas i figur 3.
Figur 3. STM32CubeWL3 firmwarepaketstruktur

STM32WL3x-programvara-paket (4)

Försiktighet:

Användaren får inte modifiera komponenterna files. Användaren kan bara redigera \Projects-källorna.
För varje bräda, en uppsättning examples är försedd med förkonfigurerade projekt för verktygskedjorna EWARM, MDK-ARM och STM32CubeIDE.
Figur 4 visar projektstrukturen för NUCLEO-WL33CCx-korten. STM32WL3x-programvara-paket (5)

Exampfilerna klassificeras beroende på STM32CubeWL3-nivån som de gäller. De heter enligt följande:

  • Nivå 0 examples kallas Examples, examples_LL och examples_MIX. De använder respektive HAL-drivrutiner, LL-drivrutiner och en blandning av HAL- och LL-drivrutiner utan någon middleware-komponent. Demonstration examples är också tillgängliga.
  • Nivå 1 exampfiler kallas applikationer. De tillhandahåller typiska användningsfall för varje mellanprogramkomponent.

Alla firmwareapplikationer för ett givet kort kan snabbt byggas med hjälp av mallprojekten som finns i katalogerna Templates och Templates_LL.

Examples, examples_LL och examples_MIX har samma struktur:

  • \Inc-mappen som innehåller alla rubriker files.
  • \Src-mappen som innehåller källkoden.
  • \EWARM, \MDK-ARM och \STM32CubeIDE mappar som innehåller det förkonfigurerade projektet för varje verktygskedja.
  • readme.md och readme.html som beskriver exampbeteendet och den behövde miljön för att få det att fungera.

Komma igång med STM32CubeWL3

Kör ett första example
Det här avsnittet förklarar hur enkelt det är att köra ett första example inom STM32CubeWL3. Den använder som en illustration genereringen av en enkel LED-växel som körs på NUCLEO-WL33CC1-kortet:

  1. Ladda ner STM32CubeWL3 MCU-paketet.
  2. Packa upp det, eller kör installationsprogrammet om det finns, till en katalog som du väljer.
  3. Se till att inte ändra paketstrukturen som visas i figur 3. STM32CubeWL3 firmwarepaketstruktur. Observera att det också rekommenderas att kopiera paketet på en plats nära rotvolymen (vilket betyder C:\ST eller G:\Tests), eftersom vissa IDE:er stöter på problem när sökvägen är för lång.

Hur man kör en HAL example
Innan du laddar och kör ett example, det rekommenderas starkt att läsa exampläs mig file för någon specifik konfiguration.

  1. Bläddra till \Projects\NUCLEO-WL33CC\Examples.
  2. Öppna mapparna \GPIO och sedan \GPIO_EXTI.
  3. Öppna projektet med önskad verktygskedja. En snabb överview om hur man öppnar, bygger och kör ett exampfilen med de stödda verktygskedjorna ges nedan.
  4. Bygg om alla files och ladda bilden i målminnet.
  5. Kör exetample. För mer information, se exampläs mig file.

För att öppna, bygga och köra ett exampFölj stegen nedan med var och en av de verktygskedjor som stöds:

  • VARM:
  1. Under examples-mappen öppnar du undermappen \EWARM.
  2. Starta arbetsytan Project.eww (arbetsytans namn kan ändras från ett example till en annan).
  3. Bygg om alla files: [Projekt]>[Återbygga alla].
  4. Ladda projektbilden: [Project]>[Debug].
  5. Kör programmet: [Debug]>[Go (F5)].
  • MDK-ARM:
  1. Under examples-mappen öppnar du undermappen \MDK-ARM.
  2. Öppna arbetsytan Project.uvproj (arbetsytans namn kan ändras från ett example till en annan).
  3. Bygg om alla files: [Projekt]>[Bygg om alla mål files].
  4. Ladda projektbilden: [Debug]>[Start/Stop Debug Session].
  5. Kör programmet: [Debug]>[Kör (F5)].
  • STM32CubeIDE:
  1. Öppna verktygskedjan STM32CubeIDE.
  2. Klicka på [File]>[Byt arbetsyta]>[Övrigt] och bläddra till STM32CubeIDE-arbetsytans katalog.
  3. Klicka på [File]>[Importera], välj [Allmänt]>[Befintliga projekt till arbetsyta] och klicka sedan på [Nästa].
  4. Bläddra till STM32CubeIDE-arbetsytans katalog och välj projektet.
  5. Bygg om alla projekt files: Välj projektet i Project Explorer-fönstret och klicka sedan på
    [Projekt]>[Bygg projekt]-menyn.
  6.  Kör programmet: [Kör]>[Debug (F11)].

Utveckla en anpassad applikation

Använda STM32CubeMX för att utveckla eller uppdatera en applikation
I STM32Cube MCU-paketet, nästan alla projekt exampfiler genereras med verktyget STM32CubeMX för att initiera systemet, kringutrustning och mellanprogram.

Den direkta användningen av ett befintligt projekt example från STM32CubeMX-verktyget kräver STM32CubeMX 6.12.0 eller högre:

  • Efter installationen av STM32CubeMX, öppna och vid behov uppdatera ett föreslaget projekt.
    Det enklaste sättet att öppna ett befintligt projekt är att dubbelklicka på *.ioc file så att STM32CubeMX automatiskt öppnar projektet och dess källa files. STM32CubeMX genererar initialiseringskällkoden för sådana projekt.
  • Huvudapplikationens källkod finns i kommentarerna "USER CODE BEGIN" och "USER CODE END". Om valet av kringutrustning och inställningarna ändras, uppdaterar STM32CubeMX initieringsdelen av koden samtidigt som huvudapplikationens källkod bevaras.

För att utveckla ett anpassat projekt med STM32CubeMX, följ steg-för-steg-processen:

  1. Konfigurera all nödvändig inbäddad programvara med hjälp av en pinout-konfliktlösare, en klockträdsinställningshjälp, en strömförbrukningskalkylator och verktyget som utför MCU-periferikonfiguration (som GPIO eller USART).
  2. Generera initierings C-koden baserat på den valda konfigurationen. Denna kod är redo att användas inom flera utvecklingsmiljöer. Användarkoden sparas vid nästa kodgenerering.
    För mer information om STM32CubeMX, se användarmanualen STM32CubeMX för STM32-konfiguration och initialisering C-kodgenerering (UM1718).

Drivrutinsapplikationer

HAL-applikation
Det här avsnittet beskriver de steg som krävs för att skapa en anpassad HAL-applikation med STM32CubeWL3:

  1. Skapa ett projekt
    För att skapa ett nytt projekt, börja antingen från mallprojektet som tillhandahålls för varje bräda under \Projects\< STM32xxx_yyy>\Templates eller från något tillgängligt projekt under \Projects\ \Exampl es eller \Projects\ \Applikationer (där hänvisar till styrelsens namn). Mallprojektet tillhandahåller en tom huvudslingafunktion. Det är dock en bra utgångspunkt för att förstå STM32CubeWL32-projektets inställningar. Mallen har följande egenskaper:
    • Den innehåller HAL-källkoden, CMSIS och BSP-drivrutiner, som är den minsta uppsättning komponenter som krävs för att utveckla en kod på ett givet kort.
    • Den innehåller de inkluderade sökvägarna för alla firmwarekomponenter.
    • Den definierar de STM32WL3x-produkter som stöds, vilket gör att CMSIS- och HAL-drivrutinerna kan konfigureras korrekt.
    • Det ger användaren färdig att använda fileär förkonfigurerad enligt nedan:
    • HAL initieras med standardtidsbasen med Arm®-kärnan SysTick.
    • SysTick ISR implementerad för HAL_Delay() ändamål.
      Obs: När du kopierar ett befintligt projekt till en annan plats, se till att alla inkluderade sökvägar är uppdaterade.
  2. Konfigurera firmwarekomponenterna
    HAL- och middleware-komponenterna erbjuder en uppsättning konfigurationsalternativ för byggtid med hjälp av makron #define som deklareras i en rubrik file. En mallkonfiguration file finns inom varje komponent, som måste kopieras till projektmappen (vanligtvis konfigurationen file heter xxx_conf_template.h, fragmentet _template måste tas bort när du kopierar det till projektmappen). Konfigurationen file ger tillräckligt med information för att förstå effekten av varje konfigurationsalternativ. Mer detaljerad information finns i dokumentationen för varje komponent.
  3. Starta HAL-biblioteket
    Efter att ha hoppat till huvudprogrammet måste applikationskoden anropa HAL_Init() API för att initiera HAL-biblioteket, som utför följande uppgifter:
    • Konfiguration av flashminnets prefetch och SysTick-avbrottsprioritet (genom makron definierade i stm3 2wl3x_hal_conf.h).
    •  Konfiguration av SysTick för att generera ett avbrott varje millisekund vid SysTick-avbrottsprioriteten TICK_INT_PRIO definierad i stm32wl3x_hal_conf.h.
    • Inställning av NVIC-gruppprioritet till 0.
    • Anrop av HAL_MspInit() callback-funktion definierad i stm32wl3x_hal_msp.c-användaren file för att utföra globala hårdvaruinitieringar på låg nivå.
  4. Konfigurera systemklockan
    Systemklockkonfigurationen görs genom att anropa de två API:er som beskrivs nedan:
    • HAL_RCC_OscConfig(): detta API konfigurerar de interna och externa oscillatorerna. Användaren väljer att konfigurera en eller alla oscillatorer.
    • HAL_RCC_ClockConfig(): detta API konfigurerar systemklockkällan, flashminnets latens och AHB- och APB-förskalare.
  5. Initiera kringutrustningen
    •  Skriv först den perifera initieringsfunktionen. Gör så här:
    • Aktivera den perifera klockan.
    • Konfigurera de perifera GPIO:erna.
    • Konfigurera DMA-kanalen och aktivera DMA-avbrottet (om det behövs).
    • Aktivera det perifera avbrottet (om det behövs).
    • Redigera stm32xxx_it.c för att anropa de nödvändiga avbrottshanterarna (perifera och DMA), om det behövs.
    •  Skrivprocessen fullständiga återuppringningsfunktioner om ett perifert avbrott eller DMA är avsedd att användas.
    •  I användarens main.c fileinitiera den perifera handtagsstrukturen och anropa sedan den perifera initieringsfunktionen för att initiera den perifera enheten.
  6. Utveckla en applikation
    Vid denna stage, systemet är klart och utvecklingen av användarapplikationskoder kan starta.
    HAL tillhandahåller intuitiva och färdiga API:er för att konfigurera kringutrustningen. Den stöder polling, avbrott och en DMA-programmeringsmodell för att tillgodose alla applikationskrav. För mer information om hur du använder varje kringutrustning, se det rika exampsetet som ingår i STM32CubeWL3 MCU-paketet.

Försiktighet:
I standard-HAL-implementeringen används SysTick-timern som en tidsbas: den genererar avbrott med regelbundna tidsintervall. Om HAL_Delay() anropas från den perifera ISR-processen, se till att SysTick-avbrottet har en högre prioritet (numeriskt lägre) än det perifera avbrottet. Annars är uppringarens ISR-process
blockerad. Funktioner som påverkar tidsbaskonfigurationer deklareras som __svaga för att göra åsidosättning möjlig vid andra implementeringar i användaren file (med en allmän timer, t.example, eller annan tidskälla).
För mer information, se HAL_TimeBase example.

LL ansökan
Det här avsnittet beskriver de steg som krävs för att skapa en anpassad LL-applikation med STM32CubeWL3.

  1. Skapa ett projekt
    För att skapa ett nytt projekt, börja antingen från Templates_LL-projektet som tillhandahålls för varje bräda under \Projects\ \Templates_LL eller från något tillgängligt projekt under \Projects\ \E xamples_LL ( hänvisar till kortets namn, såsom NUCLEO-WL32CC33).
    Mallprojektet tillhandahåller en tom huvudloopfunktion, vilket är en bra utgångspunkt för att förstå projektinställningarna för STM32CubeWL3. Mallens huvudegenskaper är följande:
    • Den innehåller källkoderna för LL- och CMSIS-drivrutinerna, som är den minsta uppsättning komponenter som behövs för att utveckla koden på ett givet kort.
    • Den innehåller de inkluderade sökvägarna för alla nödvändiga firmwarekomponenter.
    • Den väljer den STM32WL3x-produktlinje som stöds och tillåter korrekt konfiguration av CMSIS- och LL-drivrutinerna.
    • Det ger användaren redo att använda files som är förkonfigurerade enligt följande:
    • main.h: LED och USER_BUTTON definition abstraktionsskikt.
    • main.c: Systemklockkonfiguration för maximal frekvens.
  2. Porta LL exampde:
    • Kopiera/klistra in mappen Templates_LL – för att behålla den ursprungliga källan – eller uppdatera ett befintligt Templa tes_LL-projekt direkt.
    • Sedan består porteringen huvudsakligen i att ersätta Templates_LL files av Examples_LL riktat projekt.
    • Behåll alla brädspecifika delar. Av tydlighetsskäl flaggas brädspecifika delar med specifika tags:
      STM32WL3x-programvara-paket (1)

De viktigaste porteringsstegen är alltså följande:

  • Byt ut stm32wl3x_it.h file.
  • Byt ut stm32wl3x_it.c file.
  • Byt ut huvud.h file och uppdatera den: Behåll LED- och användarknappdefinitionen för LL-mallen under BOARD SPECIFIC CONFIGURATION tags.
  • Byt ut huvud.c file och uppdatera den:
  • Behåll klockkonfigurationen för mallfunktionen SystemClock_Config() LL under BOARD SPECIFIC CONFIGURATION tags.
  • Beroende på LED-definitionen, ersätt varje LDx-förekomst med en annan LDy tillgänglig i file huvud.h.

Med dessa ändringar, example körs på målbrädan.

RF-applikationer, demonstrationer och examples
Olika typer av RF-applikationer, demonstrationer och exampfiler är tillgängliga i STM32CubeWL3-paketet. De är listade i de två avsnitten nedan.

Sub-GHz examples och demonstrationer
Dessa exampläserna visar huvuddragen hos MRSUBG och LPAWUR radiotillbehör. Dessa examples finns tillgängliga under:

  • Projekt\NUCLEO-WL33CC\Examples\MRSUBG
  • Projekt\NUCLEO-WL33CC\Examples\LPAWUR
  • Projekt\NUCLEO-WL33CC\Demonstrationer\MRSUBG
  • Projekt\NUCLEO-WL33CC\Demonstrationer\LPAWUR

Varje example eller demonstration består i allmänhet av två program som kallas Tx och Rx som fungerar som sändare respektive mottagare:

  • Examples/MRSUBG
    • MRSUBG_802_15_4: en implementering av det fysiska lagret som definieras av standarden 802.15.4. Den visar hur man konfigurerar radion för att sända eller ta emot 802.15.4-paket.
    • MRSUBG_BasicGeneric: Ett utbyte av STM32WL3x MR_SUBG baspaket.
    • MRSUBG_Chat: En enkel applikation som visar hur man använder Tx och Rx på samma enhet.
    • MRSUBG_DatabufferHandler: Ett exampfil som visar hur man byter från Databuffer 0 och 1.
    • MRSUBG_Sequencer AutoAck: Ett exampfil som sänder och tar emot paketbekräftelser (ACKs) automatiskt.
    • MRSUBG_WMBusSTD: Ett utbyte av WM-Bus-meddelanden.
    • WakeupRadio: Ett example för att testa LPAWUR radioutrustning.
  • Demonstrationer/MRSUBG
    • MRSUBG_RTC_Button_TX: Detta example visar hur du ställer in SoC i djupstoppsläge och konfigurerar MRSUBG för att väcka SoC genom att trycka på PB2 för att skicka en ram eller efter att RTC-timern har gått ut.
    • MRSUBG_Sequencer_Sniff: Detta example visar hur man ställer in MRSUBG-sequencern att arbeta i sniff-läge. Detta example visar mottagarsidan och kräver en annan enhet som sändare.
    • MRSUBG_Timer: Applikationen schemalägger flera instanser av MRSUBG-timer (med autoreload) med olika tidsintervall.
    • MRSUBG_WakeupRadio_Tx: Detta example förklarar hur man ställer in SoC i djupstoppsläge och konfigurerar MRSUBG för att väcka SoC genom att trycka på PB2 för att skicka en ram. Detta example visar sändarsidan och kräver en annan enhet som en LPAWUR-mottagare. Mottagaren exampfilen finns under mappen NUCLEO-WL33CC\Demonstrations\LPAWUR\LPAWUR_WakeupRad io_Rx.
  • Demonstrationer/LPAWUR
    • LPAWUR_WakeupRadio_Rx: Detta example förklarar hur man ställer in SoC i djupstoppsläge och konfigurerar LPAWUR för att väcka SoC när en ram anländer och tas emot korrekt. Detta example visar mottagarsidan och kräver en annan enhet som sändare. Sändaren exampfilen finns under mappen NUCLEO-WL33CC\Demonstrations\MRSUBG\MRSUBG_WakeupRad io_Tx.

Sigfox™-applikation
Dessa applikationer visar hur man implementerar ett Sigfox™-scenario och använder de tillgängliga Sigfox™-API:erna. De är tillgängliga i projektsökvägen Projects\NUCLEO-WL33CC\Applications\Sigfox\:

  • Sigfox_CLI: Denna applikation visar hur man använder ett kommandoradsgränssnitt (CLI) för att skicka kommandon som använder Sigfox™-protokollet för att skicka meddelanden och utföra förcertifieringstester.
  • Sigfox_PushButton: Denna applikation tillåter utvärdering av STM32WL33xx Sigfox™-enhetens radiofunktioner. Genom att trycka på PB1 sänds en Sigfox™-testram.

FAQ

  1. När ska jag använda HAL istället för LL-drivrutiner?
    HAL-drivrutiner erbjuder högnivå- och funktionsorienterade API:er, med en hög nivå av portabilitet. Produkt eller perifer komplexitet är dold för slutanvändare.
    LL-drivrutiner erbjuder API:er på låglagerregisternivå, med bättre optimering men mindre portabel. De kräver djupgående kunskaper om produkt- eller IP-specifikationer.
  2. Kan HAL- och LL-drivrutiner användas tillsammans? Om ja, vilka är begränsningarna?
    Det är möjligt att använda både HAL- och LL-drivrutiner. Använd HAL för den perifera initieringsfasen och hantera sedan I/O-operationerna med LL-drivrutiner.
    Den stora skillnaden mellan HAL och LL är att HAL-drivrutiner måste skapa och använda handtag för drifthantering medan LL-drivrutiner fungerar direkt på perifera register. Blandning av HAL och LL illustreras i examples_MIX examples.
  3. Hur är LL-initierings-API:er aktiverade?
    Definitionen av LL-initierings-API:er och associerade resurser (strukturer, bokstaver och prototyper) betingas av kompileringsväxeln USE_FULL_LL_DRIVER.
    För att kunna använda LL-initierings-API:er, lägg till denna switch i verktygskedjans kompilatorförprocessor.
  4. Finns det något mallprojekt för MRSUBG/LPAWUR kringutrustning examples?
    För att skapa en ny MRSUBG eller LPAWUR examputgå från skelettprojektet som tillhandahålls under \Pr ojects\NUCLEO-WL33CC\Examples\MRSUBG eller \Projects\NUCLEO-WL33CC\Examples\LPAWUR, eller från något tillgängligt projekt under samma kataloger.
  5. Hur kan STM32CubeMX generera kod baserad på inbäddad programvara?
    STM32CubeMX har en inbyggd kunskap om STM32 mikrokontroller, inklusive deras kringutrustning och mjukvara, vilket gör att den kan tillhandahålla en grafisk representation till användaren och generera *.h eller *.c files baserat på användarens konfiguration.

Revisionshistorik

Tabell 3. Dokumentrevisionshistorik

Datum Revision Ändringar
29-mars-2024 1 Initial release.
30 oktober 2024 2 Full integration av STM32CubeWL3 in STM32Cube. Uppdaterad:

Borttaget:

  • PC-verktyg, inklusive Navigatör, STM32WL3 GUI, och MR-SUBG Sequencer GUI
  • Hur kan WiSE-Studio IOMapper generera kod baserad på inbäddad programvara?
  • Tillåter Navigator åtkomst till programvarupaketresurser?

Dokument/resurser

ST STM32WL3x mjukvarupaket [pdfInstruktioner
STM32WL3x Mjukvarupaket, STM32WL3x, Mjukvarupaket, Paket

Referenser

Lämna en kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade *