Od mikrokontrolerów do układów radiowych. Bluetooth z układami STM32WB

Od mikrokontrolerów do układów radiowych. Bluetooth z układami STM32WB

W ramach artykułu prezentujemy najważniejsze informacje na temat układów STM32WB, które są interesującą propozycją dla osób mających już doświadczenie z STM32 i chcących dodać do projektowanych urządzeń komunikację BLE.

Historia układów STM32 to okres trwający już ponad 10 lat. Jej początek sięga roku 2008, kiedy to firma ARM stworzyła pierwszy rdzeń z rodziny Cortex-M, a więc Cortex-M3. Firma STMicroelectronics widząc duży potencjał tego rozwiązania szybko przystąpiła do projektowania opartych na nim mikrokontrolerów. Na bazie tego rdzenia powstały trzy rodziny układów: STM32F1, STM32L1 i STM32F2. Każda z tych rodzin stała się początkiem osobnej kategorii produktów: mikrokontrolerów ogólnego przeznaczenia, mikrokontrolerów o niskim poborze prądu oraz mikrokontrolerów o wysokiej wydajności obliczeniowej. W następnych latach firma ARM opracowywała kolejne rdzenie (Cortex-M0, Cortex-M0+, Cortex-M4F, Cortex-M7, Cortex-M33) i za każdym razem powstawała co najmniej jedna rodzina STM32 rozszerzając wcześniej zdefiniowane trzy kategorie: STM32F0, STM32L0, STM32G0, STM32F3, STM32F4, STM32L4, STM32G4, STM32L5, STM32F7 i STM32H7.

Tak kształtowała się oferta mikrokontrolerów STM32 do roku 2018, kiedy to nastąpiła znaczna zmiana poprzez wprowadzenie zupełnie nowej, czwartej kategorii: układów radiowych które łączą mikrokontroler z nadajnikiem-odbiornikiem do komunikacji bezprzewodowej. Pierwszym takim rozwiązaniem jest rodzina STM32WB pozwalająca na komunikację w paśmie 2,4 GHz.

Rysunek 1. Grafika z osią czasu pokazującą w którym roku powstały rodziny STM32 (kolor niebieski – ogólnego przeznaczenia, kolor zielony – o niskim poborze prądu, kolor różowy – o wysokiej wydajności, kolor fioletowy – radiowe)

Ewolucję układów STM32 pokazano na rysunku 1.

Architektura STM32WB

Z technicznego punktu widzenia istnieją dwie możliwości wytworzenia jednoukładowego rozwiązania łączącego mikrokontroler i radio: rozwiązanie typu SiP oraz rozwiązanie typu SoC. W układzie SiP (System in Package) występują dwie krzemowe struktury półprzewodnikowe. Jedna to mikrokontroler, druga to radio. Obie struktury wykonane są w różnych procesach technologicznych, a ich połączenie zrealizowane jest za pomocą linii sygnałowych wewnątrz obudowy (wire bonding). W przeciwieństwie do układu SiP, w układzie SoC (System on Chip) znajduje się jedna krzemowa struktura półprzewodnikowa, która łączy mikrokontroler i radio. STM32WB to układ typu SoC. Naturą układów SoC jest jeden użyty proces technologiczny.

W STM32WB zastosowano proces Ultra Low Power 90 nm firmy TSMC.

Przyjrzyjmy się bliżej jakie elementy zostały zintegrowane w układach SoC STM32WB. Część związana z mikrokontrolerem ma DNA zaczerpnięte z STM32. Jest to ogromna zaleta dla osób mających doświadczenie w pracy z STM32, ponieważ będą mogły one wykorzystać swoją dotychczasową wiedzę w pracy z STM32WB. Blok mikrokontrolera STM32WB najbardziej zbliżony jest do konstrukcji STM32L4, z której przeniesione zostały liczne elementy takie jak rdzeń ARM Cortex-M4F, drzewo zegarowe, organizacja pamięci, liczne peryferia i blok zarządzania zasilaniem.

Drugim po mikrokontrolerze blokiem obecnym w STM32WB jest radio. Jest to układ obsługujący komunikację w paśmie 2,4 GHz. Warto dodać, że element o nazwie balun jest już zintegrowany w radiu, zatem nie ma potrzeby użycia go w formie osobnego elementu usytuowanego obok STM32WB. Radio pozwala na transmisję danych z mocą nadawania do +6 dBm.

Oprócz mikrokontrolera i radia w STM32WB występuje jeszcze jeden zintegrowany blok, kluczowy z punktu widzenia architektury. Jest to rdzeń ARM Cortex-M0+. Jest to zatem drugi rdzeń, obok wspomnianego już wcześniej ARM Cortex-M4F. Taka dwurdzeniowa koncepcja ma głębokie uzasadnienie. Cortex-M4F to rdzeń aplikacyjny, który wykonuje program napisany przez programistę. Z kolei Cortex-M0+ to rdzeń radiowy, który wykonuje stos radiowy dostarczony przez firmę STMicroelectronics (może to być stos BLE, ZigBee, Thread lub wariant konkurencyjny łączący te stosy tzn. BLE i ZigBee oraz BLE i Thread). Rdzeń Cortex-M0+ i radio są zatem niedostępne bezpośrednio dla programisty, niemniej jednak dzięki współdzielonej pamięci i specjalnym przerwaniom można uzyskać efektywną komunikację między rdzeniami i obiema aplikacjami. Tak zdefiniowany model ma dwie istotne zalety:

  1. izolacja rdzenia Cortex-M0+ i części radiowej pozwala na korzystanie z certyfikacji uzyskanej dla warstwy sprzętowej i programowej (stosów radiowych) przez STMicroelectronics;
  2. rdzeń Cortex-M0+ całkowicie odciąża rdzeń Cortex-M4F z zadań związanych z obsługą stosu radiowego, dzięki czemu programista tworząc aplikację nie ma ograniczeń związanych z tymi zadaniami.
Rysunek 2. Architektura STM32WB: układ SoC łączący mikrokontroler STM32L4 i część radiową wraz z zaznaczeniem dwurdzeniowości (Cortex-M4F: rdzeń aplikacyjny, Cortex-M0+: rdzeń radiowy)

Schemat ilustrujący architekturę SoC układów STM32WB pokazano na rysunku 2.

Elementy składowe STM32WB

W układach SoC STM32WB można wyróżnić szereg zasobów, które należą do osobnych obszarów funkcjonalnych: CPU, pamięć, część radiowa, liczniki, interfejsy komunikacyjne, zasoby analogowe, peryferia interfejsu użytkownika oraz peryferia zwiększające bezpieczeństwo aplikacji. Odpowiedni schemat blokowy ilustrujący elementy składowe STM32WB został pokazany na rysunku 3.

Rysunek 3. Schemat blokowy układów STM32WB

Zastosowany w STM32WB CPU 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 STM32WB zastosowano jednostkę Cortex-M4F, która pod kątem wydajności plasuje się pomiędzy prostymi rdzeniami Cortex-M0/M0+, a rdzeniem Cortex-M7 o znacznej wydajności obliczeniowej. Cortex-M4F składa się jednostki przetwarzania danych (procesor), interfejsu do programowania/debugowania JTAG i SWD, bloku przerwań NVIC, modułu MPU, jednostki FPU do obliczeń zmiennoprzecinkowych oraz licznika systemowego Systick. Maksymalna częstotliwość pracy rdzenia w STM32WB to 64 MHz.

Odnośnie pamięci, do dyspozycji jest do 1 MB pamięci Flash oraz do 256 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 STM32WB 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ą. Wspomniane zasoby pamięci to wartości maksymalne, co znaczy że dostępne są również warianty STM32WB z mniejszą pamięcią, przewidziane dla prostych aplikacji, jednocześnie bardziej atrakcyjne pod względem ceny.

Wydajność układu STM32WB 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ć użyty 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 oraz ma bardzo przydatną cechę w postaci możliwości cyklicznego wybudzania mikrokontrolera z trybu low-power. Ostatnimi rodzajami timera dostępnymi w STM32WB 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, U(S)ART oraz USB. Grupę tą uzupełnia interfejs Quad SPI (Q-SPI) przeznaczony dla zewnętrznych pamięci Flash oraz interfejs LP-UART, który może być aktywny w trybie low-power umożliwiając odbiór danych, jak też wybudzenie układu.

STM32WB dysponuje też zasobami analogowymi. Mamy do dyspozycji przetwornik A/C typu SAR o domyślnej rozdzielczości 12 bitów, ale w razie potrzeby z pomocą sprzętowego oversamplingu możliwe jest rozszerzenie liczby bitów wyniku do 16. Przetwornik może pracować z szybkością do 4,26 Msps i w zależności od typu obudowy ma do dyspozycji od 13 do 19 kanałów pomiarowych (w tym trzy wewnętrzne: VREF, VBAT, czujnik temperatury). 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) i 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 i czujnik temperatury.

Mocną stroną STM32WB są peryferia wspomagające budowę interfejsu użytkownika. Dostępny jest kontroler wyświetlacza LCD o wymiarach 8×40 segmentów. Dodatkowo do dyspozycji pozostaje kontroler dotykowy, pozwalający na obsługę przycisków pojemnościowych.

W układach STM32WB 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 96-bitowy identyfikator oraz blok do przechowywania kluczy i do zarządzania nimi.

Część radiowa układu STM32WB to nadajnik-odbiornik RF, który pozwala na transmisję danych drogą radiową w paśmie 2,4 GHz. Radio składa się z dwóch kontrolerów: BLE oraz IEEE 802.15.4. Dzięki temu wspierane standardy to BLE (do wersji 5.2), ZigBee (do 3.0) oraz Thread. Radio kontrolowane jest przez specjalny rdzeń Cortex-M0+, który może pracować z częstotliwością do 32 MHz.

Idealne rozwiązanie dla aplikacji energooszczędnych

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

Rysunek 4. Tryby pracy STM32WB wraz z poborem prądu oraz czasem wybudzenia

Jako pierwszą rzecz w aspekcie energooszczędności należy wymienić tryby pracy. Zestawienie z listą trybów pracy STM32WB, ich poborem prądu oraz czasem wybudzenia udostępniono na rysunku 4. Podstawowym trybem pracy jest tryb RUN, w którym kod aplikacji jest wykonywany oraz wszystkie zasoby mogą normalnie pracować. W trybie SLEEP rdzeń Cortex-M 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.

Tryby 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.

Drugą rzeczą po trybach pracy przydatną w aplikacjach low-power są peryferia i ich efektywne wykorzystanie do wybudzania układu. W STM32WB wszystkie peryferia zdolne do generowania przerwania mogą wybudzać układ z trybu SLEEP lub STOP1. Nawet w trybie STOP2 pewna grupa peryferiów ma ciągle 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 zdefiniowango czasu), linie EXTI (wybudzenie po zmianie poziomu sygnału na linii I/O).

Trzecią funkcjonalnością, o której warto wspomnieć, jest wewnętrzny obwód zasilania w STM32WB. W klasycznych mikrokontrolerach STM32 występuje regulator LDO. W nowszych seriach STM32, w tym w STM32WB do dyspozycji jest LDO oraz dodatkowo SMPS, a więc przetwornica napięcia. W trybie aktywnym mamy wybór czy używać SMPS (niższy pobór prądu), czy LDO (mniejszy BOM – Bill Of Material). W trybach low-power wyboru już nie ma, gdyż STM32WB korzysta wtedy z LDO.

Oferta STM32WB

Rodzina układów STM32WB składa się z trzech serii: STM32WB55, STM32WB35 oraz STM32WB15. Różnią się one między sobą kilkoma parametrami (zestawienie porównawcze pokazano w tabeli 1). Pierwszy to funkcjonalność bloku radiowego. STM32WB55 daje dużą elastyczność pod tym względem. Możliwa jest komunikacja BLE, ZigBee i Thread. Dostępne są tryby z użyciem samodzielnie każdego ze stosów, jak też łączone (konkurencyjne): BLE z ZigBee i BLE z Thread. STM32WB35 nie wspiera trybów konkurencyjnych, a STM32WB15 nie oferuje również komunikacji ZigBee i Thread, zatem zostaje tylko wsparcie dla BLE.

Drugi parametr rozróżniający układy STM32WB to pojemność pamięci. Seria STM32WB55 oferuje do 1 MB pamięci FLASH i 256 kB pamięci SRAM. STM32WB35 ma skromniejsze zasoby: do 512 kB pamięci FLASH oraz 96 kB pamięci SRAM. Finalnie STM32WB15 ma najmniej zasobów pamięci: 320 kB Flash oraz 48 kB SRAM. Zestaw peryferiów wszystkich układów STM32WB jest zbliżony i między seriami występują jedynie drobne różnice. Należy wskazać przede wszystkim, że serie STM32WB35 i STM32WB15 nie mają kontrolera LCD, a dodatkowo seria STM32WB15 nie dysponuje interfejsem USB.

Różnice między układami STM32WB zauważyć można też na poziomie trybów pracy. W przypadku STM32WB55 i STM32WB35 dostępny jest pełen wachlarz trybów pracy: RUN, SLEEP, STOP1, STOP2, STANDBY i SHUTDOWN. Z kolei STM32WB15 ma ograniczenie w postaci braku trybów STOP.

Finalnie parametrem rozróżniającym układy STM32WB jest typ obudowy. Seria STM32WB55 oferuje wariant QFN48, QFN68, WLCSP100 oraz BGA129. Z kolei serie STM32WB35 i STM32WB15 nie dają możliwości wyboru typu obudowy, gdyż dostępny jest tylko jeden wariant – QFN48. Co istotne, w wariancie QFN48 wszystkie trzy serie tzn. STM32WB55, STM32WB35 i STM32WB15 są ze sobą kompatybilne pod kątem układu wyprowadzeń, tak więc migracja między nimi nie wpływa na konieczność modyfikacji projektu płytki PCB.
STM32WB55, STM32WB35 i STM32WB15 to serie regularne. Na podstawie każdej z nich powstała dodatkowo seria Value Line. Są to odpowiednio układy STM32WB50, STM32WB30 i STM32WB10. Każda para serii regularnej i Value Line korzysta na płaszczyźnie półprzewodnikowej z tego samego krzemu. Różnica natomiast występuje na płaszczyźnie testów po produkcji. Seria regularna przechodzi pełny zestaw testów, natomiast seria Value Line poddawana jest uproszczonej procedurze testowej. W wyniku tego mamy do czynienia z układami o nieco gorszych parametrach, ale bardziej konkurencyjnymi pod kątem ceny.

Różnice między seriami regularnymi i Value Line pokazano w tabeli 2. Zestawienie oferty układów STM32WB zaprezentowano na rysunku 5.

Rysunek 5. Oferta układów STM32WB

Rozróżniono układy regularne (STM32WB55, STM32WB35, STM32WB15), układy Value Line (STM32WB50, STM32WB30, STM32WB10), różne opcje pamięci Flash (256 kB, 320 kB, 512 kB, 640 kB, 1 MB) oraz różne warianty obudowy (QFN48, QFN68, WLCSP100, BGA129).

Narzędzia

Firma STMicroelectronics przygotowała dla układów STM32WB kompleksowy zestaw narzędzi, który jest spójny z ekosystemem od lat dostępnym dla innych rodzin STM32. W warstwie sprzętowej są to platformy z serii Nucleo. NUCLEO-WB55RG i NUCLEO-WB15CC to płytki wyposażone w układy STM32WB55 (obudowa QFN68) i STM32WB15 (obudowa QNF48). Układy otoczone są minimalnym zestawem podzespołów wymaganych do poprawnej pracy (kondensatory na liniach zasilania, elementy pasywne do wbudowanej przetwornicy, antena itp.).

Większość wyprowadzeń jest dostępnych z poziomu gniazd sygnałowych typu Morpho oraz Arduino. Dodatkowo elementem wyposażenia jest prosty interfejs użytkownika (diody LED, przyciski) oraz wbudowany programator/debuger ST-Link. Nucleo to bardzo przystępna cenowo platforma sprzętowa pomocna zarówno do testowania możliwości mikrokontrolera, jak też przydatna w budowaniu prototypu urządzenia. Dostępny jest też bardziej rozbudowany zestaw Nucleo o nazwie P-NUCLEO-WB55. Składa się on z płytki NUCLEO-WB55RG oraz dodatkowo oferuje drugą płytkę – USB dongle z STM32WB55 (obudowa QFN48).

W warstwie programowej ekosystem narzędzi nosi nazwę STM32Cube. Składa się na niego kilka elementów: graficzny konfigurator mikrokontrolera i generator kodu STM32CubeMX, bazujące na Eclipse i GCC środowisko programistyczne STM32CubeIDE oraz pakiet bibliotek do peryferiów, stosów radiowych i przykładowych aplikacji o nazwie STM32CubeWB. Warto też pamiętać o dwóch opcjonalnych, ale bardzo pomocnych narzędziach: programatorze STM32CubeProgrammer oraz aplikacji STM32CubeMonitor-RF, która może posłużyć do sterowania i monitorowania części radiowej STM32WB. Zestawienie elementów ekosystemu narzędzi programowych STM32Cube dla STM32WB pokazano na rysunku 6.

Rysunek 6. Ekosystem narzędzi programowych dla STM32WB

Podsumowanie

STM32WB to pierwsza grupa układów typu SoC w ofercie STM32. Mimo że układy reprezentują zupełnie nową kategorię radiową, to można je postrzegać jako po prostu kolejną serię STM32, gdyż u podstaw tych układów leży mikrokontroler STM32L4, który połączony jest z blokiem radiowym 2,4 GHz. Zastosowanie uniwersalnego nadajnika-odbiornika radiowego sprawia, że STM32WB może być rozwiązaniem dla aplikacji wymagających nie tylko komunikacji BLE, ale też ZigBee lub Thread.

W osobnym artykule tego wydania Elektroniki Praktycznej został zaprezentowany artykuł opisujący jak rozpocząć pracę z STM32WB i jak w kilku krokach stworzyć pierwszą aplikację z komunikacją BLE.

Szymon Panecki
STMicroelectronics
szymon.panecki@st.com

Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2021

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik maj 2022

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2022

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje kwiecień 2022

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna maj 2022

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2022

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów