reklama
reklama
reklama
reklama
reklama
© beisea dreamstime.com
Komponenty |

Atmel dla Internet of Things : część IV

SAM L21 - 32-bit Cortex-M0+ z poborem prądu od 35µA/MHz w trybie active.

Rodzina mikrokontrolerów SAM L21 pracuje w oparciu o Cortex-M0+ i jest dedykowana do aplikacji zasilanych bateryjnie ze względu na bardzo niski pobór prądu (35µA/MHz w trybie Active, 900nA przy podtrzymaniu SRAM oraz z pracującym RTC, 200nA w głębokim uśpieniu) oraz bardzo niskie czasy wybudzeń ze stanów uśpienia. Wśród mechanizmów pozwalających na takie osiągi wymienić należy, podział na „power domain”, Sleepwalking, peryferia rozbudowane o funkcje picoPower oraz wiele innych. Zostaną one opisane w dalszej części tekstu. SAM L21 dostępny jest w obudowach od 32-pin do 64-pin, maksymalna wielkość pamięci flash to 256KB oraz 40KB pamięci SRAM (z podziałem na 32KB SRAM, 8KB low power SRAM). Układy pracują z maksymalną częstotliwością 48MHz przy 2.46 CoreMark®/MHz. Cała rodzina została tak pomyślana, aby inżynier decydujących się na jej wykorzystanie miał szerokie opcje migracyjne, zarówno w ramach różnych wielkości pamięci jak i obudów. Rys. 1. Podstawowe parametry SAM L21. Rys. 2. Architektura rodziny SAML21. W układach zaimplementowano szereg peryferiów znanych z rodziny SAM D, ale także pojawiły się zupełnie nowe rozwiązania. Ogromny nacisk położono na aspekty związane z poborem energii. Aby maksymalnie ograniczyć pobór prądu aplikacji należy pamiętać o kilku zasadach:
  • należy maksymalnie ograniczyć użycie CPU - CPU używa ~40-80% energii całego mikrokontrolera - pozostać w trybie uśpienia, gdy tylko jest to możliwe - ograniczyć przerwania, które muszą wybudzać CPU
  • kontrolować częstotliwość taktowania systemu - zużycie energii jest proporcjonalne do częstotliwości pracy
  • zatrzymać taktowanie nieużywanych peryferiów
  • dopasować napięcie zasilania do wymagań urządzenia - zużycie energii jest ekspotencjalne do napięcia zasilania
  • wybudzać CPU tak szybko jak to tylko możliwe - energia jest tracona podczas wybudzania systemu podczas stabilizacji oscylatora.
Zarządzanie energią Część z tych zasad jest wymagana, aby wykorzystany mikrokontroler, sprzętowo wspierał pewne funkcjonalności. Pierwszym na to przykładem jest realizacja układu zasilania CPU, pamięci oraz peryferiów w mikrokontrolerze. Rys. 3. Obwód dla standardowego mikrokontrolera obrazujący jak wiele energii może być tracone. Na rysunku poniżej pokazano jak realizowane jest to w przypadku SAML21. W odróżnieniu od standardowego podejścia mamy tutaj kilka regulatorów, które zasilają różne power domain. Główny LDO został wzbogacony o możliwość regulacji napięcia w zależności od wymaganej częstotliwości pracy rdzenia oraz peryferiów. A podział na power domain pozwala na redukcję zużycia energii poprzez automatyczne wyłączanie zasilania poszczególnych PDx, w przypadku ich niewykorzystania oraz w trybach uśpienia. Same tryby uśpienia zostaną opisane w dalszej części. Rys. 4. Zarządzanie energią przez SAM L21. Budowa zegara Kolejny element architektury, który został wykonany w nieco inny sposób to budowa systemu zegara. Znajduje się tu do dziewięciu generator/clock domain, które mogą być konfigurowane oraz przełączane niezależnie przez system bądź użytkownika. Pozwala to na dużą elastyczność taktowania poszczególnych peryferiów, zwłaszcza w stanach uśpienia. A sam CPU może pracować z różną częstotliwością w zależności od wymagań aplikacji (Dynamic Frequency Scaling). Rys. 5. Budowa zegara w SAM L21. Rys. 6. Dynamic Frequency Scaling. Źródło taktowania może pracować także w trybie on-demand (flaga ONDEMAND). Oznacza to, że jest ono automatycznie zatrzymywane, w przypadku gdy nie jest ono potrzebne, a potem automatycznie włączane, gdy jego praca jest wymagana. System eventów Kolejnym elementem, który, odpowiednio wykorzystany może znacząco wpłynąć na sumaryczne zużycie energii jest system eventów. Wielu inżynierów zna go doskonale z układów serii Atxmega. Teraz został on zaimplementowany także w układach z Cortex-M0+. Event system pozwala na współdziałanie peryferiów bez udziału CPU. Dodatkowo ma bardzo ciekawą właściwość. Otóż czas reakcji na event jest w 100% przewidywany. Poniżej graf obrazujący współdziałanie wybranych peryferiów bez udziału CPU. Rys. 7. System eventów. Stany uśpienia W ramach rodziny SAML21 wprowadzono możliwość wprowadzania mikrokontrolera w jeden z kilku stanów uśpienia. Poniższy graf przedstwia przybliżone pobory prądów oraz czasy wybudzeń do stanu aktywnego. Można odczytać także źródła, które są w stanie wybudzić układ z danego stanu uśpienia. W trybie active CPU wykonuje kod, wszystkie zegary są dostępne, a pobór prądu zależy w dużej mierze od Performance Level (PL). SAML21 może pracować w jednym z dwóch performance level. Gdy pracuje w najniższym, czyli PL0, napięcie zasilania logiki jest redukowane, i jego poziom jest dostosowywany w zależności od częstoliwości pracy. W przypadku PL2 regulator napięcia dostarcza najwyższe możliwe napięcie, pozwalając na pracę z maksymalną częstotliowścią. Zmiany PLx można dokonywać w trakcie pracy mikrokontrolera. W trybie Idle zegar CPU jest wyłączony, różnie AHBx oraz APBx są wyłączone, ale mogą zostać uruchomione jeśli któreś z peryferiów będzie tego wymagać. W trybie Standby wszystkie zegary, oprócz ULP32K sa wyłączone. Jednak peryferia mogą realizować swoje zadania, jesli w rejestrze konfiguracyjnym danego peryferia ustawiono flagę RUNSTDBY. Dodatkowo można tą pracę powiązać ze wcześniej wspomnianym ustawieniem flagi ONDEMAND, która decyduje o pracy źródła taktowania. W trybe Backup zasilana jest tylko domena BACKUP, do której, między innymi, należy RTC, BOD. Rys. 8. Stany uśpienia. SleepWalking Kolejną funkcjonalnością przeniesioną z AVR jest SleepWalking. Funkcjonalność ta daje możliwość, aby wybrane peryferia mogły wysłać żądanie wystawienia sygnału zegara, aby wykonać zadanie bez udziału CPU, w trybie Standby. W przypadku SAML21 zostało to wzbogacone o współpracę z power domain. Oznacza to, że zasilanie do danej power domain będzie dostarczone, gdy któryś z elementów tego potrzebuje do pracy. Kiedy zadanie jest wykonane, mikrokontroler może zostać wybudzony do stanu aktywnego, bądź tez pozostać w Standby, tak jak pokazuje to poniższy rysunek. Rys. 9. SleepWalking Zasilanie bateryjne SAML21, jak wspomniano na początku, został zaprojektowany tak, aby mógł pracować w aplikacjach, gdzie zasilanie, z reguły, jest bateryjne. Dlatego też wyposażony został w szereg funkcjonalności wspomagających inżyniera w procesie optymalizacji zużycia energii, które zostały opisane powyżej. Dodatkowo układ posiada Battery Backup Power Switch (BBPS). Jest to automatyczny przełącznik źródła zasilania, pomiędzy baterią (VBAT) a głównym zasilaniem (VDDIN). Przełączenie na zasilanie bateryjne odbywa się gdy napięcie zasilania spadnie poniżej 1.75 V lub poniżej progu BOD33. Układ wraca do zasilani głównego gdy napięcie wzrośnie do 1,85V lub zostanie to wymuszone poprzez pin PSOK (Main Power Supply OK). Rys. 10. Batter Backup Power Switch. Peryferia SAM L21
  • 16-kanałów Direct Memory Access Controller (DMAC)
  • 12-kanałów Event System
  • do pięciu rozbudowanych 16-bit Timer/Counters (TC) w tym low-power TC,
  • dwa 24-bit oraz jeden 16-bit Timer/Counters for Control (TCC)
  • 32-bit Real Time Counter (RTC) z funkcją kalendarza
  • Watchdog Timer (WDT)
  • CRC-32 generator
  • interfejs full-speed (12Mbps) Universal Serial Bus (USB) 2.0 (host oraz device) - do sześciu Serial Communication Interfaces (SERCOM), w tym jeden low-power SERCOM - każdy z nich można skonfigurować jako: USART, I2C do 3.4MHz, SPI, LIN slave AES encryption engine
  • True Random Generator (TRNG)
  • jednostka logiczna: Configurable Custom Logic (CCL)
  • 12-bit, 1MSPS Analog-to-Digital Converter (ADC) do 20 kanałów
  • dwa 12-bit, 1MSPS Dual Output Digital-to-Analog Converter (DAC)
  • 2 komparatory analogowe (AC)
  • 3 wzmacniacze operacyjne (OPAMP)
  • moduł obsługi przycisków pojemnościowych Peripheral Touch Controller (PTC)
AES (Advanced Encryption Standard) Zwracamy również uwagę na moduł AES (Advanced Encryption Standard), który poza standardowymi funkcjami, został zabezpieczony przed atakiem polegającym na analizie poboru prądu. Domyślnie wszystkie cztery poniższe tryby są włączone (można wyłączyć jeden lub kilka z trybów):
  • losowe dodawanie jednego cyklu przy przetwarzaniu danych,
  • losowe dodawanie jednego cyklu przy przetwarzaniu danych (inna wersja),
  • dodawanie losowej liczby cykli przy przetwarzaniu danych,
  • dodawanie losowego zużycia energii podczas przetwarzania danych.
Wsparcie Wraz z nową rodziną w ofercie pojawił się zestaw ewaluacyjny ATSAML21-XPRO-B. Cała rodzina SAML21 wspierana jest przez bezpłatne środowisko Atmel Studio 6 oraz Atmel Software Framework (ASF). Znaleźć tam można setki przykładowych programów, a także sterowniki peryferiów. A tutaj przykład zasilania SAML21 energią dłoni:
Artykuł opracowany przez © JM Elektronik, autoryzowanego przedstawiciela Atmel w Polsce.

reklama
reklama
Załaduj więcej newsów
March 15 2024 14:25 V22.4.5-2