STM32-F4: STM-owy Cortex-M4
Doskonale znane na polskim rynku rodziny mikrokontrolerów z oferty STMicroelectronics: STM32-F1, STM32-L1, STM32-F2 a także „radiowe” STM32W, doczekały się młodszych braci z niebanalnymi inklinacjami do DSP i obliczeń zmiennoprzecinkowych…
Mikrokontrolery z nowej rodziny firmy STMicroelectronics – STM32-F4 – są wyposażone w rdzeń Cortex-M4, który jest funkcjonalnie rozszerzoną wersją niezwykle popularnego rdzenia Cortex-M3. W ten sposób, doskonale znane na polskim rynku rodziny mikrokontrolerów z oferty STMicroelectronics: STM32-F1, STM32-L1, STM32-F2 a także „radiowe” STM32W, doczekały się młodszych braci z niebanalnymi inklinacjami do DSP i obliczeń zmiennoprzecinkowych. Jeżeli dołożyć do tego taktowania 168 MHz, pinową zgodność STM32-F4 z rodziną STM32-F2, a także niemal identyczne z F2 bloki peryferyjne i interfejsy komunikacyjne oraz wygodne dla „zwykłych” elektroników obudowy – mamy solidne podstawy do kolejnego sukcesu.
Co nowego?
Najistotniejszą różnicą pomiędzy STM32-F4 i starszymi rodzinami mikrokontrolerów STM32 jest zastąpienie w nich rdzenia Cortex-M3 jego rozszerzoną wersją, wyposażoną w sprzętową jednostkę FPU (Floating Point Unit) o pojedynczej precyzji, możliwość dekodowania zestawu jednotaktowych instrukcji wspomagających realizację algorytmów DSP, a także zwiększoną do 168 MHz częstotliwość sygnału taktującego CPU. Właśnie te elementy wyposażenia nowych mikrokontrolerów wyznaczają ich obszary aplikacyjne, dotąd zarezerwowane głównie dla procesorów DSP i/lub mikrokontrolerów DSC (Digital Signal Controllers). Sztandarowym przykładem jest wyposażenie STM32-F4 w jednostkę MAC (Multiply-ACcumulates), która pozwala wykonać w jednym takcie zegara operację mnożenia dwóch liczb 32-bitowych i dodanie uzyskanego wyniku do liczby 64-bitowej.
CMSIS dla Cortex-M4 Z myślą o rdzeniu Cortex-M4 opublikowano zmodyfikowaną specyfikację bibliotek CMSIS 2.0, w której uwzględniono możliwości DSP/FP tego rdzenia. Szczegółowe informacje są dostępne tu. Aktualna specyfikacja CMSIS przewiduje dostępność w ich API bogatego zestawu obliczeń, jak na przykład: interpolacje, obliczenia statystyczne, transformaty (także w dziedzinie liczb zespolonych), operacje na macierzach, filtrowanie sygnałów, a także (sic!) programowo realizowany regulator PID. |
Rys. 1. Zestawienie instrukcji obsługiwanych przez rdzenie Cortex-Mx
Na rysunku 1 pokazano zestawienie „obszarów” instrukcji obsługiwanych przez wszystkie rdzenie Cortex-M, jak widać Cortex-M4 obsługuje znacznie więcej instrukcji niż Cortex-M3, co pozwala na wykonywanie wielu złożonych operacji na danych za pomocą pojedynczych poleceń asemblerowych. Ponieważ STM32-F4 wyposażono w sprzętową jednostkę FPU, ich jednostka centralna dekoduje także instrukcje zaznaczone na rysunku 1 jako obsługiwane przez rdzeń Cortex-M4F – w rzeczywistości to on jest „sercem” nowych mikrokontrolerów firmy STMicroelectronics.
Cortex-M4 nie zawsze znaczy to samo… Niektórzy producenci mikrokontrolerów z Cortex-M4 idą nieco na skróty, wprowadzając do produkcji układy z rdzeniem Cortex-M4 pozbawionych FPU. Są to więc z punktu widzenia użytkownika zubożone funkcjonalnie wersje tego rdzenia. Wersje wyposażone w FPU są oznaczone Cortex-M4F, co sugeruje, że inżynierowie projektujący te rdzenie wpadli na pomysł doposażenia CPU w FPU w trakcie prac. |
Rys. 2. Schemat blokowy mikrokontrolerów STM32-F4