Do zarządzaniem poborem energii zastosowano rozwiązanie nazwane Low-Power Management. Ma ono za zadanie zarządzanie trybami oszczędzania energii, w tym również przez skalowanie wartości napięcia zasilania zależnie od wymaganej wydajności. Głównym elementem systemu oszczędzania energii jest programowany układ PMU (Power Management Unit). Pozwala on na wprowadzanie trybów oszczędzania energii: sleep, deep-sleep i deep power-down. Jest możliwość wybudzania z trybu deep-sleep po odebraniu danych przez interfejsy USART, SPI lub przez I2C pracujący w trybie slave.
Rdzenie mogą być taktowane przebiegiem o częstotliwości do 100 MHz (oba używają tego samego generatora). Przebieg taktujący rdzeń może pochodzić z dwóch źródeł:
- Z wbudowanego generatora FRO (Free Running Oscillator) zawierającego oscylator RC o częstotliwości 12 MHz. Moduł FRO ma dwa wyjścia. Na jednym z nich występuje przebieg o częstotliwości 48 MHz lub 96 MHz, a na drugim 12 MHz. Oscylatora RC pracuje z niepewnością częstotliwości 1% w całym zakresie napięcia zasilającego i dopuszczalnej temperatury otoczenia.
- Zewnętrznego oscylatora kwarcowego o częstotliwości do 25 MHz.
Duża wydajność i uniwersalność mikrokontrolerów LPC5410x powoduje, że będą używane do pracy w aplikacjach wymagających rozbudowanego oprogramowania. Jak informuje tabela 1, jest w nich dostępna pamięć programu Flash o pojemności do 512 kB i danych SRAM do 102 kB. Pozwala to na umieszczenie w pamięci rozbudowanych procedur oraz na przykład bitmap i tablic generatorów znaków używanych w interfejsach graficznych.
Oprócz pamięci programu Flash w strukturze mikrokontrolerów umieszczono pamięć ROM z „zaszytymi” modułami programowania pamięci Flash w systemie (In System Programming), w aplikacji (In Application Programming) oraz z bootloaderem pozwalającym na programowanie pamięci Flash przez interfejsy szeregowe USART, SPI, I2C lub USB. W pamięci ROM są też umieszczone drivery USB: HID, CDC, MSC oraz DFU.
Pięć standardowych liczników 32-bitowych może współpracować maksymalnie z 4 wejściami przechwytującymi (capture) i 4 wyjściami typu compare. Każdy z tych liczników można zaprogramować do pracy w trybie PWM. Cztery z nich może zliczać impulsy z wejścia zewnętrznego (wyprowadzenia mikrokontrolera). Do generowania żądania transferu w kanale DMA można wybrać zdarzenie generowane przez jeden z timerów. Timer SCTimer/PWM ma 8 wejść i 8 wyjść. Wyjścia i wejścia mogą być programowo przyłączane do wyprowadzeń mikrokontrolera oraz do wewnętrznych sygnałów generowanych przez inne moduły peryferyjne.
Wbudowany w mikrokontroler 32-bitowy zegar czasu rzeczywistego RTC odlicza czas z rozdzielczością 1 sekundy i nigdy nie jest usypiany. Może być wykorzystywany do wybudzania mikrokontrolera z trybów obniżonego poboru energii, w tym z trybu deep power-down z rozdzielczością 1 milisekundy.
Uniwersalne linie GPIO mogą mieć programowo dołączane rezystory pull-up (do plusa zasilania) i pull-down (do masy). Można je zaprogramować z wyjściem typu otwarty dren (open drain) lub z zanegowanym wejściem (input inverter). Żeby manipulacje stanami linii GPIO mogły się odbywać z dużą prędkością, rejestry GPIO zostały podłączone do magistrali AHB mikrokontrolera. Zmiany stanów na liniach GPIO mogą po odpowiedniej konfiguracji generować przerwania zewnętrzne. Dostępne jest programowe wybranie wyzwalania zboczem narastającym, zboczem opadającym lub oboma zboczami. Można też zgrupować dwie linie wejściowe i zdefiniować warunek wyzwalania przerwania połączony z funkcjami logicznymi AND lub OR.
Głównym interfejsem analogowym prezentowanych mikrokontrolerów jest przetwornik A/C z 12 kanałami pomiarowymi i wieloma wewnętrznymi i zewnętrznymi sygnałami wyzwalającymi pomiar i konwersję. Maksymalna prędkość próbkowania wynosi 5 MSa/s. Przetwornik wspiera dwie niezależne sekwencje konwersji analogowo-cyfrowej. Kolejnym interfejsem analogowym jest wbudowany czujnik temperatury współpracujący z przetwornikiem A/C.
Każdy producent mikrokontrolerów oferuje dla swoich wyrobów moduły ewaluacyjne. Jest to standardowe postępowanie ułatwiające znacznie konstruktorom szybkie zapoznanie się z wybranym elementem i ewentualna weryfikacja możliwości układu, środowiska projektowego, wsparcia programistycznego w postaci gotowych bibliotek itp. Dla rodziny LPC541xx MCU producent przygotował moduł OM1307.
Zestaw wyposażono m.in. w trójkolorową diodę LED, przyciski RESET, ISP i WAKE. Płytka ma wyprowadzenia linii portów i zasilania zgodne ze standardem Arduino UNO. Znajdziemy tam też port PMOD oraz port UART/FTDI (emulacja UART poprzez USB). Układ zasilania zawiera stabilizatory 1,8 V oraz 3,3 V. Możliwe jest zasilanie z portu USB lub z zewnętrznego zasilacza.
Wbudowany interfejs USB może pracować z maksymalną prędkością Full Speed i nie wymaga stosowania dodatkowego sygnału zegarowego o częstotliwości stabilizowanej kwarcem. Interfejs mikrofonu cyfrowego składa się z mikrofonu i układu DMIC realizującego cyfrową obróbkę sygnału audio. To rozwiązanie wyraźnie ogranicza pobór mocy w układach wymagających toru audio i zasilanych bateryjnie.
Dla rodziny LPC5411x przygotowano moduł o nazwie OM13089 LPCXpresso54114 z dwurdzeniowym mikrokontrolerem LPC54114. Budowa modułu jest bardzo podobna do LPCXpresso54102. Oba moduły różnią się, co oczywiste, zastosowanym mikrokontrolerem oraz zabudowaniem pamięci Flash o pojemności 8 Mb z interfejsem SPI.
Mikrokontrolery z rodziny LPC546xx wyposażono w rdzeń Cortex-M4, który może być taktowany przebiegiem o częstotliwości do 200 MHz. Szybki, wydajny, 32-bitowy rdzeń w połączeniu z dużą pamięcią programu Flash o pojemności do 512 kB oraz pamięcią SRAM do 200 kB predestynują te układy do zastosowań w aplikacjach wymagających dużej mocy obliczeniowej. Mogą to być układy kontroli budynków, medyczny sprzęt diagnostyczny, wieloprotokołowe węzły komunikacyjne itp. Wykaz mikrokontrolerów z tej rodziny pokazano w tabeli 3, a ich schemat blokowy na rysunku 4. Wiele interfejsów peryferyjnych (komunikacyjne, cyfrowe i analogowe) jest zbudowanych podobnie jak w opisywanych już rodzinach. Jednak z racji większych możliwości obliczeniowych i większej ogólnej wydajności dodano interfejsy realizujące bardziej zaawansowane zadania. Interfejsy szeregowe zostały rozbudowane o zaawansowane moduły transmisyjne:
- Obsługa połączeń internetowych jest wspierana przez moduł MAC z interfejsem MII/RMII, obsługą Audio Video Briding (AVB) i szybką transmisją za pomocą DMA.
- Interfejs SPIIF z funkcją XIP do szybkiej obsługi pamięci Flash z interfejsem SPI/DSP/QSPI.
- Dwa moduły CAN FD wspierane przez kontroler DMA.
- Dwa interfejsy Smart Card ISO7816 ze wsparciem DMA.
Również interfejsy cyfrowe również rozbudowano i dodano nowe możliwości. Najważniejsze z nich to:
- Rozbudowanie układu DMA do 30 kanałów i 24 sygnałów wyzwalających.
- Dodanie interfejsu obsługi kart SD ze wsparciem za pomocą DMA.
- Dodanie sterownika pamięci zewnętrznej External Memory Controller ze wsparciem statycznych pamięci RAM i ROM i dynamicznych pamięci SDRAM z zegarem do 100 MHz.
- Dodanie sterownika paneli LCD typu STN i TFT o maksymalnej rozdzielczości 1024×768 pikseli i 24-bitowej głębi koloru. Sterownik wykorzystuje do przesyłania danych kanał DMA.
Tak rozbudowane układy pozwalają na tworzenie aplikacji z graficznymi interfejsami użytkownika, aplikacji sieciowych (na przykład IoT) czy aplikacji stosowanych w przemyśle motoryzacyjnym.
- 3 diody LED oraz przyciski RESET, ISP i USER.
- Złącza zgodne ze standardem Arduino UNO i PMOD.
- Pamięć Flash o pojemności 128 Mb Micron MT25QL128 z interfejsem Quad SPI obsługiwanym przez interfejs S/PDIF.
- Pamięć SDRAM o pojemności 16 MB Micron MT48LC8M16A2B4.
- Mikrofon cyfrowy SPH0641LM4H.
- Akcelerometr NXP MMA8652FCR1.
- Kodek stereofoniczny audio z liniami wejściowymi i wyjściowymi.
- Łącze Ethernet 10/100 z konektorem RJ45.
- Port USB ze złączami USB A/B do pracy w trybach host lub device.
- Złącze dla kart SD.
Narzędzia programowe
Do programowania mikrokontrolerów będziemy potrzebowali środowiska programowego z kompilatorem i, co dzisiaj oczywiste, bibliotekami zawierającymi obsługę układów peryferyjnych w warstwie abstrakcji HAL i w warstwie sprzętowej oraz bardziej zaawansowane funkcje typu stos USB, TCP/IP, system plików FAT czy możliwość integracji z systemem RTOS.
Firma NXP ma w ofercie środowisko IDE MCUXpresso oparte na Eclipse z wbudowanymi funkcjami edycji, kompilacji i debugowania kodu. MCUXpresso jest całkowicie zintegrowane z programatorami/debuggerami firmowych modułów ewaluacyjnych, w tym z modułami opisywanymi wyżej. Schemat blokowy MCUXpresso – IDE został pokazano na rysunku 6. Firmowe biblioteki przygotowane dla mikrokontrolerów NXP są dostępne w pakiecie SDK – MCUXpresso Software Development Kit. Oprócz narzędzi NXP można również korzystać z komercyjnych pakietów oferowanych przez firmy IAR czy Keil. Niestety obecnie nie jest dostępne wsparcie dla modułów opisywanych rodzin w środowisku ARM mbed.
Omówione w artykule trzy rodziny mikrokontrolerów są ciekawą propozycją dla projektantów poszukujących mikrokontrolerów do swoich aplikacji. Producent oferuje bogato wyposażone wydajne układy (w tym dwurdzeniowe) z modułami ewaluacyjnymi i wszystkimi niezbędnymi narzędziami programistycznymi.
Tomasz Jabłoński, EP