Decydując się na pracę z mikrokontrolerami ARM stajemy przed wyborem producenta układów. Tak, bowiem ARM jest firmą, która “jedynie” projektuje rdzenie mikroprocesorów oraz sprzedaje na nie licencje. Dosyć ciekawa konstrukcja, co nie? Ich rdzenie możemy aktualnie znaleźć we wszystkich urządzeniach, które używamy na co dzień takie, jak chociażby smartfony, bez których aktualnie nie możemy żyć. Powstało wiele rodzin rdzeni ARMowych. W tej chwili liczą się dwie: Cortex-A oraz Cortex-M. “A” oznacza, że są to procesory do zastosowań aplikacyjnych (obsługa systemów operacyjnych). Są one wykorzystywane we wcześniej wspomnianych smartfonach, a także w mikrokomputerach typu Raspberry Pi. Nas natomiast interesuje rodzina Cortex-M z przeznaczeniem dla mikrokontrolerów. Wewnątrz tej rodziny mamy kilka typów rdzeni, które różnią się od siebie między innymi wydajnością. Dla nas są to rdzenie:
- M0 – najtańsze rdzenie o małej wydajności.
- M0+ – ulepszona wersja rdzenia M0 o zmniejszonym poborze mocy.
- M3 – pierwszy historycznie rdzeń Cortex-M. Średnia wydajność.
- M4 – mocny rdzeń z dodatkową jednostką służącą do obliczeń zmiennoprzecinkowych (FPU) czy obsługą instrukcji DSP.
- M7 – najnowszy i najmocniejszy rdzeń Cortex-M. Prawdziwy potwór.
Mamy w czym wybierać, lecz z samym rdzeniem nic nie zwojujemy. Potrzebujemy mieć ten rdzeń opakowany w pamięci oraz interfejsy zewnętrzne. Obudowanie rdzenia tymi podzespołami i włożenie tego w jedną obudowę tworząc finalnie mikrokontroler zajmują się firmy specjalizujące się w układach scalonych. Są to m. in. Atmel, Cypress, Freescale, NXP no i nasze ST. Skoro jest tylu producentów to…
Dlaczego ST?
- Darmowe narzędzia do pisania kodu, jego kompilacji oraz flashowania MCU. ST dba o to, aby najważniejsze rzeczy były ogólnodostępne oraz darmowe. Jeśli chodzi o IDE, to polecam SW4STM32. Jest to zmodyfikowany na potrzeby ST popularny Eclipse.
- Dedykowane narzędzia od ST. Należy do nich m. in. generator szkieletu projektu STM32CubeMX. Świetne narzędzie przyśpieszające początkową pracę z mikrokontrolerem.
- Darmowe biblioteki do obsługi układów STM32HAL. Nie są idealne, bywają przerośnięte, ale spisują się świetnie w szybkim pisaniu. Pozwalają na szybki start bez zagłębiania się w tysiące stron dokumentacji. Oczywiście i tak jej nie ominiemy! Niestety wygoda idzie często kosztem wydajności, ale można to przełknąć.
- Darmowe biblioteki STM32LL. Niskopoziomowe biblioteki (Low Layer) do obsługi peryferiów. Ich główną zasadą jest – jedna funkcja zmienia tylko jeden rejestr. Tutaj bez znajomości procesora się nie obejdzie, ale za to optymalizacja prima sort.
- Większość pinów STM32 jest 5V tolerant. Co to oznacza? Nie musimy martwić się o konwersję napięć komunikując się z układami pracującymi na napięciu 5V. Należy sprawdzić czy układ zewnętrzny akceptuje wysoki poziom logiczny wystawiany przez STM32. Najczęściej będzie to 3.3V. Jeśli tak (a zazwyczaj tak jest), to żegnajcie konwertery napięć.
- Bogate portfolio rozmiarowe i zasobowe. Układów możemy szukać w prawie dowolnej obudowie. Te najpopularniejsze to TQFP 32, 48, 64, 100, 144 piny. Są nawet BGA. Każdy znajdzie coś dla siebie.
- Kompatybilność pinów w obrębie jednej obudowy w większości przypadków (boleśnie doświadczyłem jednego wyjątku). Jeżeli w trakcie programowania okaże się, że brakuje zasobów, nie ma większego problemu wstawić w to samo miejsce mocniejszy mikrokontroler.
- Ogromna ilość zestawów prototypowych. Uwielbiam te zestawy!
- Darmowy programator dołączany do każdej płytki prototypowej!
Rodziny mikrokontrolerów STM32
W całej gamie MCU firmy ST mamy kilka rodzin, które są pogrupowane według swoich możliwości. Poniższa grafika świetnie przedstawia wszystkie modele wraz z ich wydajnością oraz miejscem w szeregu.
- Mainstream – mikrokotrolery ogólnego zastosowania. Najczęstszy wybór do “zwykłej” aplikacji
- F0 – aternatywa dla 8 i 16-bitowców na rdzeniu M0.
- G0 – jedna z nowych generacji MCU z rdzeniem M0+. Przeznaczona do aplikacji niskokosztowych
- F1 – pierwsza rodzina STM32 oparta o rdzeń M3. Wysoka wydajność i nieskomplikowana architektura.
- F3 – bogata oferta peryferii analogowych. Przeznaczona do zastosował real-time oraz do przemysłu.
- G4 – kolejna nowość. Wysoka wydajność połączona z szerokim wachlarzem analogowych funkcji.
- High Performance – najwydajniejsze z STM32 służące do obliczeń, transferu sporej ilości danych. Bardzo wysokie taktowania rdzenia.
- F2 – wydajny rdzeń M3 z akceleratorem graficznym. Flash do 1Mb, mogą mieć np. Ethernet.
- F4 – dzielą się jeszcze na trzy stopnie “zaawansowania”. Posiadają rdzeń M4 z jednostką zmiennoprzecinkową. Mogą mieć kontrolery LCD z akceleratorem graficznym czy obsługę MIPI.
- F7 – najnowszy rdzeń M7. Peryferia podobne do M4. Najmocniejsze jednordzeniowe STM32.
- H7 – Dwurdzeniowy STM32 (M7 jako bazowy + wolniejszy M4).
- Ultra Low Power – seria skupiona na jak najniższym poborze prądu. Mnóstwo dodatkowych funkcji pozwalających na usypianie i obniżanie zużycia energii.
- L0 – najmniejsze z serii, już od 14-pin.
- L1 – odpowiednik F1 w wersji low-power.
- L4 – oszczędne oraz wydajne. Posiadają FPU.
- L4+ – rozszerzenie L4. Rozbudowane pamięci, oraz akceleracja graficzna.
- L5 – najnowsza seria zawierająca specjalne funkcje wspomagające bezpieczeństwo i szyfrowanie. Akcelerator graficzny.
- Wireless – mikrokontrolery z wbudowaną obsługą komunikacji bezprzewodowej m. in. Bluetooth 5, RF 2.4 GHz. Zbudowane są z dwóch rdzeni – M4 i M0+
Po obszerniejszy opis każdej z serii zapraszam na stronę producenta: https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html
Do wyboru mamy płytki deweloperskie oznaczone jako:
-
- Discovery – rozbudowane – często z MCU o wysokiej wydajności – płyty z kilkoma układami zewnętrznymi. Układy, jakie są montowane to akcelerometry, żyroskopy, mikrofony, wyświetlacze itd. Rzadko przeze mnie używane z racji tego, że nie zawsze potrzebuję tych układów, a potrafią przeszkadzać.
-
- Nucleo – minimalistyczne płytki nieco przypominające Arduino. Znajduje się na nich na ogół tylko MCU razem z niezbędnymi elementami do prawidłowego działania oraz jedną diodą LED i przyciskiem. Wszystkie piny mikrokontrolera są wyprowadzone na goldpiny. To jest mój ulubiny wybór. Nucleo z kolei dzieli się na trzy rozmiary:
- Nucleo-32 – wielkością zbliżone do Arduino mini oraz złącza są zgodne z nim. Małe, 32-pinowe MCU. Idealne do wpięcia na stałe w niewielki projekt.
- Nucleo-64 – chyba najpopularniejszy rodzaj. MCU 64-pinowe. Oprócz goldpinów ze wszystkimi sygnałami posiada złącze zgodne Arduino Uno.
- Nucleo-144 – największy z ekipy. Znajduje się na nim solidny kloc posiadający aż 144 piny i to wszystko jest wyprowadzone na goldpiny! Obok jest też złącze Arduino Uno. Dostępne jest USB OTG oraz tutaj ST pokusiło się tutaj o dorzucenie złącza Ethernet w niektórych wersjach.
- Nucleo – minimalistyczne płytki nieco przypominające Arduino. Znajduje się na nich na ogół tylko MCU razem z niezbędnymi elementami do prawidłowego działania oraz jedną diodą LED i przyciskiem. Wszystkie piny mikrokontrolera są wyprowadzone na goldpiny. To jest mój ulubiny wybór. Nucleo z kolei dzieli się na trzy rozmiary:
Oprócz oryginalnych płytek ST na rynku możemy dostać wiele innych. Głównie jest to produkcja dalekowschodnia. Bardzo popularna jest płytka z STM32F103C8T6 w formie Arduino mini. Kosztuje tylko kilkanaście złotych!
Halo, halo! Ale co z tym programatorem?!
No jest! Na pokładzie każdej płytki deweloperskiej jest ST-LinkV2. O możliwościach tego układu opowiem kiedy indziej, gdyż nie służy on jedynie do programowania MCU. Z STlink komunikujemy się przez mini-USB. W zestawach znajdziemy go:
- Discovery – Wmieszany w pozostałe elementy na PCB
- Nucleo-32 – Na spodniej stronie PCB, również wmieszany w elementy.
- Nucleo-64 – Górna część PCB. Tutaj – uwaga – jest on wyłamywany. Po zaprogramowaniu ostatecznym, kiedy nie jest już potrzebny, możemy go oderwać od Nucleo i używać oddzielnie! Pozostałą część Nucleo można umieścić np. w projektowanym urządzeniu. Bomba, co nie?
- Nucleo-144 – Identycznie jak w Nucleo-64.
Przyznaj, że wszystko to, co napisałem powyżej brzmi to przekonywująco. Mnie przekonali!
Moja kolekcja st
W swojej szafie posiadam kilka płytek, na których pracuję oraz będą one podstawą wpisów na temat STM32.
- Nucleo-32 z STM32L031K6T6
- Nucleo-64 z STM32L053R8T6
- Nucleo-64 z STM32F401RET6
- Nucleo-64 z STM32L476RGT6U
- Nucleo-144 z STM32F767ZIT6
- Discovery z STM32F407VGT6
- Chiński minimal dev kit z STM32F103C8T6
- Kilka różnych luźnych MCU
Celowo nie pisałem o wadach rozwiązań ST. Zachęcam do kulturalnej dyskusji w komentarzach. Chętnie poznam Twoje zdanie na temat mikrokontrolerów ST, również z wymienionymi wadami, jakie widzisz. Pamiętaj, aby wypowiadać się poprawną polszczyzną, nie atakować rozmówców oraz nie przeklinać.
3 komentarze
Ignacy · 05/05/2024 o 20:15
Obecnie pracuje z mikrokontrolerami esp32. W stosunku do stm32 są tańsze, mają więcej pamięci flash, “wyższe” taktowanie procesora, wbudowane wifi i bluetooth.Seria esp32 od seeed studio jest naprawdę malutka. Pomimo tych zalet, to stm32 jest używane w robotach sprzątających i innych droższych urządzeniach IOT. Na czym polega fenomen stm32, że to one są wykorzystywane w takich urządzeniach? Czy chodzi o niezawodność, mniejsza awaryjnosc?
ArturM · 24/05/2019 o 10:58
Warto by uzupełnić obrazek w sekcji “Rodziny mikrokontrolerow STM32” bo ST wypuściło sporo nowości w rodzinie: G0, G4…
Mateusz Salamon · 24/05/2019 o 17:37
Będzie zrobione 🙂