Precision32 – nowe mikrokontrolery firmy Silicon Labs z rdzeniem ARM Cortex-M3
Na rysunku 5 zilustrowano dwa sposoby zasilania mikrokontrolera Precision32 – z aktywnym oraz wyłączonym regulatorem VREG0.
Rys. 5. Zasilanie mikrokontrolera Precision32 z regulatora VREG0 (górny obrazek) lub z regulatora LDO0 (dolny obrazek)
Oprócz wymienionych już regulatorów napięcia służących do zasilania mikrokontrolera, w każdym układzie Precision32 występuje regulator o nazwie EXTVREG0, który przeznaczony jest do dostarczania napięcia zasilania układom peryferyjnym, a więc na zewnątrz mikrokontrolera. Może być również użyty do sterowania tranzystorami. Jego napięcie wyjściowe jest konfigurowalne – możliwe jest ustawienie wartości z przedziału 1.8 – 3.6 V z krokiem 100 mV. Wydajność prądowa regulatora wynosi 1 A.
Kolejnym komponentem składowym bloku zasilania jest moduł VMON0 odpowiedzialny za monitorowanie napięcia zasilania. Do jego funkcji należy między innymi:
- Informowanie o przekroczeniu dolnej wartości napięcia zasilania,
- Utrzymywanie mikrokontrolera w stanie resetu po przekroczeniu ustalonego progu napięcia zasilania.
Ostatnim istotnym elementem bloku zasilania jest jednostka zarządzająca zasilaniem (PMU – Power Management Unit). Wśród wielu jej funkcji, najważniejszą jest udostępnianie różnych trybów pracy, których umiejętne wykorzystanie pozwala na znaczne ograniczenie poboru prądu mikrokontrolera. Jednostka PMU oferuje łącznie 6 trybów pracy, w tym 5 o niskim poborze mocy (tak zwane tryby uśpienia):
- Normal – rdzeń i peryferia są aktywne, kod wykonywany jest z pamięci Flash,
- PM1 (Power Mode 1) – rdzeń i peryferia są aktywne, kod wykonywany jest z pamięci RAM,
- PM2 (Power Mode 2) – rdzeń jest zatrzymany, peryferia są aktywne,
- PM3FW (Power Mode 3 Fast Wake) – rdzeń i peryferia są zatrzymane, część sygnałów zegarowych jest wyłączona,
- PM3 (Power Mode 3) – rdzeń i peryferia są zatrzymane, wszystkie sygnały zegarowe są wyłączone,
- PM9 (Power Mode 9) – rdzeń i peryferia są zatrzymane, wszystkie sygnały zegarowe są wyłączone, zawartość pamięci RAM nie jest podtrzymywana (oprócz wspomnianego obszaru 4 kB retention RAM).
Przy okazji omawiania trybów pracy o niskim poborze prądu mikrokontrolerów Precision32, warto podać przykładowe wartości liczbowe, którymi chwali się firma Silicon Labs. Według dokumentacji producenta, w normalnym trybie pracy mikrokontroler pobiera prąd o wartości 275 µA/MHz, a więc podczas taktowania z częstotliwością 80 MHz całkowity pobór prądu wyniesie około 22 mA. W trybie uśpienia pobór prądu można ograniczyć przykładowo do 620 nA (praca z włączonym zegarem RTC, zewnętrzny rezonator kwarcowy), 350 nA (praca z włączonym zegarem RTC, wewnętrzny rezonator kwarcowy) lub 85 nA (praca z włączonym modułem monitorowania napięcia zasilania) (rysunek 6).
Rys. 6. Wykres poboru prądu przez mikrokontroler Precision32
Blok zegarów
Mikrokontroler Precision32 jest wyposażony w sześć źródeł sygnałów zegarowych. Są to: LPOSC0 (Low Power Oscillator), LFOSC0 (Low Frequency Oscillator), RTC0OSC (RTC Oscillator), EXTOSC0 (External Oscillator), USB0OSC (USB Oscillator), PLL0OSC (PLL Oscillator). Każde z nich może generować sygnał taktujący zegar rdzenia, magistral AHB i APB oraz peryferiów (rysunek 7).
Rys. 7. Blok zegarowy mikrokontrolera Precision32
Domyślnie aktywnym po uruchomieniu mikrokontrolera źródłem sygnału zegarowego jest LPOSC0. Może ono generować sygnał zegarowy o częstotliwości 20 MHz, lub ośmiokrotnie niższy – 2.5 MHz. Jak sama nazwa wskazuje, jest to źródło sygnału zegarowego o niskim poborze prądu, jednak oszczędność energii odbywa się kosztem dokładności sygnału, która jest gorsza niż w przypadku innych źródeł zegarowych. Negatywny wpływ na dokładność sygnału zegarowego ma dodatkowo zmiana temperatury oraz napięcia zasilania.