Energooszczędność na dwa sposoby: STM32L1 lub STM32F0
Pomocne dla programistów piszących „energooszczędne” programy dla STM32L są specyficzne bloki peryferyjne, różniące się od stosowanych w klasycznych wersjach STM32:
- 12-bitowy przetwornik A/C potrafiący funkcjonować bez konieczności interwencji CPU, samoczynnie obsługujący tryb pomiaru burst,
- wybudzający rdzeń interfejs USART z mechanizmem ochrony danych – bit wybudzający CPU nie jest tracony podczas transmisji,
- komparatory analogowe, pozostające w stanie aktywności we wszystkich trybach oszczędzania energii – można je wykorzystać do „budzenia” mikrokontrolera w chwili zmiany wartości monitorowanego napięcia,
- samodzielny sterownik LCD (wyłącznie w STM32L152) zintegrowany z generatorem napięcia polaryzującego sterowaną matrycę LCD o wymiarach do 8×40 segmentów,
- zegar RTC zaprojektowany w sposób sprzeczny ze współczesnymi teoriami obowiązującymi w projektowaniu rozbudowanych systemów cyfrowych, dzięki czemu pobiera podczas pracy poniżej 1 mA.
W skład standardowego wyposażenia mikrokontrolerów STM32L wchodzi – w zależności od typu – sześć lub osiem timerów, po dwa lub trzy interfejsy SPI i I2C, trzy lub pięć USART-ów, jeden kanał USB device, dwa komparatory analogowe, 12-bitowy przetwornik A/C (od 16 do 40 multipleksowanych kanałów wejściowych), dwa 12-bitowe przetworniki C/A z wyjściami napięciowymi, a także interfejsy umożliwiające sterowanie segmentowymi LCD – te ostanie są dostępne wyłącznie w mikrokontrolerach STM32L152 oraz STM32L162. Mikrokontrolery STM32L162 wyposażono dodatkowo w koprocesor kryptograficzny realizujący algorytm AES128 w trybach ECB (Electronic CodeBook), CBC (Cypher Block Chaining) oraz CTR (Counter Mode).
Producent zadbał o kompatybilność rozmieszczenia wyprowadzeń i większości możliwości funkcjonalnych bloków peryferyjnych mikrokontrolerów STM32L z klasycznymi STM32, montowanymi w takich samych obudowach (STM32L są oferowane w: LQFP/VFQFN48, LQFP/BGA64 i LQFP/BGA100, LQFP144 oraz BGA132), dzięki czemu konstruktorzy mogą dostosować wydajność obliczeniową i pobór mocy przez mikrokontroler do wymogów aplikacji bez konieczności modyfikacji płytki drukowanej.
Niebagatelną pomocą dla programistów tworzących aplikacje dla mikrokontrolerów STM32L jest duża liczba predefiniowanych trybów oszczędzania energii, które powodują pewne ograniczenia wydajności lub funkcjonalności mikrokontrolera, pozwalając w zamian ograniczyć pobór energii. W każdym z wymienionych przypadków programista tworzący aplikację musi mieć świadomość możliwości tkwiących w mechanizmach oszczędzania energii „zaszytych” w STM32L, ale – zapewne – w niedługim czasie pojawią się narzędzia programistyczne wspomagające pisanie aplikacji na platformy energooszczędne, które wskażą programiście sposoby zoptymalizowania energetycznego pisanego programu.
Najnowsze w rodzinie w rodzinie STM32L mikrokontrolery ValueLine oznaczono symbolem STM32L100. Są dostępne w obudowach QFN48 oraz LQFP64. Pojemność wbudowanej pamięci Flash wynosi 32/64/128 kB (w zależności od typu), a pamięci RAM (odpowiednio): 4/8/10 kB. Standardowym wyposażeniem tych mikrokontrolerów jest wbudowany blok MPU (Memory Protection Unit), 8 interfejsów komunikacyjnych: USB2.0, 3xUSART, 2xSPI, 2xI2C, łącznie 10 timerów, 12-bitowe przetworniki A/C i C/A, komparatory analogowe o zminimalizowanym poborze mocy, a także kontroler segmentowych wyświetlaczy LCD (o organizacji 4×16, 4×32 lub 8×28).
Zakres dopuszczalnych napięć zasilających mikrokontrolery ValueLine jest nieco węższy niż dotychczas produkowanych STM32L i wynosi 1,8…3,6 VDC (vs 1,65…3,6 VDC), podobnie jest zakresem dopuszczalnych temperatur otoczenia podczas pracy: -40…+85oC (vs -40…+105oC). Pobór prądu dla różnych wartości napięć zasilających i maksymalne dopuszczalne częstotliwości taktowania CPU w mikrokontrolerach STM32L pokazano na rysunku 2.
Rys. 2. Pobór prądu dla różnych wartości napięć zasilających i zależne od nich, maksymalne dopuszczalne częstotliwości taktowania CPU w mikrokontrolerach STM32L
Producent zrezygnował z wyposażania nowych mikrokontrolerów w niektóre wyrafinowane bloki peryferyjne znane z „klasycznych” STM32L – jak choćby koprocesor kryptograficzny, czy wewnętrzny czujnik temperatury, a linie GPIO pozbawiono interfejsów umożliwiających bezpośrednią implementację na nich nastawników pojemnościowych. Nowe mikrokontrolery nie mają ponadto indywidualnego znacznika ID, zmniejszono także pojemność zestawu rejestrów Backup-RAM z 80 do 20 bajtów. Uproszczenia nie odbijają się negatywnie na funkcjonalności mikrokontrolerów, których podstawowym obszarem aplikacyjnym są tanie urządzenia zasilane bateryjnie, zwłaszcza że obsługują one aż 7 trybów oszczędzania energii.
Kolejnym uproszczeniem (wynikającym z prostszych – czyli tańszych – testów) zastosowanym w STM32L ValueLine jest mniejsza, niż miało to miejsce w przypadku „klasycznych” STM32L, dokładność i stabilność częstotliwości generatorów taktujące HSI i MSI (w ValueLine +/–10%). Producent prezentowanych mikrokontrolerów ograniczył także dopuszczalną katalogowo liczbę kasowań pamięci Flash (z 10 000 razy do 1000 razy), a także gwarantowana jej trwałość (z 30 lat @+85oC do 20 lat @+85oC). Podobne – katalogowe! – ograniczenie dotknęło pamięci EEPROM, której zawartość w mikrokontrolerach STM32L ValueLine może być modyfikowana do 100 000 razy (zamiast 300 000 dopuszczonych w STM32L).
Poważną zaletą mikrokontrolerów STM32L ValueLine jest ich fizyczna i logiczna zgodność z mikrokontrolerami STM32L w takich samych obudowach, co w wielu przypadkach pozwala zmniejszyć koszt realizacji aplikacji bez konieczności przebudowy płytki drukowanej lub innych elementów sprzętowych urządzenia.
Rys. 3. Zestawienie najważniejszych elementów wyposażenia mikrokontrolerów STM32F0
W ofercie STMicroelectronics jest dostępna także rodzina mikrokontrolerów z rdzeniem Cortex-M0, które są pozycjonowane przez producenta jako tanie rozwiązanie low-power, ich podstawowe wyposażenie pokazano na rysunku 3.
Mikrokontrolery STM32F0 są wyposażone w rdzeń przystosowany do taktowania sygnałem zegarowym o częstotliwości do 48 MHz, przy której osiąga wydajność ok. 38 DMIPS (porównanie częstotliwości taktowania CPU w funkcji wydajności określanej w DMIPS pokazano na rysunku 4). W skład standardowego wyposażenia mikrokontrolerów STM32F0 wchodzą m.in.: 12-bitowe przetworniki A/C i C/A, szybkie linie GPIO z możliwością obsługi nastawników pojemnościowych (także suwaków i „obrotowych” – łącznie do 18 pól czujnikowych) i sprzętowy kontroler PMSM (Permanent Magnet Synchronous Motor). W zależności od typu mikrokontrolera, użytkownik ma do dyspozycji od 16 do 64 kB Flash, 4 lub 8 kB SRAM i obudowy o liczbie pinów od 20 (TSSOP20), przez 32 (UFQFPN32 i LQFP32) i 48 (LQFP48), aż do 64 (LQFP64). Standardowym wyposażeniem rodziny STM32F0 jest ponadto 5-kanałowy kontroler DMA, szybki – do 1 Mb/s – interfejs I2C, interfejs SPI z obsługą CEC-HDMI i elastycznie ustawianą długością ramki danych (od 4 do 16 bitów @18Mb/s), szybki USART (do 6 Mb/s), programowalne 16-/32-bitowe timery z możliwością generacji 3-fazowego przebiegu PWM i 17 liniami capture/compare, a także wygodny w obsłudze wbudowany RTC z kalendarzem zliczającym w kodzie BCD.
Rys. 4. Zestawienie częstotliwości taktowania CPU i uzyskiwanej wydajności w różnych rodzinach mikrokontrolerów STM32 (prezentowane w artykule zaznaczono czerwoną ramką)
Mikrokontrolery STM32F0 wyposażono w interfejs do programowania i debugowania o nazwie SWD, który występuje także w starszych mikrokontrolerach STM32, nie wbudowano w nie natomiast interfejsu JTAG. Zastosowany w mikrokontrolerach STM32F0 blok wspomagający debugowanie jest rozszerzoną wersją standardowego rozwiązania firmy ARM, dzięki czemu m.in. programista może zarządzać sygnałami zegarowymi i przypisaniami funkcjonalnymi linii GPIO czy testować pracę mikrokontrolera w trybie obniżonego poboru mocy.
Producent dużo uwagi poświęcił na zapewnienie bezpieczeństwa aplikacji realizowanych na mikrokontrolerach STM32F0, w których pracują mikrokontrolery STM32F0, co przejawia się m.in. wyposażenie pamięci SRAM w sprzętowy kontroler parzystości, kontroler CRC dla pamięci Flash, dwa watchdogi i system monitorowania poprawności taktowania z automatycznym przełączaniem na wewnętrzne źródło sygnału zegarowego. Prezentowane mikrokontrolery wyposażono także w rejestry z niepowtarzalnymi 96-bitowymi numerami ID, za pomocą których można identyfikować urządzenia z wbudowanymi mikrokontrolerami.
Nowością w rodzinie STM32F0 są mikrokontrolery ValueLine (STM32F03x), które uproszczono minimalizując ich cenę. Zastosowane uproszczenia nie są dotkliwe dla konstruktorów: nowe mikrokontrolery wyposażono bowiem we wszystkie podstawowe peryferia komunikacyjne (w zależności od typu: 1 lub 2 x SPI/I2C/UART), szybki przetwornik A/C (12-bitowy, 12 lub 18 kanałów, częstotliwość próbkowania do 1MS/s) i spore zasoby pamięci Flash/SRAM. Redukcji nie podległ także blok sprzętowego CRC, który może być wykorzystywany do kontroli poprawności zawartości pamięci Flash, konstruktorzy układów zachowali także w nowych mikrokontrolerach 5-kanałowy sterownik DMA oraz kalibrowalny czujnik temperatury. Mikrokontrolery ValueLine są oferowane w obudowach TSSOP20 oraz LQFP z 32/48 lub 64 pinami, wszystkie obecnie oferowane modele mogą pracować z otoczeniu o temperaturze od –40 do +85oC.
Fot. 5. Zestawy startowe z serii DISCOVERY z energooszczędnymi mikrokontrolerami z rodziny STM32 (zestawy 32F0308DISCOVERY oraz STM32F0DISCOVERY są identyczne oprócz zastosowanego w nich mikrokontrolera)
Z myślą o użytkownikach zainteresowanych mikrokontrolerami prezentowanymi w artykule, firma STMicroelectronics oferuje tanie zestawy startowe z serii DISCOVERY (pokazane razem na fotografii 5), dostępne w wersjach:
- 32L100CDISCOVERY z mikrokontrolerem STM32L100RCT6,
- 32L152CDISCOVERY z mikrokontrolerem STM32L152RBT6,
- 32F0308DISCOVERY z mikrokontrolerem STM32F030R8T6,
- STM32F0DISCOVERY z mikrokontrolerem STM32F051R8T6.