STM32G0, STM32L0 czy STM32F0 – który wybrać?
STM32L0
Rozwój urządzeń mobilnych spowodował, że pojawiło się zapotrzebowanie na mikrokontrolery, które z jednej strony mogą efektywnie zarządzać poborem mocy w momentach, gdy spada na nią zapotrzebowanie, a z drugiej strony zużywają relatywnie mało energii w czasie intensywnej pracy.
Efektywne zarzadzanie poborem energii ściśle wiąże się z wbudowanymi trybami czuwania, ale też z dynamicznym, inteligentnym sterowaniem napięciem zasilania. Sprawdza się tu ogólna zasada – im niższe napięcie zasilania, tym mniejszy pobór energii, ale też mniejsze maksymalne częstotliwości taktowania i tym samym mniejsza wydajność – rysunek 10.
Rysunek 10. Maksymalne częstotliwości taktowania przy różnych napięciach zasilania rdzenia
Zapotrzebowanie na energię w trakcie normalnej pracy zależy od energochłonności zastosowanego rdzenia, układów pamięci i układów peryferyjnych. W pewnym stopniu również zależy również od wydajności rdzenia. Jeżeli mamy jakieś zadanie, które należy wykonać w trakcie normalnej pracy i potem wejść w tryb obniżonego poboru, to szybszy rdzeń wykona to szybciej i pobór prądu w tym czasie będzie krótszy, a pobrana energia mniejsza.
Rodzinę mikrokontrolerów STM32L0 zoptymalizowano do pracy w układach zasilanych bateryjnie i wszędzie tam, gdzie jest wymagane niskie zużycie energii. Historycznie powstała później niż STM32F0 i zastosowano tu już zmodyfikowany rdzeń Cortex-M0+. Tym niemniej taktowany jest on mniejszą maksymalną częstotliwością – 32 MHz – w przeciwieństwie do 48 MHz dla rodziny STM32F0.
Tryby obniżonego poboru energii
STM32L0 mają możliwość wyboru kilku trybów obniżonego poboru energii. W większości przypadków rdzeń (CPU) jest albo zatrzymywany albo wyłączany. Natomiast wyjątkiem jest tryb Low Power Run, gdzie rdzeń jest taktowany częstotliwością 32 kHz. Zestawienie tych trybów zaprezentowano w tabeli 1.
Wprowadzono dwa nowe tryby oszczędzania energii: Low Power Run i Low Power Sleep. Są niezwykle użyteczne w przypadku, kiedy aplikacja nie dopuszcza wyłączenia części układów peryferyjnych i/lub wymagana jest minimalna aktywność rdzenia mikrokontrolera. Przy tak niskim taktowaniu regulator napięcia zasilającego przechodzi w tryb LP (Low Power) i przez to mocno ograniczane jest zużycie energii. Ponadto możliwe jest wyłączenie pamięci Flash i wykonywanie kodu z pamięci RAM. Włączenie wewnętrznego oscylatora RC MSI redukuje pobór prądu układu taktowania do 1,5 µA. Maksymalny pobór prądu w trybie LP (Low Power) zależy jedynie od częstotliwości taktowania i ilości aktywnych układów peryferyjnych.
Tabela 1. Tryby oszczędzania energii STM32L0
Tryb obniżonego poboru energii | Pobór prądu | CPU | Flash/EEPROM | RAM | DMA i układy peryferyjne | zegar | LCD | RTC |
Sleep | 41 µA/MHz (zakres 1) | nie | Włączony | Włączony | aktywne | Każdy | dostępne | dostępne |
36 µA/MHz (zakres 2) | ||||||||
35 µA/MHz (zakres 3) | ||||||||
Low Power Run | 8,55 µA/MHz (Flash wyłączony, 32 kHz) | tak | Włączony lub wyłączony | Włączony | aktywne | MSI | dostępne | dostępne |
Low Power Sleep | 4,65 µA (peryferia wyłączone) | nie | Wyłączony | Włączony | aktywne | MSI | dostępne | dostępne |
STOP witch RTC | 0,82µA (1,8 V) | nie | Wyłączony | Włączony | zamrożone | LSE, LSI | Wyłączony | Włączony
|
1,0µA (3 V) | ||||||||
STOP | 415 nA | nie | Wyłączony | Włączony | zamrożone | — | Wyłączony | Wyłączony
|
STANDBY with RTC | 655 nA (1,8 V) | Wyłączony | Wyłączony | Włączony | Wyłączony | LSE | Wyłączony | Włączony
|
845 nA (1,8 V) | ||||||||
STANDBY | 290 nA | Wyłączony | Wyłączony | Włączony | Wyłączony | — | Wyłączony | Wyłączony
|
Układy peryferyjne w trybach energooszczędnych
W czasie, gdy włączone są tryby oszczędzania energii, mogą być potrzebne działające układy peryferyjne. W rodzinie STM32L0 zastosowano siedem specjalnie zoptymalizowanych pod względem poboru mocy układów peryferyjnych, które mogą ciągle pracować, nawet kiedy rdzeń jest w trybach Stop i system taktowania zostanie zatrzymany, a główny oscylator oraz pamięć wyłączone. Są to:
- Para komparatorów o ultra niskim poborze prądu ok 3 µA pozwalająca na monitorowanie napięcia analogowego. Komparatory mogą wybudzać rdzeń, kiedy napięcie zewnętrzne osiągnie zadany próg. Połączenie dwóch komparatorów daje możliwość konfiguracji komparatora okienkowego. Jeden z komparatorów ma wejście typu rail-to-rail i jego wyjście można przekierować do wyzwalania timera ogólnego przeznaczenia LPTIM.
- Moduł zegara czasu rzeczywistego RTC realizujący funkcje zegara i kalendarza. Może periodycznie wybudzać mikrokontroler z trybu oszczędzania energii, na przykład po włączeniu zaprogramowanego alarmu. Kiedy większość układów peryferyjnych jest wyłączona, RTC pracuje w trybie standby. Ma wbudowane 80 bajtów pamięci, którą można przeznaczyć do zapisywania kontekstu w trakcie przejścia w tryb standby.
- Sterownik wyświetlacza LCD z 8 wspólnymi liniami i 32 segmentami. Sterownik może współpracować z opcjonalnym wewnętrznym konwerterem step-up używanym do regulacji kontrastu wyświetlacza LCD w szerokim zakresie napięć zasilających mikrokontroler (VDD) i pobiera przy tym prąd ok. 5 µA.
- Timer ULPTIM (Ultra Low Power Timer) – 16 bitowy licznik/timer zaprojektowany do pracy z niskim poborem energii. Możliwość wyboru wielu źródeł zegara pozwala na działanie niezleżenie od wybranego trybu oszczędzania energii. ULPTIM może również pracować jako licznik zliczający impulsy zewnętrzne, kiedy nie jest potrzeby żaden wewnętrzny sygnał zegarowy. ULPTIM pracujący z ekstremalnie niskim poziomem poborem energii może wybudzać mikrokontroler w momencie przepełnienia.
- Interfejs ULPUART (Ultra Low Power UART) – uniwersalny dwukierunkowy interfejs UART zaprojektowany do pracy z niskim poborem energii. Dla prędkości transmisji do 9600 bodów może być taktowany energooszczędnym zegarem LSE o częstotliwości 32,768kHz. ULPUART czeka na odebranie znaku (bajtu) i wybudza mikrokontroler z trybu stop po jego odebraniu.
- Interfejs I2C wybudza MCU z trybu Stop, kiedy odbierze bajt swojego adresu. Do taktowania trzeba wybrać oscylator HSI16. W trybie obniżonego poboru energii HSI16 jest wyłączony i nie pobiera energii. Po odebraniu sekwencji START HSI16 jest włączany i wyłącza się automatycznie po odebraniu sekwencji STOP.
Pobór prądu w trybach energooszczędnych
Na rysunku 11 pokazano przykładowe zużycie energii w poszczególnych trybach zasilania.
Rysunek 11. Zużycie energii STM32L0 w różnych trybach zasilania
Jeżeli porównamy to z rodziną STM32F0 (rysunek 5), to widać, że wykonano tu solidną pracę. Na przykład w trybie STANBY pobór mocy wynosi 230 nA dla STM32L0 i aż 2,5 µA dla STM32F0. Natomiast w trybie STOP z działającym RTC jest to 440 nA dla STM32L0 i 5,4 µA dla STM32F0.
Rodzina STM32L0 jest również podzielona na linie: Value, Access, USB i USV&LCD – rysunek 12.
Rysunek 12. Portfolio rodziny STM32L0
STM32L0 Access Line
Schemat blokowy mikrokontrolerów rodziny STM32L0 z linii Access pokazano na rysunku 13. Ma wbudowane opisywane wyżej układy peryferyjne o wyjątkowo niskim poziomie poboru mocy: 2 komparatory, ULPUART, licznik/timer ULPTIM, a także zegar RTC. Układów peryferyjnych jest oczywiście więcej. Mikrokontroler wyposażono również w 12-bitowy przetwornik SAR z 10 kanałami pomiarowymi, czasem konwersji na poziomie 1 µs, rozbudowany interfejs USART, interfejs SPI i I2C oraz trzy 16-bitowe timery. Do dyspozycji jest też 7 kanałów DMA. Zależnie od konkretnego typu, na pamięć programu przeznaczono od 8 KB do 16 KB pamięci Flash. Mikrokontroler dysponuje też pamięcią RAM o pojemności 2 KB, a także pamięcią EEPROM o pojemności 512 B.
Rysunek 13. Schemat blokowy mikrokontrolerów z linii Access
STM32L0 USB&LCD Line
Dużo lepiej wyposażony jest mikrokontroler z linii LCD&USB, który został pokazany na rysunku 14. Oprócz większej pamięci programu (od 64 KB do 128 KB), pamięci danych SRAM (20 KB) i EEPORM (6 KB) umieszczono tu również interfejs USB 2.0 nie wymagający taktowania z generatora kwarcowego, a także sterownik wyświetlacza LCD. Pozostałe interfejsy są podobne, ale jest ich zdecydowanie więcej.
W wielu wrażliwych aplikacjach przemysłowych, oprócz takich cech jak rdzeń, pamięć i wyposażenie w układy peryferyjne, kluczowe znaczenie mają również inne parametry: zakres napięć zasilania, dopuszczalna temperatura otoczenia, oraz odporność na zakłócenia EMI. STM32L0 mogą pracować w temperaturze otoczenia w zakresie od -40°C do +125 ̊C. Napięcie zasilania może mieć wartość od +1,65 V do +3,6 V i w całym tym zakresie nie ma ograniczeń w prędkości działania CPU. Układ zasilania jest podzielony na 5 niezależnych domen: analogową VDDA, rdzenia VCORE, modułu wyświetlacza LCD VLCD i wewnętrznego boostera VUSB & VDD. Wydzielenie domeny analogowej VDDA może pozytywnie wpływać na jakość pomiaru napięć analogowych o małych poziomach.
Praca w otoczeniu silnych zakłóceń EMI może powodować wytrącenie mikrokontrolera z normalnego działania i w konsekwencji nieprzewidywalne zachowanie układu. W takich przypadkach bardzo przydatne są układy watchdoga i BOR. Zastosowano tu 2 niezależnie liczniki watchdoga, które można użyć jako bardzo skuteczny watchdog okienkowy. Układ BOR ma za zadanie wykryć obniżenie napięcia zasilania poniżej zaprogramowanej wartości. Takie wykrycie skutkuje wejściem w stan zerowania.
Taktowanie mikrokontrolera za pomocą oscylatorów kwarcowych wiąże się z ryzykiem braku startu w czasie włączania napięcia zasilania lub zerwaniem oscylacji w trakcie normalnej pracy (uszkodzenie kwarcu, zmiany temperatury pracy itp.). Wbudowany układ nadzoru wykrywa brak oscylacji i automatycznie przełącza na taktowanie przez niezawodny wewnętrzny oscylator RC.
Pamięć danych jest zabezpieczana sprzętowym modułem CRC. Chroni on pamięć programu przed naruszeniem jej integralności.
Rysunek 14. Schemat blokowy mikrokontrolerów z linii LCD&USB
Pobór mocy
Energooszczędne mikrokontrolery mogą być idealnymi komponentami dla aplikacji IoT zasilanych bateryjnie. Urządzenia końcowe IoT oprócz niskiego poboru energii powinny zapewniać bezpieczeństwo transmisji i odporność na ataki hakerów. W części mikrokontrolerów rodziny STM32L0 zaimplementowano rozwiązania ułatwiające zbudowanie systemu bezpieczeństwa dla urządzeń IoT (rysunek 15):
- Możliwość blokowania debugowania kodu (Debug Lock),
- Integracja czujników antysabotażowych z modułem RTC (Tamper Pad),
- Sprzętowego modułu kryptograficznego z generatorem liczb losowych (TRNG),
- Mechanizmy ułatwiające implementację uwierzytelniania,
- Mechanizmy ochrony pamięci.
Rysunek 15. Rozwiązania wspierające bezpieczeństwo w aplikacjach IoT
Ceny układów
Ceny najmniej rozbudowanych mikrokontrolerów z linii Value pokazano na rysunku 16. Najtańszy STM32L01F4 kosztuje 0,44 € przy partii 10 000 sztuk.
Rysunek 16. Ceny mikrokontrolerów STM32L0 Value Line
Dla porównania na rysunku 17 pokazano ceny wybranych mikrokontrolerów z linii USB&LCD. Zdecydowanie większe możliwości maja odzwierciedlenie w wyraźnie wyższej cenie.
Rysunek 17. Ceny wybranych mikrokontrolerów STM32L0 linii USB&LCD