Sprzętowe metody ograniczania poboru mocy w energooszczędnych układach STM32

Udostępnij

Optymalizacja energetyczna mikrokontrolera zwykle kojarzy się przede wszystkim z wprowadzaniem rdzenia w tryby Sleep, Stop lub Standby. W nowoczesnych STM32 równie duże znaczenie mają jednak mechanizmy sprzętowe działające niejako poniżej warstwy programowej (choć wciąż przez nią zarządzane). Ich zadaniem jest ograniczenie zarówno energii zużywanej podczas wykonywania kodu, jak i kosztu okresowego wybudzania procesora.

Szczególnie rozbudowane rozwiązania tego typu znajdziemy w rodzinach STM32U5, ale część z nich występuje również w STM32L4, H7, U0 czy najnowszej U3. Ekstremalnie niską wartość uśrednionego poboru mocy uzyskuje się więc nie tylko przez usypianie CPU, lecz przez ograniczenie liczby bloków, które w ogóle wymagają zasilania i taktowania.

Tryby low-power – tylko jeden z elementów układanki

STM32 udostępniają (zależnie od rodziny) tryby Sleep, Stop, Standby i Shutdown oraz ich warianty. Kolejne poziomy wyłączają coraz większą część logiki i źródeł zegarowych. Pozwala to drastycznie zmniejszyć pobór prądu, co odbywa się kosztem wydłużenia czasu wybudzenia oraz mniejszej dostępności peryferiów i zredukowanego zakresu zachowywanego kontekstu pracy programu. Znacznie ciekawsze są natomiast sprzętowe mechanizmy pozwalające ograniczać zużycie energii również wtedy, gdy spora część mikrokontrolera nadal pracuje.

Dynamiczne skalowanie napięcia VCORE

Jednym z najważniejszych mechanizmów dostępnych w nowszych seriach STM32 jest skalowanie napięcia zasilającego logikę cyfrową. Co ważne, nie mówimy tutaj o obniżeniu dostarczanego z zewnątrz napięcia (np. z 3,3 V do 1,8 V), ale o napięciu obecnym wewnątrz struktury mikrokontrolera. Moc dynamiczna pobierana przez układ CMOS w związku z ładowaniem i rozładowywaniem efektywnych pojemności obciążenia jest proporcjonalna do iloczynu trzech czynników:

Pd(CL)CeffV2fP_{d(CL)} ∝ C_{eff} \cdot V^2 \cdot f

gdzie Ceff – pojemność wypadkowa, V – napięcie zasilania, f – częstotliwość przełączania,

zaś składnik wynikający z chwilowego „zwierania” szyn zasilania przez pary tranzystorów komplementarnych wynosi:

Pd(sw)ImeanVP_{d(sw)} \approx I_{mean} \cdot V

gdzie Imean to średni prąd wynikający z owych „zwarć” spowodowanych przez jednoczesne przewodzenie obydwu tranzystorów na danym stopniu bramki logicznej bądź innego bloku mikrokontrolera. Całkowita moc zużywana przez mikrokontroler jest sumą składników dynamicznych Pd(CL) i Pd(sw) i składników statycznych (suma prądów upływu oraz stały pobór prądu poszczególnych bloków).

Występowanie czynnika napięciowego (V) w powyższych wzorach, w pierwszej bądź drugiej potędze, sprawia, że nawet stosunkowo niewielkie obniżenie napięcia VCORE daje wymierne efekty pod względem oszczędności energii. Ceną jest natomiast zmniejszenie maksymalnej częstotliwości pracy tranzystorów, stąd napięcie musi być powiązane z wymaganą wydajnością.

Dobrym przykładem jest rodzina STM32U5. Układ udostępnia cztery zakresy Voltage Scaling: około 1,2 V dla Range 1, 1,1 V dla Range 2, 1,0 V dla Range 3 oraz 0,9 V dla Range 4. W opisanej przez ST konfiguracji odpowiadają im maksymalne częstotliwości odpowiednio 160, 110, 55 i 25 MHz. Jeżeli więc urządzenie przez większość czasu wykonuje stosunkowo proste obliczenia, utrzymywanie najwyższego VCORE tylko po to, aby zachować możliwość pracy z maksymalnym zegarem, nie ma uzasadnienia energetycznego. Zmiana zakresu napięcia musi jednak zawsze pozostawać skoordynowana z częstotliwością zegara systemowego (SYSCLK) i czasami oczekiwania pamięci Flash (określanymi jako wait state).

Dobrym punktem wyjścia do zapoznania się z możliwościami ograniczania energii w mikrokontrolerach STM32U5 jest zestaw ewaluacyjny STM32U5G9J-DK2 (źródło: masters.com.pl)

Wbudowana lub zewnętrzna przetwornica DC/DC (SMPS)

Drugim źródłem oszczędności jest sposób wytwarzania napięcia VCORE. Klasyczny regulator liniowy typu LDO pobiera energię z szyny VDD i rozprasza moc proporcjonalną do różnicy napięć. Zastosowanie przetwornicy impulsowej pozwala ograniczyć te straty, szczególnie przy stosunkowo wysokim VDD i/lub dużym prądzie rdzenia.

Wybrane układy STM32U5 zawierają zarówno LDO, jak i SMPS, połączone z domeną VCORE. W danym momencie aktywny jest jeden regulator, a przełączenie między nimi może odbywać się podczas pracy mikrokontrolera. Określenie „wbudowany” nie oznacza przy tym całkowitego braku elementów zewnętrznych – stopień impulsowy wymaga dołączenia dławika czy kondensatorów, jednak logika sterująca oraz klucze MOSFET pozostają wewnątrz struktury mikrokontrolera, co istotnie zmniejsza powierzchnię zajmowaną na PCB przez tor zasilania.

Podsystem zasilania mikrokontrolera z rodziny STM32U59xxx w wersji z obsługą SMPS (źródło: nota katalogowa STM32U59xxx)

Architektura podsystemu zasilania oparta na konwerterze DC/DC pozwala przełączać sposób zasilania zależnie od warunków pracy. Podobny kierunek zastosowano w części rodziny STM32H7, gdzie wbudowany SMPS może zasilać rdzeń bezpośrednio albo współpracować z LDO.

Interesujące rozwiązanie zastosowano wcześniej w specjalnych wersjach STM32L4 oznaczonych sufiksem P. Dwa wyprowadzenia GPIO zastąpiono w nich wejściami VDD12, do których można doprowadzić napięcie VCORE wytworzone przez zewnętrzną przetwornicę.

Schemat podsystemu zasilania mikrokontrolerów z serii STM32L4P5/4Q5/4S5/4R5/4S7/4R7xx (źródło: AN5372)

W takim scenariuszu aplikacyjnym mikrokontroler może nie tylko otrzymywać zasilanie z wyjścia zewnętrznej przetwornicy, ale także aktywnie nią sterować oraz odczytywać stan linii Power Good, o ile rzecz jasna dany układ SMPS jest w takową wyposażony.

Użycie zewnętrznej przetwornicy impulsowej sterowanej przez mikrokontroler STM32L4 (źródło: AN4978)

W pomiarach wykonanych przez ST na płytce Nucleo-144 z układem STM32L496 pobór prądu przy 80 MHz spadł z 10,6 mA do 3,88 mA w teście CoreMark (patrz AN4978, str. 5). Nie oznacza to wprawdzie, że SMPS jest korzystniejszy w każdym stanie – trzeba uwzględnić jego prąd spoczynkowy, czas uruchamiania oraz energię potrzebną do przełączania między źródłami zasilania – ale bez wątpienia wnosi bardzo dużą elastyczność projektową, dając konstruktorowi szerokie pole do popisu pod względem minimalizacji zużycia energii. Tak daleko idące optymalizacje mają szczególne znaczenie m.in. w nowoczesnych urządzeniach ubieralnych i medycznych (o tych ostatnich pisaliśmy więcej w tym artykule).

LPUART i timery low-power

W niemal każdym energooszczędnym systemie wbudowanym problemem bywa konieczność częstego wybudzania CPU w celu obsługi prostych zdarzeń. Dlatego układy STM32 wyposażane są w peryferia zaprojektowane do pracy przy bardzo wolnych zegarach i w głębszych trybach oszczędzania energii. LPUART (skrót od Low Power UART) może korzystać między innymi z zegara 32,768 kHz. ST wskazuje przykładowo, że w rodzinach STM32L0/L4 oraz WL taki zegar wystarcza do komunikacji LPUART z szybkością do 9600 bps. Pozwala to oczekiwać na ramkę przy wyłączonym szybkim oscylatorze i wybudzić resztę systemu dopiero wtedy, gdy konieczne będzie obsłużenie transmisji.

Podobną rolę pełnią timery LPTIM. W STM32U5 mogą być one taktowane za pomocą kilku energooszczędnych źródeł (LSE, LSI, HSI16, MSI), magistrali APB albo zewnętrznego sygnału doprowadzonego do wejścia timera (w zależności od implementacji). W ostatnim przypadku możliwe jest nawet zliczanie impulsów bez uruchamiania wewnętrznego oscylatora. Timery LPTIM obsługują ponadto m.in. przechwytywanie wejścia, wyzwalanie zdarzeń i transfery DMA, dzięki czemu wiele prostych funkcji czasowych nie wymaga okresowej aktywacji – bądź co bądź dość sporego – rdzenia Cortex-M33.

Peryferia pracujące niezależnie od CPU

Najbardziej rozbudowanym przykładem sprzętowego odciążania rdzenia jest w STM32U5 mechanizm LPBAM – Low-Power Background Autonomous Mode. Jak sama nazwa wskazuje, pozwala on budować sekwencje operacji wykonywane „w tle” – a za ich realizację odpowiadają odpowiednie peryferia i DMA. LPBAM może pracować podczas przebywania procesora w trybie Stop 2, czyli bez uruchamiania rdzenia. W opisywanej domenie mogą pracować między innymi ADC4, DAC1, LPTIM1/3, LPUART1, SPI3, I2C3 oraz ADF1, współpracując z kontrolerem LPDMA1 i segmentem pamięci operacyjnej SRAM4. Inna grupa peryferiów może działać autonomicznie także w trybach Stop 0 i Stop 1 przy użyciu GPDMA1.

Korzyści płynące z zastosowania LPBAM nie ograniczają się wyłącznie do samego transferu danych. Przykładowo: przetwornik ADC4 może zostać sprzętowo uruchomiony po wystąpieniu sygnału wyzwalania, a następnie wykonać konwersję, przekazać wynik przez DMA do pamięci SRAM i ponownie się wyłączyć. W wielu aplikacjach takie rozwiązanie pozwala zebrać serię próbek bez cyklicznego budzenia procesora tylko po to, aby uruchomić ADC i przepisać jego rejestr danych do bufora – czyli by zrealizować banalnie prosty ciąg operacji, który w standardowym podejściu wymagałby wybudzenia rdzenia mikrokontrolera.

Bramkowanie zegarów, domeny zasilania i retencja RAM

Nie każdy aktywny blok peryferyjny wymaga uruchomienia taktowania całego mikrokontrolera. We wspomnianej już wielokrotnie rodzinie STM32U5 rozdzielono m.in. wyjścia MSIS i MSIK generatora MSI – pierwsze z nich może obsługiwać zegar systemowy SYSCLK, a drugie zegary peryferiów. Autonomiczny blok może zażądać własnego zegara oraz dostępu do AHB lub APB tylko na czas potrzebny do wykonania danej operacji. Niezależnie od tego rejestry RCC_AHBxENR i RCC_APBxENR, stosowane (pod różnymi nazwami) także we wszystkich innych rodzinach STM32, pozwalają wyłączać zegary nieużywanych bloków, rejestry RCC_AHBxSMENR sterują ich taktowaniem w trybie Sleep, a RCC_SRDAMR określa dostępność peryferiów w autonomicznej domenie SmartRun.

Jeszcze dalej idzie podział na domeny zasilania. W rodzinie STM32H7 różne domeny mogą być niezależnie pozostawiane w stanie aktywnym lub wprowadzane w tryb low-power. W STM32U5 koszt energetyczny można ograniczać również przez wybór zakresu podtrzymywanej pamięci SRAM. Dane katalogowe STM32U59 pokazują dobrze skalę zjawiska: dla Stop 2 podtrzymywanie 40 kB SRAM wiąże się z typowym poborem 4,65 µA, natomiast retencja pełnych 2,5 MB zwiększa tę wartość do 17,5 µA.

Fragment schematu blokowego mikrokontrolera z serii STM32U59xxx pokazujący podział pamięci SRAM na niezależnie zarządzane segmenty (źródło: DS13633)

Zarządzanie zasilaniem i retencją SRAM odbywa się za pomocą kilku rejestrów PWR. PWR_CR1 umożliwia między innymi wyłączanie całych bloków SRAM, natomiast PWR_CR2, PWR_CR4 i PWR_CR5 – zależnie od modelu – pozwalają wyłączać poszczególne strony pamięci w trybach Stop.

Budowa rejestru PWR_CR1 w mikrokontrolerach z serii STM32U5 (źródło: RM0456)

GPIO również potrafią zużywać niepotrzebną energię

Przy prądach liczonych w pojedynczych mikroamperach czy nawet nanoamperach znaczenia nabierają także wejścia cyfrowe. Nieużywana linia GPIO ustawiona jako wejście analogowe ma wyłączony bufor Schmitta, co niweluje związany z nim pobór prądu. Wejścia cyfrowego nie należy natomiast pozostawiać w stanie nieustalonym – zakłócenia RFI, zbierane z otoczenia np. poprzez długą ścieżkę pozostawioną w stanie „wiszącym w powietrzu”, mogą powodować ciągłe zmiany stanu bufora wejściowego, co dodaje do budżetu energetycznego krótkie, ale liczne impulsy wynikające z przełączania tranzystorów. ST zaleca także wyłączanie zegara całego portu GPIO, jeśli jego rejestry przez dłuższy czas nie są potrzebne, zwraca ponadto uwagę na prądy upływu powstające pomiędzy domenami o różnych napięciach zasilania.

Schemat blokowy logiki sterującej pojedynczą linią GPIO (źródło: AN4899)

Więcej na temat konfiguracji nieużywanych linii GPIO przeczytasz tutaj.

Oszczędzanie energii na poziomie krzemu

Najniższy pobór mocy zależy wreszcie od technologii półprzewodnikowej. Już przy historycznej serii STM32L1, będącej pierwszym ukłonem inżynierów ST w stronę konstruktorów urządzeń ULP, firma wskazywała na zastosowanie własnego procesu ultra-low-leakage, ukierunkowanego na ograniczenie prądów upływu tranzystorów tworzących krzemową strukturę mikrokontrolera. W nowszych konstrukcjach dochodzi coraz dalej idąca optymalizacja napięcia roboczego. Z kolei STM32U3 jest pierwszą rodziną STM32 wykorzystującą architekturę near-threshold, czyli pracę logiki przy napięciach zbliżonych do napięcia progowego tranzystorów. Przykładowo w przypadku STM32U3B5 możliwe jest zejście do około 11 µA/MHz (!) podczas normalnej aktywności rdzenia.

ST łączy tę technikę z techniką nazywaną Adaptive Voltage Scaling, kompensującą rozrzut parametrów poszczególnych struktur na etapie produkcji. Warto przy tym odróżnić dwa rodzaje strat: obniżanie VCORE szczególnie skutecznie redukuje dynamiczną składową poboru mocy, zależną w przybliżeniu od kwadratu napięcia, natomiast odpowiedni proces technologiczny, odcinanie nieaktywnych domen oraz zoptymalizowany projekt komórek logicznych służą przede wszystkim ograniczeniu składowej statycznej.

Podsumowanie

Arsenał technik zapewniających energooszczędność serii STM32, które należą do segmentu ULP, wykracza daleko poza programowe żonglowanie trybami obniżonego poboru mocy. Właściwa architektura wykorzystuje możliwie niskie napięcie rdzenia VCORE, dobiera LDO lub SMPS stosownie do aktualnego obciążenia, pozostawia aktywne tylko potrzebne domeny zegarowe i pamięciowe, a rutynowe operacje przekazuje peryferiom zoptymalizowanym pod kątem użycia w trybach obniżonego poboru mocy, takim jak LPUART, LPTIM, LPDMA itd. Mariaż różnych technik pozwala – w przypadku najbardziej zaawansowanych układów STM32 – pozostawić rdzeń zatrzymany także podczas akwizycji danych z ADC, komunikacji czy zapisu danych do RAM. Dopiero połączenie opisanych mechanizmów z technologią krzemową o małych prądach upływu pozwala zminimalizować energię całego cyklu pracy urządzenia.

Źródła

Sponsorem artykułu jest firma Masters

Masters jest Oficjalnym Dystrybutorem STMicroelectronics w Polsce, Czechach, Słowacji, Ukrainie i Mołdawii. Współpracujemy nieprzerwanie od 2003 roku. Dowiedz się więcej o produktach, usługach i warsztatach, które wspólnie tworzymy na www.masters.com.pl

Przemysław
Przemysław
Redaktor Naczelny portalu HardwareDesigner.pl. Konstruktor elektronik i programista embedded z ponad 20-letnim doświadczeniem w projektowaniu PCB. Z wykształcenia elektronik medyczny i elektroradiolog, specjalizuje się w projektowaniu i badaniach aparatury medycznej, laboratoryjnej i pomiarowej.

Czytaj więcej

Wybrane dla Ciebie