STM32WL3x-połączenie

Pakiet oprogramowania STM32WL3x

STM32WL3x-Oprogramowanie-Pakiet-PRODUKT

Specyfikacje

  • Nazwa produktu: Pakiet oprogramowania STM32CubeWL3
  • Zgodność: mikrokontrolery STM32WL3x
  • Główne cechy:
    • Interfejsy API warstwy niskiej (LL) i warstwy abstrakcji sprzętowej (HAL)
    • Komponenty oprogramowania pośredniczącego jądra SigfoxTM, FatFS i FreeRTOSTM
    • Aplikacje i demonstracje

Instrukcje użytkowania produktu

Pierwsze kroki
Aby rozpocząć korzystanie z pakietu oprogramowania STM32CubeWL3, wykonaj następujące czynności:

  1. Pobierz pakiet oprogramowania ze strony oficjalnej webstrona.
  2. Zainstaluj niezbędne środowisko programistyczne (np. STM32CubeIDE, EWARM, MDK-ARM).
  3. Odnieś się do byłegoamppliki i aplikacje udostępniane w celach informacyjnych.

Architektura STM32CubeWL3view
Pakiet oprogramowania STM32CubeWL3 opiera się na trzech głównych poziomach

  • Poziom 0: Warstwa abstrakcji sprzętowej (HAL) i sterowniki BSP.
  • Poziom 1: Aplikacje, biblioteki i komponenty oparte na protokołach.

Często zadawane pytania (FAQ)

P: Jakie są główne cechy pakietu oprogramowania STM32CubeWL3?
A: Główne funkcje obejmują interfejsy API niskiej warstwy i HAL, komponenty middleware takie jak SigfoxTM, FatFS, jądro FreeRTOSTM, aplikacje i demonstracje.

Wstęp

STM32Cube to oryginalna inicjatywa STMicroelectronics mająca na celu znaczną poprawę produktywności projektantów poprzez zmniejszenie wysiłku, czasu i kosztów rozwoju. STM32Cube obejmuje całe portfolio STM32.

STM32Cube zawiera:

  • Zestaw przyjaznych dla użytkownika narzędzi do tworzenia oprogramowania, obejmujących cały proces rozwoju projektu od koncepcji do realizacji, w tym:
    • STM32CubeMX, graficzne narzędzie do konfiguracji oprogramowania, które umożliwia automatyczne generowanie kodu inicjującego C za pomocą kreatorów graficznych
    • STM32CubeIDE, wszechstronne narzędzie programistyczne z konfiguracją urządzeń peryferyjnych, generowaniem kodu, kompilacją kodu i funkcjami debugowania
    • STM32CubeCLT, wszechstronny zestaw narzędzi programistycznych wiersza poleceń z kompilacją kodu, programowaniem płytki i funkcjami debugowania
    • STM32CubeProgrammer (STM32CubeProg), narzędzie programistyczne dostępne w wersjach graficznych i wiersza poleceń
    • STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), potężne narzędzia monitorujące umożliwiające precyzyjne dostrajanie zachowania i wydajności aplikacji STM32 w czasie rzeczywistym
  • Pakiety MCU i MPU STM32Cube to kompleksowe platformy oprogramowania wbudowanego, specyficzne dla każdej serii mikrokontrolerów i mikroprocesorów (np. STM32CubeWL3 dla linii produktów STM32WL3x), obejmujące:
    • Warstwa abstrakcji sprzętu STM32Cube (HAL), zapewniająca maksymalną przenośność w całym portfolio STM32
    • Interfejsy API warstwy niskiej STM32Cube zapewniają najlepszą wydajność i zużycie pamięci przy zachowaniu wysokiego stopnia kontroli użytkownika nad sprzętem
    • Spójny zestaw komponentów pośredniczących, takich jak jądro FreeRTOS™, FatFS i Sigfox™
    • Wszystkie wbudowane narzędzia programowe z pełnymi zestawami urządzeń peryferyjnych i aplikacyjnych, npamples
  • Pakiety rozszerzeń STM32Cube, które zawierają wbudowane komponenty oprogramowania, które uzupełniają funkcje pakietów MCU i MPU STM32Cube o:
    • Rozszerzenia oprogramowania pośredniego i warstwy aplikacji
    • Examppliki działające na niektórych konkretnych płytach rozwojowych STMicroelectronics

W niniejszej instrukcji użytkownika opisano, jak rozpocząć pracę z pakietem MCU STM32CubeWL3.
W rozdziale 2 opisano główne cechy STM32CubeWL3, a w rozdziale 3 przedstawionoview jego architektury i struktury pakietu MCU.

Informacje ogólne

STM32CubeWL3 obsługuje aplikacje demonstracyjne sub-GHz, w tym pliki binarne Sigfox™, na mikrokontrolerach z linii produktów STM32WL3x opartych na procesorze Arm® Cortex®‑M0+.
Mikrokontrolery STM32WL3x zawierają najnowocześniejszy, zgodny z normami sub-GHz układ peryferyjny RF firmy STMicroelectronics, zoptymalizowany pod kątem bardzo niskiego zużycia energii i doskonałej wydajności radiowej, co zapewnia bezkonkurencyjnie długi czas pracy na baterii.
Notatka:Arm jest zarejestrowanym znakiem towarowym firmy Arm Limited (lub jej spółek zależnych) w Stanach Zjednoczonych i/lub innych krajach.

Główne cechy STM32CubeWL3

  • Pakiet STM32CubeWL3 MCU działa na 32-bitowych mikrokontrolerach STM32 opartych na procesorze Arm® Cortex®‑M0+. Gromadzi w jednym pakiecie wszystkie ogólne wbudowane komponenty oprogramowania wymagane do opracowania aplikacji dla mikrokontrolerów linii produktów STM32WL3x.
  • Pakiet zawiera interfejsy API warstwy niskiej (LL) i warstwy abstrakcji sprzętowej (HAL), które obejmują sprzęt mikrokontrolera, wraz z rozbudowanym zestawem interfejsów examples działające na płytach STMicroelectronics. HAL i LL API są dostępne w licencji BSD open-source dla wygody użytkownika. Zawiera również komponenty middleware jądra Sigfox™, FatFS i FreeRTOS™.
  • Pakiet MCU STM32CubeWL3 zawiera również szereg aplikacji i demonstracji implementujących wszystkie jego komponenty middleware.
  • Układ komponentów obudowy mikrokontrolera STM32CubeWL3 przedstawiono na rysunku 1.

Rysunek 1. Elementy obudowy MCU STM32CubeWL3 

Pakiet oprogramowania STM32WL3x (2)

Architektura STM32CubeWL3view

Rozwiązanie pakietu MCU STM32CubeWL3 zbudowano wokół trzech niezależnych poziomów, które łatwo ze sobą współdziałają, jak opisano na rysunku 2. Pakiet oprogramowania STM32WL3x (3)Poziom 0
Poziom ten jest podzielony na trzy podwarstwy:

  • Pakiet wsparcia płyty (BSP).
  • Warstwa abstrakcji sprzętu (HAL):
    • Sterowniki urządzeń peryferyjnych HAL
    • Sterowniki niskowarstwowe
  • Podstawowe użycie urządzeń peryferyjnych, npamples.

Pakiet wsparcia płyty (BSP)
Ta warstwa oferuje zestaw interfejsów API w odniesieniu do komponentów sprzętowych na płytach sprzętowych (takich jak diody LED, przyciski i sterowniki COM). Składa się z dwóch części:

  • Część:
    To jest sterownik w odniesieniu do zewnętrznego urządzenia na płycie, a nie do STM32. Sterownik komponentu zapewnia określone API do zewnętrznych komponentów sterownika BSP i może być przenośny na dowolnej innej płycie.
  • Sterownik BSP:

Umożliwia połączenie sterowników komponentów z konkretną płytką i zapewnia zestaw przyjaznych dla użytkownika interfejsów API. Reguła nazewnictwa API to BSP_FUNCT_Action().
Examppliki: BSP_LED_Init(), BSP_LED_On()
BSP opiera się na architekturze modułowej, umożliwiającej łatwe przenoszenie na dowolny sprzęt poprzez samo wdrożenie procedur niskiego poziomu.

Warstwa abstrakcji sprzętu (HAL) i warstwa niskowarstwowa (LL)
Warstwy HAL i LL modułu STM32CubeWL3 uzupełniają się i pokrywają szeroki zakres wymagań aplikacji:

  • Sterowniki HAL oferują wysokopoziomowe, zorientowane na funkcje, wysoce przenośne interfejsy API. Ukrywają przed użytkownikiem końcowym złożoność MCU i urządzeń peryferyjnych.
    Sterowniki HAL zapewniają ogólne, wieloinstancyjne, zorientowane na funkcje API, które upraszczają implementację aplikacji użytkownika, zapewniając gotowe do użycia procesy. Na przykładample, dla peryferiów komunikacyjnych (I2C, UART i innych) udostępnia API umożliwiające inicjalizację i konfigurację peryferiów, zarządzanie transferem danych na podstawie sondowania, przerywania lub procesu DMA oraz obsługę błędów komunikacji, które mogą wystąpić podczas komunikacji. API sterowników HAL dzielą się na dwie kategorie:
  1. Ogólne interfejsy API, które zapewniają wspólne i ogólne funkcje dla wszystkich mikrokontrolerów serii STM32.
  2. Interfejsy API rozszerzeń, które zapewniają określone i dostosowane funkcje dla określonej rodziny lub określonego numeru części.
  • Interfejsy API niskiej warstwy zapewniają interfejsy API niskiego poziomu na poziomie rejestru, z lepszą optymalizacją, ale mniejszą przenośnością. Wymagają głębokiej wiedzy na temat specyfikacji MCU i urządzeń peryferyjnych.
    Sterowniki LL zostały zaprojektowane tak, aby oferować szybką, lekką warstwę zorientowaną na ekspertów, która jest bliższa sprzętowi niż HAL. W przeciwieństwie do HAL, interfejsy API LL nie są dostępne dla urządzeń peryferyjnych, w których zoptymalizowany dostęp nie jest kluczową funkcją, lub dla tych, które wymagają skomplikowanej konfiguracji oprogramowania lub złożonego stosu wyższego poziomu.

Sterowniki LL charakteryzują się:

  • Zestaw funkcji inicjujących główne cechy peryferii zgodnie z parametrami określonymi w strukturach danych.
  • Zestaw funkcji do wypełniania inicjalizacyjnych struktur danych wartościami resetowania odpowiadającymi każdemu polu.
  • Funkcja deinicjalizująca urządzenia peryferyjne (przywracanie rejestrów urządzeń peryferyjnych do ich wartości domyślnych).
  • Zestaw funkcji wbudowanych umożliwiających bezpośredni i atomowy dostęp do rejestrów.
  • Pełna niezależność od HAL i możliwość pracy w trybie autonomicznym (bez sterowników HAL).
  • Pełne pokrycie obsługiwanych funkcji peryferyjnych.

Podstawowe użycie urządzeń peryferyjnych, npamples
Warstwa ta zawiera examppliki zbudowane na urządzeniach peryferyjnych STM32 przy użyciu wyłącznie zasobów HAL i BSP.
Demonstracja exampdostępne są również pliki do pokazania bardziej złożonych przykładówampscenariusze z określonymi urządzeniami peryferyjnymi, takimi jak MRSUBG i LPAWUR.

Poziom 1
Poziom ten jest podzielony na dwie podwarstwy:

  • Komponenty oprogramowania pośredniczącego
  • Examppliki oparte na komponentach oprogramowania pośredniego

Komponenty oprogramowania pośredniczącego
Oprogramowanie pośredniczące to zestaw bibliotek obejmujących jądro FreeRTOS™, FatFS i bibliotekę protokołu Sigfox™. Interakcja pozioma między komponentami tej warstwy odbywa się poprzez wywołanie wyróżnionych interfejsów API.
Pionowa interakcja ze sterownikami niskowarstwowymi odbywa się poprzez specyficzne wywołania zwrotne i makra statyczne zaimplementowane w interfejsie wywołań systemowych bibliotek.
Główne cechy każdego komponentu oprogramowania pośredniego są następujące:

  • Jądro FreeRTOS™: implementuje system operacyjny czasu rzeczywistego (RTOS) przeznaczony dla systemów wbudowanych.
  • Sigfox™: implementuje bibliotekę protokołów Sigfox™ zgodną z siecią protokołów Sigfox™ i obejmuje bibliotekę protokołów testów RF w celu przeprowadzenia testów względem narzędzi RF Sigfox™.
  • FatFS: implementuje ogólny system plików FAT file moduł systemowy.

Examppliki oparte na komponentach oprogramowania pośredniego
Każdy komponent oprogramowania pośredniego zawiera jeden lub więcej plików examples, zwane także aplikacjami, pokazujące jak z nich korzystać. Integracja exampDostępne są także pliki korzystające z kilku komponentów oprogramowania pośredniego.

Pakiet oprogramowania układowego STM32CubeWL3 powyżejview

Obsługiwane urządzenia i sprzęt STM32WL3x
STM32Cube oferuje wysoce przenośną warstwę abstrakcji sprzętowej (HAL) zbudowaną wokół ogólnej architektury. Umożliwia ona zasadę warstw build-on, np. wykorzystanie warstwy middleware do implementacji ich funkcji bez dogłębnej wiedzy, jaki MCU jest używany. Poprawia to możliwość ponownego wykorzystania kodu biblioteki i zapewnia łatwą przenośność na inne urządzenia.

  • Ponadto dzięki swojej warstwowej architekturze STM32CubeWL3 oferuje pełne wsparcie dla całej linii produktów STM32WL3x.
  • Użytkownik musi jedynie zdefiniować odpowiednią makroinstrukcję w pliku stm32wl3x.h.

Tabela 1 przedstawia makro do zdefiniowania w zależności od używanego urządzenia linii produktów STM32WL3x. To makro musi być również zdefiniowane w preprocesorze kompilatora.
Tabela 1. Makra dla linii produktów STM32WL3x

Makro zdefiniowane w stm32wl3x.h Urządzenia z linii produktów STM32WL3x
stm32wl33 Mikrokontrolery STM32WL33xx

STM32CubeWL3 oferuje bogaty zestaw funkcjiamples i aplikacje na wszystkich poziomach, ułatwiając zrozumienie i używanie dowolnego sterownika HAL lub komponentów middleware. Te exampPliki działają na płytkach STMicroelectronics wymienionych w Tabeli 2.

Tablica Urządzenia obsługiwane przez płytę STM32WL3x
NUCLEO-WL33CC1 STM32WL33CC
NUCLEO-WL33CC2 STM32WL33CC

Pakiet STM32CubeWL3 MCU może działać na dowolnym kompatybilnym sprzęcie. Użytkownicy po prostu aktualizują sterowniki BSP, aby przenieść dostarczone exampna swoich płytkach, jeśli mają te same elementy sprzętowe (np. diody LED lub przyciski).

Pakiet oprogramowania sprzętowego się skończyłview
Rozwiązanie pakietu MCU STM32CubeWL3 jest dostarczane w pojedynczym pakiecie ZIP o strukturze pokazanej na rysunku 3.
Rysunek 3. Struktura pakietu oprogramowania sprzętowego STM32CubeWL3

Pakiet oprogramowania STM32WL3x (4)

Ostrożność:

Użytkownik nie może modyfikować komponentów files. Użytkownik może edytować tylko źródła \Projects.
Do każdej planszy zestaw examples zawiera wstępnie skonfigurowane projekty dla łańcuchów narzędzi EWARM, MDK-ARM i STM32CubeIDE.
Rysunek 4 przedstawia strukturę projektu dla płyt NUCLEO-WL33CCx. Pakiet oprogramowania STM32WL3x (5)

Byłyamples są klasyfikowane w zależności od poziomu STM32CubeWL3, do którego się odnoszą. Są one nazywane następująco:

  • Poziom 0 npamppliki nazywane są Examples, npamples_LL i przykłamples_MIX. Używają odpowiednio sterowników HAL, sterowników LL i mieszanki sterowników HAL i LL bez żadnego komponentu middleware. Demonstracja examples są również dostępne.
  • Poziom 1 npamples nazywane są aplikacjami. Dostarczają one typowych przypadków użycia każdego komponentu middleware.

Każdą aplikację oprogramowania sprzętowego dla danej płytki można szybko zbudować, korzystając z szablonów projektów dostępnych w katalogach Templates i Templates_LL.

Examples, npamples_LL i przykłamples_MIX ma taką samą strukturę:

  • Folder \Inc zawierający wszystkie nagłówki files.
  • Folder \Src zawierający kod źródłowy.
  • Foldery \EWARM, \MDK-ARM i \STM32CubeIDE zawierające wstępnie skonfigurowany projekt dla każdego łańcucha narzędzi.
  • readme.md i readme.html opisujące example zachowanie i potrzebne środowisko, aby to działało.

Pierwsze kroki z STM32CubeWL3

Prowadzenie pierwszego byłegoample
W tej sekcji wyjaśniono, jak proste jest przeprowadzenie pierwszego eksperymentuample w STM32CubeWL3. Jako ilustrację wykorzystano generację prostego przełącznika LED działającego na płycie NUCLEO-WL33CC1:

  1. Pobierz pakiet MCU STM32CubeWL3.
  2. Rozpakuj plik lub uruchom instalator (jeśli jest dostępny) w wybranym przez siebie katalogu.
  3. Upewnij się, że nie modyfikujesz struktury pakietu pokazanej na Rysunku 3. Struktura pakietu oprogramowania układowego STM32CubeWL3. Należy zauważyć, że zaleca się również kopiowanie pakietu w lokalizacji blisko woluminu głównego (czyli C:\ST lub G:\Tests), ponieważ niektóre środowiska IDE napotykają problemy, gdy ścieżka jest zbyt długa.

Jak uruchomić HAL example
Przed załadowaniem i uruchomieniem example, zdecydowanie zaleca się przeczytanie byłegoampprzeczytaj file dla dowolnej konkretnej konfiguracji.

  1. Przejdź do \Projects\NUCLEO-WL33CC\Examples.
  2. Otwórz folder \GPIO, następnie \GPIO_EXTI.
  3. Otwórz projekt za pomocą preferowanego zestawu narzędzi. Szybkie przejścieview o tym, jak otworzyć, zbudować i uruchomić plik exampPlik z obsługiwanymi zestawami narzędzi podano poniżej.
  4. Odbuduj wszystko files i załaduj obraz do pamięci docelowej.
  5. Uruchom example. Więcej szczegółów znajdziesz w byłymampprzeczytaj file.

Aby otworzyć, zbudować i prowadzić byłegoampAby skorzystać z każdego z obsługiwanych łańcuchów narzędzi, wykonaj poniższe kroki:

  • EWARM:
  1. Pod eksamples, otwórz podfolder \EWARM.
  2. Uruchom obszar roboczy Project.eww (nazwa obszaru roboczego może się zmienić z jednej, np.ample do innego).
  3. Odbuduj wszystko files: [Projekt]>[Przebuduj wszystko].
  4. Załaduj obraz projektu: [Projekt]>[Debuguj].
  5. Uruchom program: [Debugowanie]>[Go (F5)].
  • MDK-ARM:
  1. Pod eksamples, otwórz podfolder \MDK-ARM.
  2. Otwórz obszar roboczy Project.uvproj (nazwa obszaru roboczego może się różnić od np.ample do innego).
  3. Odbuduj wszystko files: [Projekt]>[Odbuduj cały cel fileS].
  4. Załaduj obraz projektu: [Debuguj]>[Rozpocznij/Zatrzymaj sesję debugowania].
  5. Uruchom program: [Debugowanie]>[Uruchom (F5)].
  • STM32CubeIDE:
  1. Otwórz łańcuch narzędzi STM32CubeIDE.
  2. Kliknij [File]>[Przełącz obszar roboczy]>[Inne] i przejdź do katalogu obszaru roboczego STM32CubeIDE.
  3. Kliknij [File]>[Importuj], wybierz [Ogólne]>[Istniejące projekty do obszaru roboczego], a następnie kliknij [Dalej].
  4. Przejdź do katalogu obszaru roboczego STM32CubeIDE i wybierz projekt.
  5. Odbuduj cały projekt files: Wybierz projekt w oknie Eksploratora projektów, a następnie kliknij
    Menu [Projekt]>[Buduj projekt].
  6.  Uruchom program: [Uruchom]>[Debugowanie (F11)].

Opracowanie aplikacji niestandardowej

Używanie STM32CubeMX do tworzenia lub aktualizowania aplikacji
W pakiecie MCU STM32Cube prawie wszystkie projektyampPliki są generowane za pomocą narzędzia STM32CubeMX w celu inicjalizacji systemu, urządzeń peryferyjnych i oprogramowania pośredniego.

Bezpośrednie wykorzystanie istniejącego projektu npampPlik z narzędzia STM32CubeMX wymaga STM32CubeMX 6.12.0 lub nowszego:

  • Po zainstalowaniu STM32CubeMX otwórz proponowany projekt i w razie potrzeby go zaktualizuj.
    Najprostszym sposobem otwarcia istniejącego projektu jest dwukrotne kliknięcie pliku *.ioc file dzięki czemu STM32CubeMX automatycznie otworzy projekt i jego źródło files. STM32CubeMX generuje kod źródłowy inicjalizacji takich projektów.
  • Główny kod źródłowy aplikacji jest zawarty w komentarzach „USER CODE BEGIN” i „USER CODE END”. Jeśli wybór urządzeń peryferyjnych i ustawienia zostaną zmodyfikowane, STM32CubeMX aktualizuje część inicjalizacji kodu, zachowując jednocześnie główny kod źródłowy aplikacji.

Aby opracować niestandardowy projekt przy użyciu STM32CubeMX, wykonaj poniższe kroki:

  1. Skonfiguruj całe wymagane oprogramowanie wbudowane za pomocą narzędzia do rozwiązywania konfliktów wyprowadzeń, pomocnika ustawień drzewa zegara, kalkulatora zużycia energii i narzędzia wykonującego konfigurację urządzeń peryferyjnych MCU (takich jak GPIO lub USART).
  2. Wygeneruj kod inicjujący C na podstawie wybranej konfiguracji. Ten kod jest gotowy do użycia w kilku środowiskach programistycznych. Kod użytkownika zostaje zachowany przy następnym wygenerowaniu kodu.
    Więcej informacji na temat STM32CubeMX można znaleźć w instrukcji obsługi STM32CubeMX dotyczącej konfiguracji i inicjalizacji kodu C STM32 (UM1718).

Aplikacje sterownika

Aplikacja HAL
W tej sekcji opisano kroki wymagane do utworzenia niestandardowej aplikacji HAL przy użyciu STM32CubeWL3:

  1. Utwórz projekt
    Aby utworzyć nowy projekt, rozpocznij od szablonu projektu udostępnionego dla każdej płytki w folderze \Projects\< STM32xxx_yyy>\Templates lub od dowolnego dostępnego projektu w folderze \Projects\ \Byłyampl es lub \Projekty\ \Aplikacje (gdzie odnosi się do nazwy płytki). Projekt szablonu zapewnia pustą funkcję pętli głównej. Jest to jednak dobry punkt wyjścia do zrozumienia ustawień projektu STM32CubeWL32. Szablon ma następujące cechy:
    • Zawiera kod źródłowy HAL, sterowniki CMSIS i BSP, które stanowią minimalny zestaw komponentów potrzebnych do opracowania kodu na danej płytce.
    • Zawiera dołączone ścieżki do wszystkich komponentów oprogramowania sprzętowego.
    • Definiuje obsługiwane urządzenia linii produktów STM32WL3x, umożliwiając poprawną konfigurację sterowników CMSIS i HAL.
    • Zapewnia użytkownikowi gotowego do użycia filejest wstępnie skonfigurowany, jak pokazano poniżej:
    • HAL zainicjowano z domyślną bazą czasu przy użyciu rdzenia Arm® SysTick.
    • SysTick ISR zaimplementowany do celów HAL_Delay().
      Uwaga: Podczas kopiowania istniejącego projektu do innej lokalizacji należy upewnić się, że wszystkie uwzględnione ścieżki są zaktualizowane.
  2. Skonfiguruj komponenty oprogramowania sprzętowego
    Komponenty HAL i oprogramowanie pośrednie oferują zestaw opcji konfiguracji w czasie kompilacji przy użyciu makr #define zadeklarowanych w nagłówku file. Konfiguracja szablonu file jest dostarczany w każdym komponencie i musi zostać skopiowany do folderu projektu (zwykle jest to konfiguracja) file nazywa się xxx_conf_template.h, fragment _template musi zostać usunięty podczas kopiowania go do folderu projektu). Konfiguracja file zapewnia wystarczającą ilość informacji, aby zrozumieć wpływ każdej opcji konfiguracji. Bardziej szczegółowe informacje można znaleźć w dokumentacji dołączonej do każdego komponentu.
  3. Uruchom bibliotekę HAL
    Po skoku do programu głównego kod aplikacji musi wywołać funkcję API HAL_Init() w celu zainicjowania biblioteki HAL, która realizuje następujące zadania:
    • Konfiguracja wstępnego pobierania pamięci flash i priorytetu przerwań SysTick (za pomocą makr zdefiniowanych w stm3 2wl3x_hal_conf.h).
    •  Konfiguracja SysTick w celu generowania przerwania co milisekundę z priorytetem przerwania SysTick TICK_INT_PRIO zdefiniowanym w stm32wl3x_hal_conf.h.
    • Ustawienie priorytetu grupy NVIC na 0.
    • Wywołanie funkcji wywołania zwrotnego HAL_MspInit() zdefiniowanej w pliku użytkownika stm32wl3x_hal_msp.c file do wykonywania globalnych inicjalizacji sprzętu niskiego poziomu.
  4. Skonfiguruj zegar systemowy
    Konfiguracja zegara systemowego odbywa się poprzez wywołanie dwóch API opisanych poniżej:
    • HAL_RCC_OscConfig(): to API konfiguruje wewnętrzne i zewnętrzne oscylatory. Użytkownik wybiera konfigurację jednego lub wszystkich oscylatorów.
    • HAL_RCC_ClockConfig(): to API konfiguruje źródło zegara systemowego, opóźnienie pamięci flash oraz preskalery AHB i APB.
  5. Zainicjuj urządzenie peryferyjne
    •  Najpierw napisz funkcję inicjalizacji peryferii. Postępuj następująco:
    • Włącz zegar peryferyjny.
    • Skonfiguruj peryferyjne GPIO.
    • Skonfiguruj kanał DMA i włącz przerwanie DMA (jeśli to konieczne).
    • Włącz przerwanie urządzeń peryferyjnych (jeśli to konieczne).
    • Edytuj plik stm32xxx_it.c, aby w razie potrzeby wywołać wymagane procedury obsługi przerwań (urządzenia peryferyjne i DMA).
    •  Zapisz funkcje wywołania zwrotnego całego procesu, jeśli ma być użyte przerwanie peryferyjne lub DMA.
    •  W pliku użytkownika main.c file, zainicjuj strukturę uchwytu urządzenia peryferyjnego, a następnie wywołaj funkcję inicjalizacji urządzenia peryferyjnego w celu jego zainicjowania.
  6. Opracuj aplikację
    W tym momencietage, system jest gotowy i można rozpocząć tworzenie kodu aplikacji użytkownika.
    HAL zapewnia intuicyjne i gotowe do użycia interfejsy API do konfiguracji urządzeń peryferyjnych. Obsługuje odpytywanie, przerwania i model programowania DMA, aby spełnić wszelkie wymagania aplikacji. Więcej informacji na temat korzystania z poszczególnych urządzeń peryferyjnych można znaleźć w bogatym exampZestaw dostarczony w obudowie mikrokontrolera STM32CubeWL3.

Ostrożność:
W domyślnej implementacji HAL timer SysTick jest używany jako podstawa czasu: generuje przerwania w regularnych odstępach czasu. Jeśli HAL_Delay() jest wywoływane z procesu ISR peryferyjnego, upewnij się, że przerwanie SysTick ma wyższy priorytet (liczbowo niższy) niż przerwanie peryferyjne. W przeciwnym wypadku wywołujący proces ISR jest
zablokowane. Funkcje wpływające na konfiguracje bazy czasu są deklarowane jako __weak, aby umożliwić nadpisanie w przypadku innych implementacji w użytkowniku file (za pomocą timera ogólnego przeznaczenia, npample lub inne źródło czasu).
Więcej szczegółów można znaleźć w podręczniku HAL_TimeBaseample.

Aplikacja L.L
W tej sekcji opisano kroki niezbędne do utworzenia niestandardowej aplikacji LL przy użyciu STM32CubeWL3.

  1. Utwórz projekt
    Aby utworzyć nowy projekt, zacznij od projektu Templates_LL udostępnionego dla każdej płytki w folderze \Projects\ \Templates_LL lub z dowolnego dostępnego projektu w \Projects\ \Byłyamples_LL ( odnosi się do nazwy płyty, np. NUCLEO-WL32CC33).
    Projekt szablonu udostępnia pustą funkcję pętli głównej, która jest dobrym punktem wyjścia do zrozumienia ustawień projektu dla STM32CubeWL3. Główne cechy szablonu są następujące:
    • Zawiera kody źródłowe sterowników LL i CMSIS, które stanowią minimalny zestaw komponentów niezbędnych do opracowania kodu na danej płycie.
    • Zawiera dołączone ścieżki do wszystkich wymaganych komponentów oprogramowania sprzętowego.
    • Wybiera obsługiwane urządzenie z linii produktów STM32WL3x i umożliwia prawidłową konfigurację sterowników CMSIS i LL.
    • Zapewnia użytkownika gotowego do użycia files, które są wstępnie skonfigurowane w następujący sposób:
    • main.h: Warstwa abstrakcji definicji diod LED i USER_BUTTON.
    • main.c: Konfiguracja zegara systemowego dla maksymalnej częstotliwości.
  2. Przenieś ex.LLampna:
    • Skopiuj/wklej folder Templates_LL – aby zachować źródło początkowe – lub bezpośrednio zaktualizuj istniejący projekt Templa tes_LL.
    • Następnie porting polega głównie na zastąpieniu Templates_LL fileprzez byłegoampProjekt docelowy les_LL.
    • Zachowaj wszystkie części charakterystyczne dla planszy. Dla przejrzystości, części specyficzne dla planszy są oznaczone jako specyficzne tags:
      Pakiet oprogramowania STM32WL3x (1)

Zatem główne etapy przenoszenia są następujące:

  • Zastąp stm32wl3x_it.h file.
  • Zastąp stm32wl3x_it.c file.
  • Wymień plik main.h file i zaktualizuj go: Zachowaj definicję diody LED i przycisku użytkownika szablonu LL w KONFIGURACJI SPECYFICZNEJ PŁYTY tags.
  • Wymień plik main.c file i zaktualizuj to:
  • Zachowaj konfigurację zegara funkcji szablonowej SystemClock_Config() LL w sekcji KONFIGURACJA SPECYFICZNA PŁYTY tags.
  • W zależności od definicji diody LED zastąp każde wystąpienie LDx innym LDy dostępnym w file główny.h.

Dzięki tym modyfikacjom example działa na docelowej planszy.

Zastosowania RF, demonstracje i eksperymentyamples
Różne rodzaje zastosowań RF, demonstracje i eksperymentyamples są dostępne w pakiecie STM32CubeWL3. Są wymienione w dwóch sekcjach poniżej.

Sub-GHz examples i demonstracje
Te byłeamples demonstrują główne cechy urządzeń peryferyjnych radiowych MRSUBG i LPAWUR. Te examples są dostępne pod:

  • Projekty\NUCLEO-WL33CC\Examples\MRSUBG
  • Projekty\NUCLEO-WL33CC\Examples\LPAWUR
  • Projekty\NUCLEO-WL33CC\Demonstracje\MRSUBG
  • Projekty\NUCLEO-WL33CC\Demonstracje\LPAWUR

Każdy exampdemonstracja zazwyczaj składa się z dwóch programów, zwanych Tx i Rx, działających odpowiednio jako nadajnik i odbiornik:

  • Examples/MRSUBG
    • MRSUBG_802_15_4: implementacja warstwy fizycznej zdefiniowanej przez standard 802.15.4. Pokazuje, jak skonfigurować radio do przesyłania lub odbierania pakietów 802.15.4.
    • MRSUBG_BasicGeneric: Wymiana podstawowych pakietów MR_SUBG STM32WL3x.
    • MRSUBG_Chat: Prosta aplikacja pokazująca, jak korzystać z funkcji Tx i Rx na tym samym urządzeniu.
    • MRSUBG_DatabufferHandler: PrzykładampPlik pokazujący jak dokonać zamiany pomiędzy buforami danych 0 i 1.
    • MRSUBG_Sequencer AutoAck: Przykładampplik, który automatycznie wysyła i odbiera potwierdzenia pakietów (ACK).
    • MRSUBG_WMBusSTD: Wymiana komunikatów WM-Bus.
    • WakeupRadio: Byłyampw celu przetestowania urządzenia peryferyjnego LPAWUR.
  • Pokazy/MRSUBG
    • MRSUBG_RTC_Button_TX: Ten byłyamppokazuje jak ustawić SoC w trybie głębokiego zatrzymania i skonfigurować MRSUBG tak, aby wybudził SoC poprzez naciśnięcie przycisku PB2 w celu wysłania ramki lub po upływie czasu zegara RTC.
    • MRSUBG_Sequencer_Sniff: Ten byłyample pokazuje jak ustawić sekwencer MRSUBG do pracy w trybie sniff. Ten example demonstruje stronę odbiorczą i wymaga innego urządzenia jako nadajnika.
    • MRSUBG_Timer: Aplikacja planuje kilka wystąpień timera MRSUBG (z automatycznym przeładowaniem) z różnymi odstępami czasu.
    • MRSUBG_WakeupRadio_Tx: Ten byłyample wyjaśnia, jak ustawić SoC w trybie głębokiego zatrzymania i skonfigurować MRSUBG, aby wybudzić SoC, naciskając PB2, aby wysłać ramkę. Ten przykładample demonstruje stronę nadajnika i wymaga innego urządzenia jako odbiornika LPAWUR. Odbiornik exampPlik znajduje się w folderze NUCLEO-WL33CC\Demonstrations\LPAWUR\LPAWUR_WakeupRad io_Rx.
  • Demonstracje/LPAWUR
    • LPAWUR_WakeupRadio_Rx: Ten byłyample wyjaśnia, jak ustawić SoC w trybie deep-stop i skonfigurować LPAWUR, aby wybudzić SoC, gdy ramka dotrze i zostanie poprawnie odebrana. Ten example demonstruje stronę odbiornika i wymaga innego urządzenia jako nadajnika. Nadajnik exampPlik znajduje się w folderze NUCLEO-WL33CC\Demonstrations\MRSUBG\MRSUBG_WakeupRad io_Tx.

Aplikacja Sigfox™
Te aplikacje pokazują, jak wdrożyć scenariusz Sigfox™ i używać dostępnych interfejsów API Sigfox™. Są one dostępne w ścieżce projektu Projects\NUCLEO-WL33CC\Applications\Sigfox\:

  • Sigfox_CLI: Ta aplikacja pokazuje, jak używać interfejsu wiersza poleceń (CLI) do wysyłania poleceń wykorzystujących protokół Sigfox™ w celu wysyłania wiadomości i przeprowadzania testów przedcertyfikacyjnych.
  • Sigfox_PushButton: Ta aplikacja umożliwia ocenę możliwości radiowych urządzenia STM32WL33xx Sigfox™. Naciśnięcie przycisku PB1 przesyła testową ramkę Sigfox™.

Często zadawane pytania

  1. Kiedy powinienem używać sterowników HAL zamiast LL?
    Sterowniki HAL oferują interfejsy API wysokiego poziomu i zorientowane na funkcje, przy wysokim poziomie przenośności. Złożoność produktu lub urządzeń peryferyjnych jest ukryta dla użytkowników końcowych.
    Sterowniki LL oferują niskowarstwowe interfejsy API na poziomie rejestrów, z lepszą optymalizacją, ale mniej przenośne. Wymagają dogłębnej wiedzy na temat specyfikacji produktu lub IP.
  2. Czy sterowniki HAL i LL mogą być używane razem? Jeśli tak, jakie są ograniczenia?
    Można używać zarówno sterowników HAL, jak i LL. Użyj HAL do fazy inicjalizacji urządzeń peryferyjnych, a następnie zarządzaj operacjami wejścia/wyjścia za pomocą sterowników LL.
    Główną różnicą między HAL i LL jest to, że sterowniki HAL wymagają tworzenia i używania uchwytów do zarządzania operacjami, podczas gdy sterowniki LL działają bezpośrednio na rejestrach peryferyjnych. Mieszanie HAL i LL jest zilustrowane w Examples_MIX npamples.
  3. W jaki sposób włączane są interfejsy API inicjowania LL?
    Definicja interfejsów API inicjalizacji LL i powiązanych zasobów (struktur, literałów i prototypów) jest uwarunkowana opcją kompilacji USE_FULL_LL_DRIVER.
    Aby móc używać interfejsów API inicjalizacji LL, dodaj ten przełącznik w preprocesorze kompilatora łańcucha narzędzi.
  4. Czy istnieje jakiś szablon projektu dla urządzeń peryferyjnych MRSUBG/LPAWUR?amples?
    Aby utworzyć nowy MRSUBG lub LPAWUR, wykonaj następujące czynności:ampprojekt, albo zacznij od szkieletu projektu udostępnionego w \Pr ojects\NUCLEO-WL33CC\Examples\MRSUBG lub \Projekty\NUCLEO-WL33CC\Examples\LPAWUR lub z dowolnego dostępnego projektu w tych samych katalogach.
  5. W jaki sposób STM32CubeMX może wygenerować kod w oparciu o wbudowane oprogramowanie?
    STM32CubeMX ma wbudowaną wiedzę na temat mikrokontrolerów STM32, w tym ich urządzeń peryferyjnych i oprogramowania, co pozwala mu na zapewnienie użytkownikowi graficznej reprezentacji i generowanie plików *.h lub *.c files w oparciu o konfigurację użytkownika.

Historia rewizji

Tabela 3. Historia zmian dokumentu

Data Rewizja Zmiany
29-marca-2024 1 Pierwsze wydanie.
30-paź-2024 2 Pełna integracja STM32CubeWL3 in Kostka STM32. Zaktualizowano:

REMOVED:

  • Narzędzia komputerowe, w tym Nawigator, Interfejs graficzny STM32WL3, I Interfejs graficzny sekwencera MR-SUBG
  • W jaki sposób WiSE-Studio IOMapper może generować kod na podstawie oprogramowania wbudowanego?
  • Czy Navigator umożliwia dostęp do zasobów pakietów oprogramowania?

Dokumenty / Zasoby

Pakiet oprogramowania ST STM32WL3x [plik PDF] Instrukcje
Pakiet oprogramowania STM32WL3x, STM32WL3x, Pakiet oprogramowania, Pakiet

Odniesienia

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *