STM32WL czyli mikrokontroler + sub-GHz RF + LoRa w jednej obudowie

Elementy składowe STM32WL

W układach STM32WL wyróżnić można kilka bloków funkcjonalnych. Są to procesor, pamięć, część radiową, liczniki, interfejsy komunikacyjne, zasoby analogowe oraz peryferia zwiększające bezpieczeństwo aplikacji. Schemat blokowy ilustrujący elementy składowe STM32WL pokazano na rysunku 5.

Zastosowany w STM32WL procesor to rdzeń ARM z grupy Cortex-M. Nie mogłoby być inaczej, ponieważ jednostki Cortex-M są znakiem rozpoznawczym rodziny układów STM32 i ich głównym elementem wspólnym. W przypadku STM32WL zastosowano jednostkę Cortex-M4, która pod kątem wydajności plasuje się pomiędzy prostymi rdzeniami Cortex-M0/M0+, a rdzeniem Cortex-M7. Cortex-M4 składa się jednostki przetwarzania danych (CPU), interfejsu do programowania/debugowania JTAG i SWD, bloku przerwań NVIC, modułu MPU oraz licznika systemowego Systick. Maksymalna częstotliwość pracy rdzenia w STM32WL to 48 MHz.

Odnośnie pamięci, do dyspozycji jest do 256 kB pamięci Flash oraz do 64 kB pamięci SRAM. Tak znaczna pojemność pamięci daje nie tylko komfort pracy, ale też możliwość definiowania bogatej funkcjonalności aplikacji. W tym kontekście dla STM32WL można z jednej strony przewidzieć liczne zadania typowe dla mikrokontrolera (w tym np. obsługę interfejsów komunikacyjnych czy też akwizycję sygnałów analogowych), a z drugiej strony można z powodzeniem wkomponować zadania związane z komunikacją radiową, która może wykorzystywać znacznych rozmiarów protokół komunikacyjny. Wspomniane zasoby pamięci to wartości maksymalne, co znaczy że dostępne są również warianty z mniejszą pamięcią, przewidziane dla prostych aplikacji.

Moduły peryferyjne STM32WL

Wydajność układu STM32WL zwiększa jednostka ART Accelerator, która działając jak pamięć cache redukuje liczbę tak zwanych cykli wait states dla pamięci Flash. Innym elementem architektury związanym z pamięcią jest moduł DMA. Element ten może zostać wykorzystany do transferu danych z peryferiów do pamięci SRAM. W tym samym czasie rdzeń może realizować inne zadania, co finalnie również przekłada się na podniesienie wydajności układu.

Układy licznikowe reprezentowane są przez pięć typów timerów. Pierwszy typ to timery uniwersalne (ogólnego przeznaczenia) 32-bitowe oraz 16-bitowe. Drugim rodzajem układu licznikowego jest 16-bitowy, zaawansowany timer dysponujący dodatkowymi funkcjami w porównaniu do timerów ogólnego przeznaczenia. Kolejnym rodzajem licznika jest LP-Timer, który jest bardziej energooszczędny od swoich standardowych odpowiedników. Ma też bardzo przydatną cechę w postaci możliwości cyklicznego wybudzania mikrokontrolera z trybu low-power. Ostatnimi rodzajami timera dostępnymi w STM32WL jest RTC (zegar czasu rzeczywistego) oraz watchdog.

Jeśli mowa o typowych zasobach mikrokontrolerowych, to należy wspomnieć również o interfejsach komunikacyjnych. Domena ta prezentuje się dość klasycznie – do dyspozycji są standardowe interfejsy takie jak SPI, I2C oraz U(S)ART. Grupę tą uzupełnia interfejs LP-UART, który może być aktywny w trybie low-power umożliwiając odbiór danych, jak też wybudzenie układu.

Peryferia analogowe

Mocną stroną STM32WL są zasoby analogowe. Mamy tu do dyspozycji dwa przetworniki: A/C i C/A. Przetwornik A/C typu SAR ma domyślnie rozdzielczość 12 bitów. W razie potrzeby z pomocą sprzętowego oversamplingu możliwe jest rozszerzenie liczby bitów wyniku do 16. Może pracować z szybkością do 2,5 Msps i dysponuje piętnastoma kanałami pomiarowymi (dwanaście połączonych z liniami I/O oraz trzy wewnętrzne: VREF, VBAT, czujnik temperatury). Przetwornik C/A charakteryzuje się rozdzielczością 12 bitów (możliwość redukcji do 8 bitów) oraz dysponuje jednym kanałem połączonym z linią I/O. Przydatnym elementem analogowym może okazać się inne peryferium – VREFBUF. Jest to źródło napięcia o konfigurowalnej wartości (do wyboru 2,048 V lub 2,5 V). Może służyć jako napięcie odniesienia (referencyjne) dla przetwornika A/C i komponentów zewnętrznych (poprzez pin VREF+). Zasoby analogowe uzupełniają komparatory, czujnik temperatury oraz interfejs do przycisków pojemnościowych.

W układach STM32WL przewidziano również zasoby wpływające na bezpieczeństwo aplikacji. Składają się na nie: jednostka szyfrująca z algorytmem AES o długości klucza do 256 bitów, generator liczb losowych, moduł obliczający sumę kontrolną, zabezpieczenie zapisu i odczytu pamięci, unikalny identyfikator oraz generator publicznych kluczy.

Moduł radiowy STM32WL

Część radiowa układu STM32WL to nadajnik-odbiornik RF, który funkcjonalnie jest tożsamy z rozwiązaniem SX1261/2 firmy Semtech. Pozwala on na transmisję danych drogą radiową w paśmie 150 – 960 MHz. Komunikacja może odbywać się z użyciem jednej z następujących modulacji: LoRa, (G)FSK, (G)MSK oraz BPSK (tylko nadawanie). W warstwach wyższych możliwe jest zaimplementowanie własnego protokołu, bądź używanie jednego ze standardów rynkowych, w tym np. LoRaWAN, Sigfox lub Wireless M-Bus. Radio udostępnia dwie końcówki mocy wyjściowej (do +22 dBm oraz do +15 dBm). Umożliwia to spełnienie regulacji dotyczących maksymalnej mocy nadawania na całym świecie. Co istotne, część radiowa dołączona jest do magistrali systemowej przez interfejs SPI. Oznacza to, że z punktu widzenia programisty STM32WL może być traktowany jak dwa oddzielne układy: mikrokontroler i układ radiowy, połączone dedykowanym interfejsem komunikacyjnym.

Rys. 5. Zasoby zintegrowane w układzie STM32WL

Idealne rozwiązanie dla aplikacji energooszczędnych

Rdzeń i peryferia to nie jedyne elementy, które układy STM32WL zapożyczyły od mikrokontrolerów STM32L4. Bardzo zbliżony jest też blok zarządzania energią, dzięki czemu STM32WL to idealne układy dla aplikacji zasilanych z baterii. Przyjrzyjmy się głównym rozwiązaniom z tego zakresu.

Jako pierwszą rzecz w aspekcie energooszczędności należy wymienić tryby pracy. Zestawienie z listą trybów pracy STM32WL, ich poborem prądu oraz czasem wybudzenia udostępniono na rysunku 6. Podstawowym trybem pracy jest tryb RUN, w którym kod aplikacji jest wykonywany oraz wszystkie zasoby mogą normalnie pracować. W trybie SLEEP rdzeń Cortex-M4 jest wyłączony, niemniej jednak zegary i peryferia mogą ciągle działać (np. Timer może wyzwalać przetwornik A/C, a moduł DMA transferować dane z przetwornika do pamięci SRAM). W trybach RUN i SLEEP można regulować częstotliwość pracy systemu wpływając na wydajność i pobór prądu.

Specjalne tryby energooszczędne

STOP1 i STOP2 to klasyczne tryby low-power, podczas których działanie peryferiów ogranicza się zasadniczo do czekania na zdarzenie, które wygeneruje przerwanie (np. interfejsy, timery, linie I/O) i spowoduje wybudzenie układu oraz wznowienie wykonania kodu. Tryby te oferują niski pobór prądu, krótki czas wybudzenia oraz pełne podtrzymanie zawartości pamięci SRAM.

STANDBY oraz SHUTDOWN to tryby o najniższych poborach prądu, co jednak wiąże się z pewnymi ograniczeniami: dłuższym czasem wybudzenia, mniejszą liczbą peryferiów mogących wybudzić układ, przynajmniej częściowym brakiem podtrzymania zawartości pamięci SRAM i koniecznością wykonania resetu w momencie wybudzenia. VBAT z kolei to specjalny tryb, który stosowany jest do podtrzymania domeny backup w warunkach gdy główne zasilanie (linie VDD) jest odłączone.

Rys. 6. Tryby pracy STM32WL wraz z poborem prądu oraz czasem wybudzenia

Drugą rzeczą po trybach pracy przydatną w aplikacjach low-power są peryferia i ich efektywne wykorzystanie do wybudzania układu. W STM32WL wszystkie peryferia zdolne do generowania przerwania mogą wybudzać układ z trybu SLEEP lub STOP1. Nawet w trybie STOP2 pewna grupa peryferiów ciągle ma tą zdolność. Są to przede wszystkim: LP-UART (wybudzenie poprzez odbiór danych), LP-Timer (wybudzanie cykliczne co zdefiniowany interwał czasu), RTC (wybudzanie cykliczne co zdefiniowany interwał czasu lub jednorazowe wybudzenie – tak zwany alarm), komparator (wybudzenie po tym jak napięcie na wejściu przekroczy określony poziom), watchdog (wybudzenie po upłynięciu zdefiniowanego czasu), a także linie EXTI (wybudzenie po zmianie poziomu sygnału na linii I/O).

Trzecią rzeczą wartą wymienienia jest wewnętrzny obwód zasilania w STM32WL. W klasycznych mikrokontrolerach STM32 występuje regulator LDO. Nowsze serie STM32, w tym w STM32WL oferują LDO oraz dodatkowo SMPS, a więc przetwornicę napięcia. W trybie aktywnym mamy wybór czy używać SMPS (niższy pobór prądu), czy LDO (mniejszy BOM). W trybach low-power wyboru już nie ma, gdyż STM32WL korzysta wtedy z LDO.

Oferta STM32WL

Rodzina układów STM32WL składa się z modeli, które różnią się od siebie kilkoma parametrami. Pierwszym z nich jest pojemność pamięci. Warianty są trzy i co należy podkreślić, skalowalna jest zarówno pamięć Flash jak i SRAM. Najmniejszy pod względem pojemności pamięci układ ma 64 kB Flash oraz 20 kB SRAM. Wariant środkowy to 128 kB Flash oraz 48 kB SRAM. Finalnie układ z maksymalną pojemnością pamięci dysponuje 256 kB Flash oraz 64 kB SRAM.

Obudowy układów

Kolejny parametr rozróżniający układy STM32WL to rodzaj obudowy. Pierwszy typ to BGA73. Obudowa ta ma gabaryty 5 x 5 mm oraz raster (odległość pomiędzy kulkami) 0,5 mm. Obudowa udostępnia łącznie 73 piny (w tym 43 linie wejścia-wyjścia). Jest to ciekawa propozycja dla aplikacji, w których liczą się małe rozmiary elektroniki oraz w których konieczne może być użycie wielu wyprowadzeń do podłączenia licznych elementów peryferyjnych.

Drugi typ obudowy to QFN48. Obudowa ta ma gabaryty 7 x 7 mm oraz raster 0,5 mm. Obudowa oferuje łącznie 48 piny (w tym 29 linii wejścia-wyjścia). Specyfika obudowy QFN jest taka, że piny umieszczone są tylko na krawędziach obudowy, nie pod nią, jak to ma miejsce dla obudowy BGA. W konsekwencji rozprowadzenie ścieżek na płytce PCB jest prostsze, a co za tym idzie projekt PCB jest mniej skomplikowany. Obudowa QFN48 jest zatem ciekawą alternatywą dla obudowy BGA73, na korzyść której przemawia niższy koszt płytki PCB. Dodatkowo montaż obudowy QFN i weryfikacja poprawnego przylutowania wyprowadzeń nie wymaga tak specjalistycznego sprzętu jak w przypadku obudowy BGA.

Każdy z typów obudowy oferuje trzy wcześniej wymienione warianty pojemności pamięci Flash/SRAM. Łącznie oferta STM32WL liczy zatem sześć układów. Co istotne, biorąc pod uwagę dany typ obudowy, układy z różną pojemnością pamięci są ze sobą kompatybilne pod względem zarówno sprzętowym (pin-to-pin), jak też programowym (kod aplikacji). Kompletną ofertę STM32WL pokazano na rysunku 7.

Rys. 7. Oferta układów STM32WL: dwa typy obudowy, trzy warianty pojemności pamięci

Podsumowanie

W ramach podsumowania przywołajmy najważniejsze zalety STM32WL przedstawione w artykule:

  • STM32WL to pierwszy na świecie układ typu SoC łączący mikrokontroler z nadajnikiem-odbiornikiem radiowym Semtech. W efekcie jest to bardzo atrakcyjne rozwiązanie dla aplikacji LoRa i LoRaWAN (pod względem ceny, poboru prądu, miniaturyzacji, BOMu).
  • Oprócz LoRy STM32WL oferuje trzy inne modulacje. Dzięki temu jest to uniwersalny układ dla aplikacji sub-GHz, np. dla Sigfox, Wireless M-Bus lub Mesh.
  • STM32WL wykorzystuje w dużym stopniu rozwiązania z mikrokontrolerów STM32L4, a zatem jest to idealne rozwiązanie dla aplikacji zasilanych z baterii.
  • STM32WL to połączenie dwóch dobrze znanych podzespołów: STM32 i radia Semtech, dodatkowo połączone wewnątrz krzemu w prosty sposób – interfejsem SPI. Osoby mające doświadczenie z tymi układami będą mogły szybko rozpocząć pracę z STM32WL.
  • STM32WL to nie jeden układ, a rodzina układów. Do wyboru są dwa typy obudowy, w ramach których występuje efekt skalowalności pod względem pamięci Flash i SRAM. Pozwala to wybrać wariant optymalny pod kątem wymagań danej aplikacji.
  • STM32WL tak jak wszystkie układy STM32 objęty jest tak zwanym longevity commitment. Jest to gwarancja produkcji przez 10 lat, odnawiana na początku każdego roku.

Firmy zainteresowane rozpoczęciem pracy z STM32WL zapraszamy do kontaktu z autorem artykułu na adres e-mail szymon.panecki@st.com

O autorze