STM32L: Ultra Low Power w 32-bitowym wydaniu

| Technika

Mikrokontrolery STM32 wykreowały sobie wizerunek najpopularniejszych układów 32-bitowych, wyposażonych w szybkie wersje rdzeni Cortex-M3 i Cortex-M4F. Nieco mniej znana jest druga twarz rodziny STM32: do tej rodziny należą także energooszczędne mikrokontrolery STM32L przeznaczone do aplikacji mobilnych. Im właśnie poświęcamy artykuł.

STM32L: Ultra Low Power w 32-bitowym wydaniu

Rys. 1.

Rosnące wymagania aplikacji mobilnych tworzą współcześnie szerokie obszary aplikacyjne dla energooszczędnych mikrokontrolerów o dużej wydajności, takich jak na przykład produkowane przez STMicroelectronics STM32L. Atutem tych mikrokontrolerów - poza niewielkim poborem mocy - jest kompatybilność z pozostałymi mikrokontrolerami z popularnej rodziny STM32 i wynikająca z tego możliwość względnie łatwego przenoszenia oprogramowania pomiędzy nimi.

Mikrokontrolery STM32L wyposażono w rdzeń Cortex-M3, a także peryferia o nowatorskiej konstrukcji, których budowę zoptymalizowano pod kątem minimalizacji poboru energii podczas normalnej pracy i możliwości ich całkowitego wyłączenia, jeżeli nie są w danej chwili wykorzystywane.

Rdzenie w prezentowanych mikrokontrolerach mogą być taktowane z maksymalną częstotliwością do 32 MHz, a źródło sygnału zegarowego może być zarówno zewnętrzne (rezonator lub generator), jak i wewnętrzne (dzięki wbudowanemu generatorowi niskomocowemu), co korzystnie wpływa na ograniczenie poboru mocy.

Dzięki zastosowanym rozwiązaniom układowym i technologicznym, CPU w STM32L pobiera prąd o natężeniu zaledwie od 50 do 285 µA/MHz (w zależności od napięcia zasilającego i innych parametrów). Rodzina STM32L składa się obecnie z trzech grup mikrokontrolerów (pokazano je na rysunku 1 na tle całej rodziny STM32):

  • STM32L151 - mikrokontrolery wyposażone tak samo jak mikrokontrolery z grupy STM32L152, bez wbudowanego wewnętrznego kontrolera LCD,
  • STM32L152 - odpowiedniki mikrokontrolerów STM32L151 z wbudowanym kontrolerem segmentowych LCD,
  • STM32L162 - odpowiedniki mikrokontrolerów STM32L152 z wbudowanym koprocesorem kryptograficznym.

Już w założeniach koncepcyjnych mikrokontrolery STM32L optymalizowano konstrukcyjnie i technologicznie pod kątem aplikacji wymagających minimalizacji poboru energii. Zastosowanie do produkcji mikrokontrolerów z rodziny STM32L technologii o wymiarze charakterystycznym 130 nm pozwoliło na obniżenie napięcia zasilającego do wartości 1,65 V, przy czym mikrokontrolery mogą pracować w urządzeniach zasilanych napięciem do 3,6 V - zakres dopuszczalnych napięć zasilających pozwala bardzo efektywnie wykorzystać dynamikę odwracalnych ogniw zasilających.

Technologia półprzewodnikowa zastosowana do produkcji mikrokontrolerów STM32 zapewnia minimalizację prądów pasożytniczych, dzięki czemu pobór prądu przez mikrokontroler w stanie spoczynku (standby) nie przekracza 0,3 µA, a w stanie stop nie przekracza 0,57 µA (obydwie wartości dla zasilania 3,6 V).

Tak dobre wyniki osiągnięto m.in. dzięki zastosowaniu zaawansowanego systemu taktowania bloków peryferyjnych, co jest rozwiązaniem wprowadzonym na rynek wraz z mikrokontrolerami wyposażonymi w rdzenie z rodziny Cortex-M.

Możliwość indywidualnego włączania i wyłączania sygnałów taktujących bloki peryferyjne, a także możliwość doboru częstotliwości tych sygnałów powodują (w technologii CMOS natężenie pobieranego prądu jest zależne od częstotliwości przełączania tranzystorów), że projektant ma duży wpływ na sposób wykorzystania w tworzonej aplikacji wewnętrznych bloków peryferyjnych i w wyniku tego na pobór mocy przez mikrokontroler podczas pracy.

Ograniczenie poboru mocy w mikrokontrolerach STM32L uzyskano także dzięki możliwości różnicowania wartości napięcia zasilającego rdzeń w zależności od wykonywanego zadania, co wiąże się także z maksymalną częstotliwością taktowania CPU. Pozwala to na przykład gromadzić dane za pomocą przetwornika A/C zasilanego napięciem 1,2 V, taktowanego sygnałem zegarowym o częstotliwości 1 MHz i następnie - po przełączeniu napięcia zasilającego rdzeń na 1,8 V, zwiększeniu napięcia zasilającego rdzeń i włączeniu taktowania interfejsu USB - na wysłanie w krótkim czasie niezbędnych danych do współpracującego komputera.

W chwili wprowadzenia na rynek mikrokontrolery STM32L były wyposażane w pamięć Flash o pojemności 64 lub 128 KB, obecnie dostępne są wersje z pamięciami Flash o pojemności od 32 KB do 384 KB (przy tej pojemności dual-bank) i pamięcią RAM od 10 KB DO 48 KB (zamiast 10/16 KB dostępnych w pierwszych mikrokontrolerach STM32L).

Rys. 2.

Zawartość pamięci programu jest chroniona za pomocą bloków sprzętowych MPU (Memory Protection Unit - mechanizm przydatny przy współdzieleniu pamięci przez różne zadania realizowane przez CPU) oraz ECC (Error Correction Code - chroni mikrokontroler przed wykonywaniem błędnych kodów w przypadku uszkodzenia Flash).

Działanie mechanizmów ECC wspiera wysoką trwałość pamięci Flash, która według danych producenta może być kasowana aż 10 000 razy. Standardowym wyposażeniem mikrokontrolerów STM32L jest także pamięć EEPROM o pojemności 4 KB, której zawartość także chroniona za pomocą bloku ECC.

Żywotność tej pamięci producent określa na 300 000 cykli kasowanie/zapis każdego 128-bitowego bloku. Wraz z poszerzeniem rodziny STM32L o nowe typy mikrokontrolerów producent opublikował nowe wersje dokumentacji, w których zweryfikowano i zmieniono wartości niektórych istotnych parametrów, w tym:

  • pobór prądu w trybie standby z aktywnym RTC wynosi 1,1 µA (@3,6 V), zamiast wcześniej podawanej wartości 1,4 µA,
  • pobór prądu w trybie stop z aktywnym RTC wynosi 1,45 µA (@3,6 V), zamiast wcześniej podawanej wartości 1,9 µA.

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.

Niektóre nowe typy mikrokontrolerów STM32L charakteryzują się ponadto rozszerzonym zakresem temperatur pracy - producent przesunął górną granicę dopuszczalnej temperatury pracy struktury półprzewodnikowej z +85°C na +105°C!

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 I²C, 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). Ważnym elementem wyposażenia prezentowanych mikrokontrolerów są wbudowane w bloki GPIO komórki sensorów pojemnościowych, które można wykorzystać do budowy klawiatur i nastawników bezstykowych.

Ich implementację ułatwiają przykłady i biblioteka STM32 Touch Sensing Library udostępniona bezpłatnie przez firmę STMicroelectronics. W zależności od rodzaju obudowy, liczba dostępnych GPIO mieści się w przedziale od 36 do 114. Producent zadbał o kompatybilność rozmieszczenia wyprowadzeń i większości możliwości funkcjonalnych bloków peryferyjnych mikrokontrolerów STM-32L 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.

Rys. 3.

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.

Firma STMicroelectronics z myślą o konstruktorach zainteresowanych mikrokontrolerami STM32L przygotowała dwa zestawy ewaluacyjne z serii Discovery, które umożliwiają użytkownikom samodzielną ocenę możliwości mikrokontrolerów STM32L. Są to:

  • STM32L-Discovery (rys. 2) - typowy zestaw z serii Discovery, wyposażony m.in. w alfanumeryczny LCD i suwakowy nastawnik analogowy,
  • M24LR-Discovery (rys. 3) - zestaw dedykowany dwuportowym pamięciom EEPROM z serii M24LR, w które wbudowano bloki umożliwiające pozyskiwanie zasilania dla mikrokontrolera STM32L z toru transmisyjnego RFID (zasilanie bezprzewodowe).

Na wygodę korzystania z prezentowanych mikrokontrolerów ma ponadto duży wpływ dostępność bezpłatnego oprogramowania narzędziowego, jak choćby kompletne środowiska programistyczne: TrueSTUDIO firmy Atollic, MDK-ARM firmy Keil/ARM oraz EWB firmy IAR, a także dostępność tanich narzędzi sprzętowych - w tym programatorów- debuggerów JTAG, takich jak J-Link firmy Segger czy ST-Link firmy STMicroelectronics.

Piotr Zbysiński