STM32L: energooszczędne mikrokontrolery z Cortex-M3
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 z rdzeniem zasilanym napięciem 1,2 V, taktowanym 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 – wysłanie w krótkim czasie niezbędnych danych do współpracującego komputera.
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 µA.
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. Trzeba pamiętać, że każde przełączenie mikrokontrolera z trybu obniżonego poboru mocy do pełnej aktywności wymaga nieco czasu, przez który program użytkownika nie jest wykonywany.
Oszczędzanie energii nie jest zbieżne ze wzrostem wydajności mikrokontrolera, co może powodować obawy o realne możliwości mikrokontrolerów STM32L. Testy CoreMark wykazują, że mikrokontrolery STM32L dobrze sobie radzą uzyskując wynik 1,05 DMIPS/MHz, 1,79 CM/MHz (@ >16MHz, 10,1 mA), co jest doskonałym wynikiem m.in. w stosunku do uzyskiwanych przez – powszechnie uznawane za wzór energooszczędności – mikrokontrolery MSP430F5 (0,39 DMIPS/MHz, 0,62 CM/MHz, @25 MHz max, 8,7 mA).
Wartości parametrów podane w artykule pochodzą z pomiarów własnych, danych producenta lub wyników testów www.CoreMark.org.