Układy z rdzeniem ARM Cortex-M na dobre zagościły w ofercie producentów mikrokontrolerów. Co najmniej jedną rodzinę takich układów ma w swoim portfolio produktów większość liczących się w tej branży firm, w tym tacy potentaci jak STMicroelectronics, NXP Semiconductors, Texas Instruments, Freescale, Infineon czy Atmel.
W sytuacji gdy na rynku dostępnych jest szereg rodzin mikrokontrolerów mniej lub bardziej ale jednak do siebie podobnych pod względem architektury, ceny, narzędzi czy wyposażenia w zintegrowane peryferia i zasoby pamięci, każdy producent stara się pokazać w czym jego produkt jest lepszy od rozwiązań konkurencji. Przykładowo dla mikrokontrolerów z rdzeniem Cortex-M4 firmy za jeden z wyznaczników "lepszości" przyjęły maksymalną częstotliwość pracy układów.
Gdy większość producentów oferowała mikrokontrolery mogące pracować z częstotliwością taktowania nie większą niż 120 MHz (przykładowo rodzina XMC4000 firmy Infineon czy LPC4000 firmy NXP Semiconductors), bardziej aktywne na tym polu były firmy Atmel, Freescale i STMicroelectronics. Atmel oferuje rodzinę SAM4, której wybrane modele mogą pracować z częstotliwością do 150 MHz. Taką samą maksymalną częstotliwość taktowania uzyskują mikrokontrolery Kinetis K firmy Freescale.
O krok dalej poszła firma STMicroelectronics, która najpierw wprowadziła do sprzedaży mikrokontrolery STM32F4 pracujące z sygnałem zegarowym 168 MHz, by potem jeszcze przebić ten wynik i zaproponować układy STM32F4 o maksymalnej częstotliwości pracy 180 MHz. Pytaniem otwartym pozostaje na ile klienci wybierając mikrokontroler do swojej aplikacji kierują się maksymalną częstotliwością pracy układu, a na ile jest to zamierzony zabieg marketingowy producentów.
Zupełnie inny wyścig, tym razem dużo cenniejszy z punktu widzenia konstruktorów, rozpoczął się gdy na rynek zaczęły trafiać mikrokontrolery z rdzeniem ARM Cortex- M0+, który jest najnowszym rdzeniem z serii Cortex-M w ofercie firmy ARM (rysunek 1). Jak wiadomo, rdzeń ten jest rozwinięciem jednostki Cortex-M0 - najmniejszego i najprostszego spośród wszystkich rdzeni z rodziny Cortex (rysunek 2).
Ma to być rozwiązanie, które stosowane będzie w tanich i nieskomplikowanych mikrokontrolerach 32-bitowych, które będą konkurencją dla układów 8-bitowych dzięki wyższej wydajności obliczeniowej, nowoczesnej architekturze i najnowszym narzędziom, przy zachowaniu zbliżonej ceny. Do tych cech dodać należy jeszcze obowiązkowo energooszczędność. Właśnie ten parametr stał się głównym wyznacznikiem "lepszości" w świecie mikrokontrolerów z rdzeniem Cortex-M0+.
Debiut w ostatnich tygodniach nowej rodziny układów EFM32 Zero Gecko z rdzeniem Cortex-M0+ jest dobrym pretekstem, aby przyjrzeć się bliżej wszystkim dostępnym obecnie rodzinom mikrokontrolerów z rdzeniem Cortex-M0+ i zaprezentować ich zestawienie porównawcze, ze szczególnym uwzględnieniem parametru energooszczędności. Dostępne obecnie na rynku układy z rdzeniem Cortex-M0+ to: Kinetis L firmy Freescale, LPC800 firmy NXP Semiconductors, SAM D20 firmy Atmel oraz wspomniane już EFM32 Zero Gecko firmy Silicon Labs.
Częstotliwość pracy
Pierwszym parametrem mikrokontrolerów z rdzeniem Cortex-M0+, który zostanie porównany, jest maksymalna częstotliwość pracy. Zestawienie porównawcze umieszczono w tabeli 1. Przedstawione wartości są stosunkowo niskie, co jednak nie jest zaskoczeniem, wziąwszy pod uwagę fakt, iż przeznaczeniem układów z rdzeniem Cortex-M0+ są raczej mało skomplikowane aplikacje, które nie wymagają wysokiej mocy obliczeniowej.
Producenci obrali dwie różne drogi. Firmy NXP Semiconductors i Silicon Labs zaprojektowały mikrokontrolery, których maksymalna częstotliwość taktowania wynosi odpowiednio 30 i 24 MHz. Z kolei firmy Freescale i Atmel zdecydowały się na układy mogące pracować z sygnałem zegarowym do 48 MHz. Różnica między skrajnymi częstotliwościami maksymalnymi wynosi zatem 24 MHz. Jako wartość bezwzględna nie jest to dużo, jednak odnosząc do siebie poszczególne częstotliwości maksymalne widać, że mikrokontrolery Kinetis L i SAM D20 mogą być taktowane aż dwukrotnie szybciej niż układy EFM32 Zero Gecko.
Pojemność wbudowanej pamięci
Drugim kryterium porównawczym jest pojemność pamięci wewnętrznej mikrokontrolerów. Zestawienie przedstawiono w tabeli 2. Widać tu pewną analogię do zaprezentowanego wcześniej zestawienia częstotliwości maksymalnej taktowania, mianowicie porównywalne wartości pojemności pamięci mają mikrokontrolery firm NXP Semiconductors i Silicon Labs oraz Freescale i Atmel.
Analogią jest również bardzo duża dysproporcja dostępnych opcji pojemności pamięci między tymi dwoma grupami. Skrajny przypadek reprezentują mikrokontrolery LPC800, których maksymalna pojemność pamięci Flash jest aż 16-krotnie mniejsza niż maksymalna pojemność pamięci Flash układów Kinetis L i SAM D20.
Dostępne obudowy, liczba GPIO
Trzecim przyjętym kryterium porównawczym są dostępne obudowy mikrokontrolerów i maksymalna liczba wyprowadzeń ogólnego przeznaczenia (GPIO - General Purpose Input/Output). Zestawienie przedstawiono w tabeli 3. W tym zakresie najszersze możliwości oferuje firma Freescale. Jej mikrokontroler z grupy KL02 dostępny jest w miniaturowej obudowie CSP20 (rysunek 3a), której wymiary wynoszą zaledwie 1.9×2 mm.
Jest to według zapewnień producenta najmniejszy mikrokontroler z rdzeniem ARM dostępny obecnie na rynku. Firma Freescale może zaproponować również układ z największą liczbą wyprowadzeń ogólnego przeznaczenia. Wybrane mikrokontrolery z grupy KL3x i KL4x dysponują nawet 84 takimi wyprowadzeniami. Warto również zwrócić uwagę na jedną z obudów mikrokontrolerów LPC800. Jest to typ DIP8 - jedyna w zestawieniu obudowa do montażu przewlekanego (rysunek 3b).
Zakres napięcia zasilania
Kolejnym kryterium, według którego zostaną porównane mikrokontrolery z rdzeniem Cortex-M0+ jest zakres napięcia zasilania. Zestawienie przedstawiono w tabeli 4. Szerokość dopuszczalnego zakresu dla wszystkich układów jest podobna i wynosi ok. 1 V. Najszerszym zakresem napięcia zasilania charakteryzują się mikrokontrolery SAM D20 (2.01 V), natomiast najgorzej pod tym względem wypadają mikrokontrolery LPC800 (1.8 V). Wszystkie rodziny charakteryzują się zbliżonym minimalnym i maksymalnym dopuszczalnym poziomem napięcia zasilania. Najniższą minimalną wartością zasilania cechują się układy SAM D20 (1.62 V), a najwyższą maksymalną wartością napięcia zasilania - mikrokontrolery EFM32 Zero Gecko (3.8 V).
Płytki uruchomieniowe
Ważnym parametrem oceny każdej rodziny mikrokontrolerów są nie tylko parametry układów, ale też ekosystem dostępnych narzędzi. Istotną grupą narzędzi są płytki uruchomieniowe, pozwalające tanim kosztem przystąpić do pracy z mikrokontrolerem. Odpowiednie zestawienie płytek uruchomieniowych dla mikrokontrolerów z rdzeniem Cortex-M0+ przedstawiono w tabeli 5. Najwięcej płytek uruchomieniowych oferuje firma Freescale - aż pięć, w porównaniu do tylko jednej płytki każdego innego producenta.
Taka różnorodność daje konstruktorom spore możliwości wyboru najbardziej odpowiedniej płytki, a właściwie modelu mikrokontrolera, gdyż na każdej płytce Freedom zastosowano inny model układu z rodziny Kinetis L. Zaletą płytek uruchomieniowych firmy Freescale jest też cena. Są to najtańsze narzędzia spośród wszystkich wymienionych w zestawieniu. Z kolei najdroższą płytką jest EFM32 Zero Gecko Starter Kit. Wysokość ceny wydaje się jednak uzasadniona, gdyż narzędzie to dysponuje najbogatszym wyposażeniem, w tym przede wszystkim kolorowym wyświetlaczem. Zdjęcia płytek zaprezentowano na rysunku 4.
Cena
Kolejnym kryterium porównawczym mikrokontrolerów z rdzeniem Cortex-M0+ jest ich jednostkowa cena zakupu dla zamówień detalicznych (od jednej sztuki układu). Jako że różni dystrybutorzy mogą mieć różne polityki cenowe odnośnie oferowanych mikrokontrolerów, ważnym jest, aby porównać ceny omawianych układów u jednego dystrybutora. Firmą mającą w swojej ofercie mikrokontrolery Kinetis L, LPC800, SAM D20 i EFM32 Zero Gecko jest przykładowo Mouser Electronics.
W zestawieniu porównawczym (tabela 6) posłużono się cenami tego producenta. Najkorzystniej cenowo wypadają mikrokontrolery EFM32 Zero Gecko. Jedna sztuka najtańszego w ofercie Mouser Electronics modelu EFM32ZG108F32- -QFN24 (32 kB Flash, 4 kB SRAM) kosztuje tylko 0.776 Euro. Z kolei na drugim końcu zestawienia uplasowały się mikrokontrolery SAM D20. Jedna sztuka najtańszego w portfolio Mouser Electronics modelu ATSAMD20E14 (16 kB Flash, 2 kB SRAM) kosztuje aż 1.75 Euro. Jest to wartość ponad dwukrotnie wyższa niż w przypadku modelu firmy Silicon Labs.
Zintegrowane peryferia
Istotnym parametrem wpływającym na przydatność mikrokontrolera do danej aplikacji są zintegrowane w nim peryferia. Z tego względu rodzaj i liczba peryferiów jest następnym kryterium, które przyjęto do porównania mikrokontrolerów z rdzeniem Cortex-M0+. Zestawienie przedstawiono w tabeli 7.
Pod względem peryferiów analogowych podobnie prezentują się rodziny mikrokontrolerów Kinetis L, SAM D20 oraz EFM32 Zero Gecko. Wyposażenie obejmuje przetwornik A/C, przetwornik C/A oraz komparator(y). Warto zauważyć, że w przypadku rodziny EFM32 Zero Gecko przetwornik C/A nie zamienia wartości cyfrowej na napięcie, ale na prąd. Znacznie gorzej pod względem zasobów analogowych wypada rodzina mikrokontrolerów LPC800, której układy dysponują tylko komparatorem.
Analizując zestawienie pod kątem interfejsów komunikacyjnych uwagę zwracają rodziny mikrokontrolerów Kinetis L i SAM D20. Wybrane układy pierwszej rodziny wyróżniają się tym, że są wyposażone nie tylko w interfejs(y) I2C, SPI i UART tak jak układy innych analizowanych rodzin, ale też dysponują interfejsem USB. Z kolei w drugiej rodzinie producent zastosował autorskie rozwiązanie o nazwie SERCOM. Jest to peryferium, które może zostać skonfigurowane do pracy jako interfejs komunikacyjny UART/ USART, SPI lub I2C. Dzięki temu programista nie jest ograniczony do jednego lub dwóch interfejsów danego typu w mikrokontrolerze.
Ponadto każda z rodzin mikrokontrolerów dysponuje kilkoma właściwymi tylko dla siebie peryferiami. W przypadku układów Kinetis L ważnym peryferium jest z pewnością kontroler wyświetlacza LCD. Z kolei przydatnym zasobem układów LPC800 jest Switch Matrix. Mechanizm ten pozwala elastycznie przyporządkowywać wyjścia i wejścia peryferiów do wyprowadzeń układu.
Należy jednak zauważyć, że podobną funkcjonalnością cechują się też mikrokontrolery Kinetis L. Wybór przyporządkowania peryferiów do wyprowadzeń można realizować za pomocą narzędzia programowego Processor Expert. W mikrokontrolerach SAM D20 ciekawym rozwiązaniem jest Event System - mechanizm pozwalający na wzajemną komunikację peryferiów mikrokontrolera bez użycia CPU. Event System pozwala tworzyć tak zwane zdarzenia (events). Są to zdefiniowane dla wybranych peryferiów warunki, które jeśli zostaną spełnione, wymuszą wykonanie zdefiniowanych akcji przez inne peryferia. Rozwiązaniem analogicznym w mikrokontrolerach EFM32 Zero Gecko jest peryferium o nazwie Peripheral Reflex System. Ponadto układy te jako jedyne w zestawieniu wyposażone są w moduł szyfrujący AES.
Energooszczędność
Na ocenę energooszczędności mikrokontrolera składa się kilka parametrów. Aby je łatwo zidentyfikować, warto prześledzić typowe zachowanie mikrokontrolera w systemie. W ramach każdej aplikacji mikrokontroler ma przewidzianą określoną liczbę zadań do realizacji. W większości przypadków nie są to zadania, na których mikrokontroler koncentruje się przez dłuższy czas.
Są to zazwyczaj zadania trwające krótko, ale powtarzające się: albo w losowych momentach czasu na skutek określonych bodźców (np. wywoływanych przerwaniem będącym skutkiem naciśnięcia przez użytkownika przycisku), albo też w momentach czasu powtarzających się cyklicznie (np. periodyczny odczyt wartości z czujnika) (rysunek 5). Oznacza to, że są okresy czasu, gdy mikrokontroler realizuje zadania, ale są też okresy czasu, w których mikrokontroler pozostaje bezczynny.
W momentach pracy mikrokontrolera jego jednostka obliczeniowa i peryferia pozostają aktywne, stąd tryb pracy układu nazywa się trybem aktywnym. W momentach bezczynności mikrokontrolera jego jednostka obliczeniowa może pracować ze zredukowaną częstotliwością, bądź może zostać całkowicie wyłączona, razem w wybranymi peryferiami. Mikrokontroler pozostaje wtedy w trybie o niskim poborze prądu, inaczej zwanym trybem uśpienia. Na podstawie przedstawionego scenariusza działania mikrokontrolera można zidentyfikować parametry, które mają wpływ na to w jakim stopniu jest on energooszczędny.
Pierwszym takim parametrem jest wartość pobieranego przez układ prądu w trybie aktywnej pracy. Parametr ten definiuje przeważnie jako wartość prądu przypadająca na jeden MHz taktowania mikrokontrolera podczas pracy z maksymalnym sygnałem zegarowym. Kolejne dwa parametry są związane z trybami uśpienia. Jest to pobór prądu w trybach uśpienia oraz tak zwany czas wybudzenia (czas powrotu z trybu uśpienia do trybu aktywnej pracy). Dodatkowo korzystny wpływ na energooszczędność mikrokontrolera mogą mieć autorskie rozwiązania producenta, zaimplementowane w układzie.
Aby zestawienie wyników miało sens, wybrano wartości poboru prądu i czasu wybudzenia mikrokontrolerów, które zmierzone zostały w możliwie zbliżonych warunkach pracy układów. Warunki te można podzielić na trzy grupy. Pierwsza grupa warunków określa parametry środowiska pracy. Wyniki do zestawienia wybrano dla temperatury otoczenia 25 oC oraz dla napięcia zasilania 3 V (lub wartości możliwie zbliżonej). Druga grupa warunków definiuje konfigurację mikrokontrolera. Możliwie duża liczba peryferiów pozostaje wyłączona, co pozwala określić minimalną wartość pobieranego prądu w danym trybie pracy. Dodatkowo w przypadku różnych wariantów trybu aktywnego, brany pod uwagę był tylko tryb domyślny.
Zestawienie dotyczące typowego poboru prądu mikrokontrolerów w trybie aktywnym przedstawiono w tabeli 8. Wyniki podzielono na dwie grupy. Elementem różnym dla obu wariantów jest rodzaj wykonywanego przez mikrokontroler kodu. W pierwszym scenariuszu jest to kod pustej, nieskończonej pętli - while(1). W drugim scenariuszu jest to kod algorytmu.
Zdecydowano się przedstawić dwa takie przypadki, gdyż oba są równie często przytaczane przez producentów mikrokontrolerów przy okazji omawiania ich energooszczędności. Należy pamiętać, że scenariusz z kodem pętli nieskończonej while(1) jest przypadkiem, w którym układ pobiera najmniej prądu. Niestety jest to mało reprezentatywny wariant, gdyż w rzeczywistych warunkach nie ma aplikacji, w której mikrokontroler wykonuje pustą, nieskończoną pętlę w trybie aktywnym. Z tego względu dużo bardziej miarodajny jest wariant, w którym mikrokontroler wykonuje algorytm.
Najważniejsze aspekty dotyczące poboru prądu w trybie aktywnym zostaną oddzielnie skomentowane dla każdej rodziny mikrokontrolerów. W pierwszej kolejności omówione zostaną wyniki uzyskane przez mikrokontrolery Kinetis L. Układy te dysponują nie jednym, a dwoma trybami pracy aktywnej.
Podstawowym trybem jest RUN. Bardziej energooszczędny jest drugi tryb - VLPR (Very Low Power Run), który jednak w przeciwieństwie do RUN nie daje możliwości taktowania mikrokontrolera sygnałem zegarowym o nominalnej wartości (maksymalnie 4 MHz). Efektywność energooszczędności w obu trybach - RUN i VLPR - może zostać zwiększona poprzez włączenie opcji RUNCO (RUN Compute Operation). Gdy opcja ta jest aktywna, układ może wykonywać jednak tylko operacje obliczeniowe, gdyż peryferia nie są w tych warunkach aktywne.
Jako że celem zestawienia jest porównanie podstawowych trybów pracy aktywnej mikrokontrolerów, zarówno tryb VLPR oraz opcja RUNCO mikrokontrolerów Kinetis L nie powinny zostać uwzględnione. Wyznacznikiem energooszczędności powinien być tryb RUN. Tak jest w przypadku wyników dla mikrokontrolera wykonującego kod pętli while(1). Niestety z powodu braku odpowiednich danych w dokumentacji firmy Freescale, dla mikrokontrolera wykonującego kod algorytmu (test CoreMark) wzięte pod uwagę mogły zostać tylko wyniki dla trybu RUN z opcją RUNCO.
Dla układów Kinetis L wartość prądu trybie aktywnym przedstawiona jest w formie przedziału. Jest tak, gdyż firma Freescale w dokumentacji każdego mikrokontrolera podaje właściwy dla niego pobór prądu. Z kolei firmy Atmel, Silicon Labs i NXP Semiconductors podają jeden zestaw danych dla całej rodziny układów, dlatego zamiast przedziału w zestawieniu jest tylko jedna wartość.
Jako drugie skomentowane zostaną wybrane aspekty dotyczące poboru prądu w trybie aktywnym mikrokontrolerów LPC800 (tryb aktywny nosi nazwę Active mode). W kontekście tych układów należy zaznaczyć, że mogą one korzystać z tak zwanych profili, które są zestawami opcji konfiguracyjnych optymalizujących działanie mikrokontrolera w zakresie mocy obliczeniowej lub energooszczędności. Dostępne są następujące profile: Default mode, CPU performance mode, Efficiency mode oraz Low-current mode.
W zestawieniu dla kodu pętli while(1) oraz algorytmu (test Core-Mark) przedstawiono wyniki odnoszące się do profilu Default mode, zgodnie z przyjętą koncepcją porównywania podstawowych trybów aktywnych i ich domyślnej konfiguracji. Zaznaczyć jednak należy, że podane wartości zostały zmierzone dla napięcia zasilania wynoszącego nie 3, a 3.3 V oraz, że układ nie pracował z częstotliwością maksymalną 30, a 24 MHz (tylko dla przypadku kodu algorytmu).
W przypadku mikrokontrolerów SAM D20 domyślnym trybem jest ACTIVE mode. W dokumentacji tych układów, podobnie jak dla układów LPC800, brak jest wymienionych wartości poboru prądu dla napięcia zasilania 3 V. Zarówno dla kodu pętli while(1), jak też kodu algorytmu (test CoreMark) przedstawiono wyniki dla napięcia zasilania 3.3 V.
Ostatnia rodzina mikrokontrolerów to EFM32 Zero Gecko (tryb aktywny nazywa się EM0). W dokumentacji nie zamieszczono danych na temat poboru prądu układów wykonujących kod pętli while(1), stąd zabrakło odpowiednich wyników w zestawieniu. Dane na temat poboru prądu układów wykonujących algorytm są udostępnione, należy jednak zaznaczyć, że wybranym na potrzeby pomiarów algorytmem nie jest test CoreMark, jak miało to miejsce w przypadku mikrokontrolerów Kinetis L, LPC800 i SAM D20, ale program znajdujący liczby pierwsze.
Chcąc wyciągnąć wnioski z tak przygotowanego zestawienia należy w pierwszej kolejności zastanowić się jaki wpływ na wybrane wyniki miały odstępstwa od przyjętych kryteriów dotyczących warunków, w jakich miały zostać wykonane pomiary poboru prądu. Po pierwsze pomiary dla mikrokontrolerów LPC800 i SAM D20 zostały wykonane w warunkach napięcia zasilania 3.3 V, a więc o 0.3 V więcej niż w przypadku mikrokontrolerów Kinetis L i EFM32 Zero Gecko.
Jako że pobór prądu wzrasta razem z poziomem napięcia zasilania, należy stwierdzić, że w warunkach gdy napięcie zasilania wszystkich układów wynosiłoby 3 V, wartości poboru prądu mikrokontrolerów LPC800 i SAM D20 byłyby nieco niższe. Po drugie firma NXP Semiconductors nie podała wyniku poboru prądu swoich mikrokontrolerów wykonujących kod testu CoreMark dla maksymalnej częstotliwości taktowania (30 MHz), a niższej (24 MHz). W przypadku nominalnej wartości sygnału zegarowego pobór prądu na MHz byłby nieco większy. Po trzecie na potrzeby pomiaru poboru prądu mikrokontrolerów EFM32 Zero Gecko w warunkach wykonywania algorytmu firma Silicon Labs wykorzystała program znajdujący liczby pierwsze.
Z kolei firmy Freescale, NXP Semiconductors oraz Atmel użyły do analogicznych testów swoich układów programu będącego testem CoreMark. Z całą pewnością test CoreMark jest bardziej skomplikowany obliczeniowo niż program znajdujący liczby pierwsze, dlatego należy stwierdzić, że mikrokontrolery EFM32 Zero Gecko pobierałyby więcej prądu w przypadku wykonywania kodu testu CoreMark. Ostatnią z rzeczy, o jakiej trzeba wspomnieć, jest fakt wykonywania przez mikrokontrolery Kinetis L kodu testu CoreMark w trybie RUN z opcją RUNCO, która ogranicza funkcjonalność mikrokontrolera przez zablokowanie sygnałów zegarowych peryferiów. Oznacza to, że w przypadku wykonywania kodu testu Core-Mark mikrokontroler Kinetis L w trybie RUN bez opcji RUNCO pobierałby nieco więcej prądu.
Mając nawet świadomość tego, że powyższe czynniki wpływają na zwiększenie czy zmniejszenie poboru prądu, nie da się niestety określić precyzyjnie jak duży jest to wpływ. Z tego powodu trudno jest jednoznacznie sklasyfikować porównywane ze sobą mikrokontrolery pod kątem energooszczędności w trybie aktywnym. Wydaje się jednak, że można pokusić się o sformułowanie dosyć ogólnego wniosku mówiącego, że wszystkie porównywane mikrokontrolery charakteryzują się w miarę zbliżonym, wysokim poziomem energooszczędności w trybie aktywnym.
Zestawienie dotyczące trybów uśpienia mikrokontrolerów przedstawiono w tabeli 9. Analizując je warto skupić się na dwóch przypadkach. W pierwszym scenariuszu wzięte zostały pod uwagę tryby, w których sygnał zegarowy taktujący rdzeń Cortex-M0+ jest wstrzymany, ale peryferia mikrokontrolera pozostają aktywne i mogą być taktowane z maksymalną częstotliwością.
Są to tryby: WAIT (dla mikrokontrolerów Kinetis L), Sleep mode (LPC800), IDLE 0 (SAM D20) oraz EM1 Sleep Mode (EFM32 Zero Gecko). Wziąwszy pod uwagę tylko czas wybudzenia najkorzystniej w tym porównaniu wypadają układy firmy Freescale oraz Silicon Labs (wartość bliska zeru). Jeśli chodzi o całkowity pobór prądu w trybie uśpienia, to liderem jest rodzina mikrokontrolerów EFM32 Zero Gecko. Jednakże po przeliczeniu wartości prądu na MHz okazuje się, że wyniki wszystkich porównywanych mikrokontrolerów są w miarę do siebie zbliżone.
Drugim analizowanym przypadkiem były tryby pracy o najniższym poborze prądu, które umożliwiają samodzielne wybudzenie się mikrokontrolera ze stanu uśpienia. Są to: VLLS0 (dla mikrokontrolerów Kinetis L), Deep power-down mode with wake-up timer (LPC800), STANDBY (Atmel) oraz EM4 Shutoff Mode (EFM32 Zero Gecko). Najkorzystniej pod względem zużycia prądu, jak również biorąc pod uwagę relację zużycie prądu - czas wybudzenia, wypadają układy firmy Silicon Labs.
Po przeanalizowaniu trybów pracy warto przyjrzeć się zastosowanym w mikrokontrolerach rozwiązaniom zwiększającym ich energooszczędność. Układy Kinetis L dysponują wspomnianymi już wcześniej: drugim trybem aktywnej pracy o nazwie VLPR oraz opcją RUNCO. Dodatkowo mikrokontrolery firmy Freescale są wyposażone w moduł DMA, dzięki któremu dane między peryferiami mogą być przesyłane bez zaangażowania CPU.
W mikrokontrolerach LPC800 zaimplementowano opisane już wcześniej profile optymalizujące działanie układu pod kątem zużycia energii lub mocy obliczeniowej.
W ciekawe rozwiązania wyposażone są mikrokontrolery SAM D20. Są to: Event System (omówiony wcześniej) oraz SleepWalking. Zasada działania mechanizmu SleepWalking polega na zdefiniowaniu dla peryferiów warunków, po spełnieniu których CPU mikrokontrolera zostanie wybudzony z trybu uśpienia. Przykładowym warunkiem może być np. przekroczenie określonej wartości napięcia na wejściu przetwornika A/C. Dzięki temu mikrokontroler nie musi się budzić cyklicznie aby sprawdzić czy napięcie osiągnęło wymagany poziom.
Z kolei mikrokontrolery EFM32 Zero Gecko dysponują modułem DMA oraz opisanym wcześniej peryferium Peripheral Reflex System.
Podsumowanie
W ramach podsumowania warto wskazać które rodziny mikrokontrolerów zaprezentowały się najlepiej i najgorzej w kontekście każdego z kryteriów. Zestawienie porównawcze przedstawiono w tabeli 10.
Główną ideą przyświecającą projektantom układów EFM32 Zero Gecko było stworzenie mikrokontrolerów o jak najniższym poborze prądu. Trzeba przyznać, że cel ten został osiągnięty. Układy firmy Silicon Labs uzyskały bardzo dobre wyniki w rankingach energooszczędności, wyróżniając się przede wszystkim w zakresie trybów uśpienia. Niewątpliwą zaletą mikrokontrolerów EFM32 Zero Gecko jest też bardzo niska cena.
Za pewne ograniczenie tych układów należy jednak uznać niską częstotliwość taktowania i ograniczone zasoby pamięci. Niemniej jednak dla systemów zasilanych z baterii i niewymagających znacznej mocy obliczeniowej oraz pojemnej pamięci mikrokontrolery firmy Silicon Labs mogą okazać się idealnym rozwiązaniem. Układy te mogą być ponadto używane w bardziej zaawansowanych systemach z kilkoma mikrokontrolerami. W takich systemach EFM32 Zero Gecko może realizować proste zadania (np. odczyt danych z czujników, interfejs użytkownika, sterowanie), pozwalając w tym samym czasie innym mikrokontrolerom oszczędzać energię w stanie uśpienia.
Rodzina mikrokontrolerów Kinetis L to wynik udanego połączenia kilku cech. Układy firmy Freescale są energooszczędne zarówno w trybie aktywnej pracy, jak też w trybach uśpienia. Ponadto mikrokontrolery te oferują wysoką częstotliwość taktowania, liczne opcje pojemności pamięci wewnętrznej i duży wybór obudów. Konstruktorzy z pewnością docenią również możliwość wykorzystania w systemach interfejsu USB oraz kontrolera LCD. Co ważne, wszystko to za rozsądną cenę - zarówno układów, jak też płytek uruchomieniowych.
Mikrokontrolery SAM D20 pod kilkoma względami przypominają mikrokontrolery Kinetis L. Układy obu grup cechują się takimi samymi maksymalnymi częstotliwościami taktowania, zbliżonymi dostępnymi opcjami pojemności pamięci, czy też podobnym, wysokim poziomem energooszczędności. Dodatkowo firma Atmel chcąc sprawić, by układy SAM D20 wyróżniały się na rynku, zastosowała w nich ciekawe rozwiązania: interfejs SERCOM, peryferium Event System czy też mechanizm SleepWalking. Pozytywną ocenę końcową psuje niestety wysoka na tle konkurencji cena mikrokontrolerów.
Dosyć przeciętnie prezentują się mikrokontrolery LPC800. Układy te nie wyróżniają się wysoką częstotliwością taktowania, dysponują małymi zasobami pamięci wewnętrznej oraz cechują się wąskim zakresem napięcia zasilania. Ponadto słabą stroną układów firmy NXP Semiconductors jest wyposażenie. Szczególnie razi brak przetwornika A/C oraz modułu DMA lub innego peryferium pozwalającego na wykonywanie pewnych zadań bez użycia jednostki obliczeniowej. Wymienione minusy tylko częściowo rekompensuje stosunkowo niska cena mikrokontrolerów i ukłon w stronę konstruktorów w postaci obudowy DIP8.
Autor składa podziękowania za cenne, pomocne w napisaniu artykułu uwagi inżynierom z firm, które są producentami porównanych rodzin mikrokontrolerów: Blaise Lengrand (Atmel), Amish Desai (NXP Semiconductors), Eduardo Montanez (Freescale) oraz Sandor Csuelloeg (Silicon Labs).
Szymon Panecki