LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

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.

Maksymalne częstotliwości taktowania przy różnych napięciach zasilania rdzeniaRysunek 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.

Zużycie energii STM32L0 w różnych trybach zasilaniaRysunek 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.

Portfolio rodziny STM32L0Rysunek 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.

Schemat blokowy mikrokontrolerów z linii AccessRysunek 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.

Schemat blokowy mikrokontrolerów z linii LCD&USBRysunek 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.

Rozwiązania wspierające bezpieczeństwo w aplikacjach IoTRysunek 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.

Ceny wybranych mikrokontrolerów STM32L0 linii USB&LCDRysunek 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.

Ceny wybranych mikrokontrolerów STM32L0 linii USB&LCDRysunek 17. Ceny wybranych mikrokontrolerów STM32L0 linii USB&LCD

Mikrokontrolery z serii STM32L0 dostępne są w sklepie Kamami.pl. W ofercie również bogaty wybór zestawów rozwojowych z tymi układami.
Absolwent Wydziału Elektroniki Politechniki Wrocławskiej, współpracownik miesięcznika Elektronika Praktyczna, autor książek o mikrokontrolerach Microchip i wyświetlaczach graficznych, wydanych nakładem Wydawnictwa BTC. Zawodowo zajmuje się projektowaniem zaawansowanych systemów mikroprocesorowych.