Mikrokontrolery z rodziny STM32WB
Moduł IPCC
Do wymiany danych pomiędzy rdzeniami przeznaczono kolejny moduł peryferyjny IPCC (Inter-Processor Communication Controller). Komunikacja może być jednokierunkowa (simplex), lub dwukierunkowa (half duplex). W trybie simplex dedykowany kanał transmisji pozwala na przesyłanie wiadomości w jednym kierunku od jednostki A do jednostki B. Tryb half duplex wykorzystuje jeden kanał transmisji do przesyłania wiadomości i potwierdzeń naprzemiennie w obu kierunkach pomiędzy obiema jednostkami. Przesyłanie wiadomości wiąże się z generowaniem przerwań. IPCC nie ma swoich dedykowanych buforów danych i dane przeznaczone do przesyłania należy umieścić we współdzielonej pamięci RAM.
Moduł jest częścią modułu AHB Slave i logicznie można go podzielić na 2 części: AHB Interface i układ zarządzający przerwaniami Interrupt management – rysunek 9.
Może być maksymalnie sześć kanałów, a każdy z nich ma swój znacznik statusu używany jako status wysyłania dla jednego z CPU oraz status odbierania wiadomości dla drugiego z CPU. Ponieważ rejestr statusowy jest wspólny dla obu CPU, to zabezpieczono go przed konfliktami dostępu.
Każdy z kanałów transmisji ma zdefiniowany kierunek przepływu danych od CPU nadawcy do CPU odbiorcy. CPU nadawcy może sygnalizować zajęcie kanału przez ustawienie bitu statusu zajętości CHnF. CHnF ustawia się przez ustawienie bitu CHnS sygnalizując zajęcie kanału przez CPU nadawcy (occupied). CPU odbiorcy może zasygnalizować bitem statusowym CHnF zwolnienie kanału transmisji zerując bit CHnC (free). Każda zmiana bitu statusowego generuje odpowiednie przerwanie. Zostało to pokazane na rysunku 10.
Rysunek 10. Sterowanie przepływem informacji w kanale transmisyjnym IPCC
Transmisja w trybie simplex
Proces wysyłania danych w trybie simplex pokazano na rysunku 11.
Rysunek 11. Wysyłanie danych w trybie simplex
Najpierw układ odczytuje status kanału. Jeżeli kanał jest wolny, to dane są zapisywane do bufora kanału i status kanału jest zmieniany na zajęty. Jeżeli przy próbie przesłania danych status wskazuje na stan zajęty, to odmaskowane zostaje przerwanie TX Free. Kiedy kanał się zwolni, przychodzi przerwanie TX Free, przerwanie to zostaje zamaskowane i do bufora kanału można zapisać dane. Cała procedura nie blokuje procesora w przypadku zajętości kanału. Po jego zwolnieniu dane są przesyłane automatycznie.
Rysunek 12. Odbiór danych w trybie simplex
Po zapisaniu danych do bufora kanału zgłaszane jest przerwanie RX Occupied w CPU pełniącym rolę odbiorcy danych. W procedurze przerwania odczytywany jest status kanału, określane jest który kanał jest zajęty i maskowane jest przerwanie dla zajętego kanału. Po tych czynnościach można odczytać bufor kanału wykrytego jako zajęty. Po odczytaniu ustawia się status kanału jako wolny i odmaskowuje przerwanie, żeby przygotować moduł na odbiór kolejnej porcji danych.
Transmisja w trybie half-duplex
Na rysunku 13 pokazano cykl przesyłania wiadomości i odczytywania potwierdzenia w trybie half- duplex w przypadku, gdy kanał jest wolny.
Rysunek 13. Przesyłanie wiadomości i odbieranie potwierdzenia w trybie half-duplex
Sprzętowe semafory i moduł IPCC to dwa mechanizmy podobne do semaforów i kolejek w klasycznych systemach RTOS. Programiści układów wbudowanych programujący w RTOS nie powinni mieć większych problemów z implementacją wymiany danych i ich synchronizacji pomiędzy zadaniami uruchamianymi na niezależnych CPU mikrokontrolerów STM32WB.
Interfejs radiowy
Jak już wspomniałem, rdzeń CPU2 ARM Cortex-M0+ połączono z modułem transceivera radiowego pracującym w paśmie 2,4 GHz. Oba te elementy umożliwiają budowę łącza radiowego pracującego w standardzie Bluetooth Low Energy (BLE) v5.0 oraz IEEE 802.15.4-2011.
Protokół BLE ma budowę warstwową i składa się z warstwy fizycznej (psyhical layer), warstwy łącza danych (link layer), oraz warstwy HCI (Host Controller Interface). W wyższych warstwach umieszczono GATT (Generic Attribute Profile) oraz GAP (Generic Access Profile).
Bluetooth Low Energy (BLE) w wersji 5.0 obsługuje m.in.:
- Użycie profili GAP: central, peripherial, observer i broadcaster
- Klienta i serwer ATT/GATT,
- Kodowanie AES-128 w warstwie łącza danych.
Obsługę protokołu (stos BLE) jest umieszczona w pamięci Flash i uruchamiana na procesorze CPU2 z rdzeniem ARM Cortex-M0+. Umożliwia to stosowanie komercyjnego firmware, na przykład dostarczonego przez ST lub stosowanie własnych, niestandardowych rozwiązań. Wsparcie standardu IEEE® 802.15.4-2011 pozwala na implementację protokołów radiowych o mniejszej przepustowości danych, takich jak ZigBee.
Umieszczony w strukturze mikrokontrolera moduł transceivera to praktycznie kompletny tor radiowy.
Transceiver radiowy w układzie STM32WB
Schemat blokowy modułu radiowego pokazano na rysunku 14.
Rysunek 14. Schemat blokowy modułu radiowego
Radiowy układ nadajnika oparto o bezpośrednią modulację nośnej w kanale nadawczym. Układ odbiornika wykorzystuje przemianę częstotliwości z niską częstotliwością pośrednią. Dzięki wbudowanemu w strukturę modułu transformatorowi w.cz. antenę o impedancji ok 50 Ω można dołączyć bezpośrednio do wyprowadzenia RF1 mikrokontrolera (jednożyłowe połączenie SE). Naturalna charakterystyka pasmowa transformatora w pewnym stopniu filtruje szkodliwe częstotliwości harmoniczne i eliminuje zakłócenia zewnętrzne.
Moc wyjściową można regulować przez programowe ustawianie napięcia wyjściowego stabilizatora LDO zasilającego nadajnik transceivera. Odbiornik może pracować w programowanych trybach z dużą wydajnością lub ograniczonym poborem mocy. Wbudowana w układ odbiornika automatyczna regulacja wzmocnienia ARW obejmuje zarówno tor wzmocnienia wielkiej częstotliwości, jak i tor częstotliwości pośredniej. Źródłem sygnału zegarowego taktującego moduł RF jest oscylator kwarcowy o częstotliwości 32 MHz z wbudowanymi wewnętrznymi kondensatorami o programowanej pojemności. Rezonator 32 MHz oraz prosty dodatkowy układ filtrów w.cz są jedynymi elementami zewnętrznym potrzebnymi do pracy. Antenę można wykonać na płytce PCB. Można również dołączyć przez złącze RF antenę zewnętrzną na pasmo 2,4 GHz. Układ antenowy powinien posiadać na wejściu filtr pasmowoprzepustowy lub dolnoprzepustowy ograniczający pasmo sygnału wejściowo/wyjściowego, a także układ kompensacji niedopasowania impedancji. Przykładową implementację układu antenowego pokazano na rysunku 15.
Rysunek 15. Moduł RF z układem antenowym
Zabezpieczenia transmisji
Transmisja radiowa ma bardzo wiele zalet. Główna z nich to mobilność, ale na przykład w zastosowaniach przemysłowych może być to sposób na izolację różnicy potencjałów pomiędzy dwoma urządzeniami stosowanymi w elektroenergetyce. Łącza radiowe redukują koszty związane z kanałem transmisji, ponieważ nie są potrzebne fizyczne kanały przesyłania danych takie jak skrętki, kable współosiowe, światłowody itd. Połączenie radiowe ma jednak też wady. W wyniku zakłóceń elektromagnetycznych dane przesyłane przez radio mogą być przekłamane. Dlatego transmisję należy zabezpieczać sumami kontrolnymi, próbować odtwarzać zagubione dane na podstawie tych sum kontrolnych lub potwierdzać pakiety danych i ewentualnie je powtarzać.
To jednak nie wszystko. We wrażliwych układach transmisji danych lub układach sterowania trzeba stosować metody kryptograficzne, aby utrudnić „podsłuchanie” przesyłanych danych. Przykładowo, każdy świadomy użytkownik radiowych sieci Wi-Fi wie, że trzeba skonfigurować swój router tak, by używał protokołów bezpieczeństwa i certyfikacji WPA2. Oprócz zabezpieczeń transmisji, urządzenia zbudowane w oparciu o mikrokontrolery pracujące w miejscach, do których jest łatwy dostęp, powinny być zabezpieczone przez odczytem pamięci programu i możliwością debugowania kodu. Mając to na uwadze w mikrokontrolerach STM32WB, a w szczególności w CPU2 pracującym z firmware odpowiadającym za transmisję danych, wprowadzono rozbudowany system zabezpieczeń, obejmujący pamięć Flash, RAM, port debugowania oraz układy peryferyjne: AES (Advanced Encryption Standard), PKA (Private Key Accelerator) i RNG (Random Number Generator).
Narzędzia
Producent przygotował wsparcie dla projektantów w postaci modułów ewaluacyjnych i odpowiednich narzędzi programowych. W chwili obecnej dostępny jest zestaw P-NUCLEO-WB55, w skład którego wchodzą USB Dongle (rysunek 16) i płytka Nucleo (rysunek 17).
Rysunek 16. USB Dongle z mikrokontrolerem STM32WB
Rysunek 17. Płytka Nucleo STM32WB
Narzędzia programowe
Dwa elementy zestawu pozwalają na zbudowanie toru radiowego i testowanie oprogramowania z wykorzystaniem specjalnie do tego celu przeznaczonego narzędzia STM32CubeMonitor-RF. Oprócz STM32CubeMonitor-RF można korzystać również ze standardowego konfiguratora STM32CubeMX do tworzenia projektu i konfigurowania układów peryferyjnych.
Rysunek 18. Narzędzia projektowe dla STM32WB
Obecnie wsparcie dla projektów mikrokontrolerów z rodziny STM32WB jest możliwe tylko z poziomu selektora mikrokontrolera – rysunek 19.
Rysunek 19. Wybór modułu ewaluacyjnego dla mikrokontrolerów STM32WB
Konfiguracja modułów, które nie są typowe, czyli HSEM lub IPCC, jest albo bardzo ubogie, albo nie ma go wcale. HSEM można tylko włączyć/wyłączyć, natomiast IPCC nie ma w ogóle na liście. Na rysunku 20 pokazano konfigurowanie elementu RF z menu Conectivity. Można go tylko aktywować, a w uwagach podano, że jeżeli ktoś chce więcej to może to zrobić ręcznie.
Rysunek 20. „Konfiguracja” elementu RF w STM32CubeMX
Specjalny program narzędziowy STM32CubeMonitor–RF służy do testowania i programowania toru radiowego. Monitor umożliwia testowanie torów radiowych mikrokontrolerów STM32 zgodnych z IEEE 802.15.4 i BLE. Program wykonuje weryfikację jakości toru RF, testy nadawania i odbioru danych oraz pomiary stopy błędów transmisji. Wyniki są wyświetlane w formie graficznej na ekranie interfejsu użytkownika. Do testowania można wykorzystać połączenie radiowe zestawione między USB Dongle i modułem Nucleo STM32WB – rysunek 21.
Rysunek 21. Połączenie zestawione do testowania BLE za pomocą STM32CubeMonitor–RF
W czasie testowania połączenia STM32CubeMonitor-RF wysyła komendy ACI do modułu Nucelo STM32WB lub USB Dongle. Komendy można też wysyłać do własnego układu użytkownika. Do połączenia modułu z komputerem można wykorzystać port UART lub połączenie USB używające VCP (Virtual Com Port). Oprogramowanie obsługuje komendy z kategorii HCI, HAL, HCI test, GAP, GATT i L2CAP. Możliwe jest tworzenie skryptów z sekwencjami komend. Program jest rozbudowany i daje użytkownikowi szereg możliwości, od wspomnianego już wysyłania komend ACI, poprzez testowanie łącza RF do pomiaru PER (Packet Error Rate).
Podsumowanie
Mikrokontrolery rodziny STM32WB to elementy, które znacznie ułatwiają tworzenie projektów wykorzystujących łącza radiowe. Zintegrowanie w jednej strukturze dwóch rdzeni i kompletnego modułu radiowego daje szerokie możliwości elastycznego projektowania urządzeń wykorzystujących standaryzowane łącza Bluetooth 5 (BLE) oraz Open Thread, ale też możliwość implementacji własnych autorskich rozwiązań. Wsparcie w postaci modułów zabezpieczających transmisję powoduje, że można ją bezpiecznie stosować w krytycznych zastosowaniach. Podział na rdzeń wykorzystywany do obsługi transmisji oraz wydajny, uniwersalny, energooszczędny rdzeń z bogatym wyposażeniem w układy peryferyjne daje możliwość stosunkowo łatwego projektowania zaawansowanych urządzeń. Nie bez znaczenia jest wsparcie producenta w postaci modułów ewaluacyjnych i programów narzędziowych STM32CubeMX i bardzo przydatnego z punktu widzenia testowania łącza RF STM32CubeMonitor-RF.