STM32L i niski pobór mocy - przegląd możliwości
| TechnikaRodzina mikrokontrolerów STM32L15x produkowanych przez firmę STMicroelectronics przynależy do wyrobów określanych przez producenta jako EnergyLite - rodziny układów o ultraniskim poborze mocy, bazujących na 32-bitowej architekturze oraz rdzeniu ARM Cortex-M3. Układy te są produkowane w procesie technologicznym 130 nm zmodyfikowanym pod kątem uzyskania bardzo niskich prądów upływu i są wyposażone w bogaty zestaw analogowych i cyfrowych układów peryferyjnych dostosowanych do wymagań aplikacji zasilanych z baterii. Poniżej omawiamy główne mechanizmy tych mikrokontrolerów odpowiedzialne za niski pobór mocy.
Ogólnie można powiedzieć, że pobór mocy przez układy wykonane w danej technologii półprzewodnikowej zależy w największym stopniu od napięcia zasilania i częstotliwości taktowania. Są to dwa kluczowe parametry (pomijając usprawnienia technologii półprzewodnikowej), którymi projektanci mikrokontrolerów i aplikacji je wykorzystujących mogą żonglować, tworząc potrzebnie i optymalne w danej chwili kombinacje.
W układach z rodziny STM32L większość bloków cyfrowych mikrokontrolera zasilana jest z wewnętrznego stabilizatora obniżającego napięcie. Jego próg stabilizacji ustalono najniżej, jak było to tylko możliwe, tak aby zapewnić minimalny pobór mocy przez część cyfrową. Układ pozwala na zasilanie napięciem VDD już od 1,65 V, co w praktyce pozwala na wykorzystanie dwóch szeregowo połączonych ogniw paluszkowych (łącznie 3 V początkowo) i bez stosowania dodatkowego stabilizatora na wykorzystanie praktycznie całej dostępnej energii w ogniwach.
Konstrukcja wewnętrzna części cyfrowej mikrokontrolera STM32L wykorzystuje wszystkie znane technologie ograniczania pobieranej mocy, takie jak bramkowanie źródeł taktowania, skalowanie częstotliwości wraz z wydajnością i podobne mechanizmy. Niemniej działanie takich technik redukcji ograniczone jest do trybu pracy Run, a więc do czasu normalnego wykonywania kodu programu.
Tryby oszczędzania energii
Największe możliwości oszczędności energii zasilającej kryją się w trybach oszczędnościowych. Układ mikrokontrolera obsługuje w tym zakresie siedem trybów ograniczonego poboru mocy, regulując działanie układów peryferyjnych, tak aby zużywały one jak najmniej energii zasilającej.
Napięcie zasilające rdzeń może być ustalone na jednym z trzech zakresów od 1,8 V do 1,2 V. Zmiany w obrębie tego przedziału przekładają się na około 25-procentową oszczędność energii. Na rysunku 1 pokazano, jak dany zakres napięć zasilania wpływa na wydajność i na pobór prądu dla dwóch typowych częstotliwości taktowania układu. Znajomość tych zależności pozwala konstruktorom szacować wydatki energetyczne aplikacji.
Przykładowe wykorzystanie takich trybów najlepiej prześledzić na przykładzie przenośnego miernika ciśnienia krwi z interfejsem USB. Przy pracy autonomicznej zegar 4 MHz zapewnia wystarczającą wydajność nawet dla zasilania 1,2 V. Niemniej po dołączeniu miernika do komputera, w celu przesłania wyników do lekarza, konieczna jest wyższa wydajność, taka jak przy zasilaniu 1,8 V i zegarze 32 MHz.
W bardziej złożonych systemach, na przykład aplikacjach telemetrycznych, pobór prądu może być regulowany poprzez wprowadzanie układu mikrokontrolera w jeden z 7 trybów oszczędnościowych. Ich działanie jest powiązane z blokowaniem wybranych układów peryferyjnych i ograniczaniem częstotliwości źródeł taktowania.
Zestawienie dostępnych trybów pokazane zostało w tabeli 1. Warto zwrócić uwagę, że w porównaniu do rodziny STM32F w "L" dodano dwa nowe tryby: Low Power Run i Low Power Sleep. Mają one funkcjonalność zbliżoną do Run i Sleep, ale część układów peryferyjnych nie zostaje wyłączona (np. te odpowiedzialne za komunikację) lub CPU pracuje z małą szybkością po to, aby ograniczyć wahania pobieranego prądu.
Dla nich ograniczenie zużycia energii uzyskane zostało dzięki możliwości wprowadzenia stabilizatora napięcia w tryb niskiego poboru mocy, możliwości wyłączenia zasilania dla części pamięci nieulotnej (dostępne jest tylko 16 KB RAM) oraz poprzez możliwość wykorzystania do taktowania układu sygnału zegarowego (jako zegar MSI) pochodzącego z generatora RC o bardzo małym poborze prądu.
Układy peryferyjne
Dążąc do ograniczenia poboru mocy przez mikrokontroler, trzeba zwrócić szczególną uwagę na pracę układów peryferyjnych, gdyż nierzadko ich działanie wiąże się z dużym zużyciem energii. Mikrokontroler STM32L zawiera 12-bitowy przetwornik ADC o szybkości konwersji 1 MS/s. Jest on wydajny i dokładny, niemniej może szybko wyczerpać baterię w urządzeniu, gdy będzie stale zasilany (pobiera aż 1,45 mA).
Niemniej przetwornik po załączeniu zasilania jest gotowy do pracy już po 3,5 µs, a czas konwersji trwa jedynie 1 µs. 6 pomiarów można wykonać w czasie nie dłuższym niż 10 µs i potem natychmiast wyłączyć zasilanie. Cykl włączanie-pomiar-wyłączanie można powtarzać nawet przy praktycznie ciągłych pomiarach, powtarzanych z repetycją 1 kHz. Pozwala to zejść z poborem prądu przy konwersji A/C do około 10,5 µA.
Czas niezbędny do włączenia lub wyłączenia przetwornika ADC i dokonania konwersji zależy od szybkości taktowania MCU. Dla częstotliwości zegara poniżej 1 MHz czas włączania i wyłączania przekracza już czas konwersji. Przy 32 kHz każda instrukcja procesora trwa 30 µs - to dość długo z punktu widzenia minimalizacji poboru prądu przez konwerter, bowiem włączanie i wyłączanie przetwornika nie przynosi wówczas korzyści w zakresie oszczędności energii.
Dlatego producent umożliwił szybkie taktowanie przetwornika, rozbudowując interfejs cyfrowy łączący go z resztą mikrokontrolera tak, że nawet gdy zegar taktujący procesor zwalnia nawet do 32 kHz, do taktowania przetwornika wykorzystywany jest stale sygnał 16 MHz. Poza tym wbudowano mechanizm automatycznego wyłączania tego bloku. W tym rozwiązaniu pojedyncza kompletna konwersja danych trwa tylko 4,5 µs niezależnie od szybkości taktowania.
STMicroelectronics wbudował też w strukturę układu trzy układy peryferyjne, które mogą pracować ciągle w trybie Stop, a więc gdzie taktowanie zostaje wstrzymane: dwa komparatory pozwalają na kontrolowanie napięć. Pobierają one 3 µA i są w stanie wybudzić CPU, gdy obserwowane przez nie napięcie osiągnie założony próg lub znajdzie się w przedziale wyznaczanym przez zdefiniowane okienko komparacji.
Zegar RTC z alarmami może być użyty do okresowego wybudzania, generowania znaczników czasowych. Ma on 80 bajtów ekstra pamięci, która może być wykorzystana na potrzeby zapisu stanu procesora przy wprowadzaniu w stan uśpienia. RTC pobiera 1 µA.
Kontroler LCD obsługuje panele ciekłokrystaliczne o wielkości do 8 linii/40 segmentów zawiera wbudowany konwerter podwyższający napięcie niezbędny do zasilania ciekłych kryształów z wystarczającym kontrastem. Pobiera on 5 µA (dochodzi do tego oczywiście energia pobierana przez panel LCD).
Zarządzenie sygnałem zegarowym
Do zarządzania pracą mikrokontrolera można wykorzystać jeden z pięciu sygnałów zegarowych (tabela 2). Dwa źródła zewnętrzne należy wykorzystywać, gdy konieczne jest zapewnienie wysokiej precyzji i determinizmu czasowego:
- Zegar HSE (High Speed External) - od 4 do 24 MHz. Typowo jest on wykorzystywany do sterowania pętlą PLL i generowania sygnału taktującego do 32 MHz dla CPU i 48 MHz dla USB,
- Zegar LSE (Low Speed External) o częstotliwości 32,768 kHz, będący źródłem sygnału dla RTC i LCD.
Pozostałe trzy wewnętrzne generatory charakteryzują się wysoką uniwersalnością:
- Zegar LSI (Low Speed Internal) - 37 kHz - sygnał o niewielkiej dokładności, ale za to o bardzo małym poborze prądu, przeznaczony do taktowania dla RTC i LCD w aplikacjach niekrytycznych od strony dokładności czasowej,
- HSI (High Speed Internal) - 16 MHz - podstawowy sygnał zegarowy o dużej szybkości i wysokiej stabilności,
- MSI - generator programowany od 64 kHz do 4 MHz - o średniej dokładności i niskim poborze prądu. Przeznaczony do sterowania taktowaniem CPU proporcjonalnie do potrzeb wydajności obliczeniowej.
Bezpieczne i oszczędne zasilanie
STM32L zawiera rozbudowany system zasilający, powalający na programowanie działania. Odpowiada on za prawidłową sekwencję włączania napięć zasilających dla obwodów wewnętrznych podczas włączenia układu. Jest to istotne szczególnie w aplikacjach zasilanych z baterii, gdzie niepewność związana z jakością zasilania, zwłaszcza gdy bateria jest bliska wyczerpania, potrafi zaważyć na stabilności pracy systemu mikroprocesorowego.
Bezpieczny układ resetu działający przy włączaniu zasilania gwarantuje z kolei, że sygnał ten pojawi się jedynie, gdy zasilanie VDD jest powyżej 1,8 V, czyli są warunki do uruchomienia kodu. Po starcie można aktywować lub nie układ BOR (Brown Out Reset) po to, aby w sposób ciągły monitorować napięcie zasilające. Działanie układu BOR jest niezależne od oprogramowania. Dodatkowo dostępny jest układ PVD (Programmable Voltage Detector) pozwalający na zaprogramowanie 5 wartości progowych napięcia i monitorowanie 7 przedziałów. Gdy zasilanie wykroczy poza ustalone ramy, układ ten generuje przerwanie.
Pobór prądu przez aktywne układy BOR i PVD nie przekracza 3 µA, co nie jest wartością dużą w przypadku pracy w stanie aktywnym, ale w warunkach uśpienia może już to być wartość znacząca. Stąd w razie potrzeby można je zablokować, aby nie działały w trybach oszczędnościowych i aby były automatycznie aktywowane przy wybudzaniu CPU. Zapewnia to korzystny kompromis, gdzie zachowane jest bezpieczeństwo pracy układu bez konieczności ponoszenia dużych wydatków energetycznych.
Układy STM32L są też unikalnym na rynku produktem zdolnym do pracy przy napięciu zasilania już od 1,65 V z niewielkimi ograniczeniami, co do pracy układów wewnętrznych przy tym niskim napięciu (USB, ADC i DAC nie mogą pracować przy tym zasilaniu, ale reszta peryferyjnych już tak). W ramach rodziny jest też dostępny jeden model z zablokowanym układem BOR przeznaczony do pracy z napięciem 1,8 V ±8%.
Znajomość szczegółów i możliwości, jakie kryją się w trybach ograniczania poboru energii, jest kluczowa do tego, aby osiągnąć długi czas pracy aplikacji przy zasilaniu bateryjnym. Układy STM32L firmy STMicroelectronic to dowód na to, że producenci nieustannie poszerzają paletę dostępnych możliwości w tym zakresie.
Robert Magdziak