Aplikacje embedded są szturmem zdobywane przez mikrokontrolery z rdzeniami ARM. Największą popularność zyskały tanie Cortex-M0, Cortex-M3, a ostatnio - Cortex-M0+. Spowodowało to, że wokół tych rdzeni powstał ogromy "ekosystem", w ramach którego jest oferowanych wiele rozwiązań sprzętowych i programowych. Co ważne, uczestnicy tego "ekosystemu" tworzą i udostępniają wiele darmowych rozwiązań, więc nie za wszystko trzeba płacić, a konkurencja spowodowała, że narzędzia komercyjne są relatywnie tanie.
Największą zaletą rdzenia 32-bitowego jest duża moc obliczeniowa. Pozwala ona na zrealizowania zadania w wielokrotnie krótszym czasie w porównaniu z rdzeniem 8- lub 16-bitowym. W aplikacjach rzadko bywa tak, że CPU przez cały czas ma coś do zrobienia. Na przykład, jeśli wyświetlacz ma własny kontroler, to wystarczy do niego wysłać dane, a ten zajmie się wyświetlaniem. Klawiatura może być skanowana przez cały czas, ale to zwykłe marnotrawienie mocy mikrokontrolera. Często słyszymy "ale on i tak nie ma co robić". No właśnie, więc po co ma marnować energię? Dlatego doświadczeni konstruktorzy wprowadzają urządzenie w stan czuwania i przechodzą do tryby aktywnego tylko wtedy, gdy ma ono coś do zrobienia. Czas od wybudzenia do zakończenia obsługi i ponownego uśpienia w mikrokontrolerach 32-bitowych jest bardzo krótki i dlatego moc średnia pobierana przez urządzenie z zasilania też jest znacznie mniejsza, niż przy użyciu wolniejszego rdzenia.
Przegląd mikrokontrolerów dostępnych w handlu rozpoczniemy od rdzeni natywnych, niebędących na licencji ARM.
Mikrokontrolery z 32-bitowymi rdzeniami natywnymi
Atmel AVR32
Obok mikrokontrolerów z rdzeniem ARM, firma Atmel wytwarza również rozwiązanie opracowanie przez siebie - serię rozwojową dobrze znanych mikrokontrolerów AVR - AVR32. Może dziwić obecność w ofercie AVR32 obok ARM, tym bardziej, że żadna konstrukcja rdzenia 32-bitowego, poza ARM, nie zyskała w ostatnich latach aż tak dużej popularności. Trudno jednak zarzucać Atmelowi, że nie wie, co robi. Widocznie są przesłanki ku temu, aby ARM i AVR32 były produkowane i oferowane jednocześnie.
Firma położyła główny nacisk na zapewnienie użytkownikom AVR32 dobrego wsparcia, którego jakość przewyższa rynkowych konkurentów. Na jej stronie internetowej można znaleźć wiele przykładowych programów, not aplikacyjnych oraz bogaty zestaw programów narzędziowych.
W mikrokontrolerach AVR32 jest stosowany szereg mikroarchitektur. Gdy w styczniowej EP z 2008 r. pisaliśmy o AVR32, były to ich dwa rodzaje: optymalizowana pod kątem niskiego kosztu implementacji AVR32UC3A oraz bardziej rozbudowana AVR32UC3B, optymalizowana pod kątem szybkiej obsługi przerwań. Oprócz nich, aktualnie są wytwarzane jeszcze:
- ARV32UC3A4 z szybkim interfejsem USB, 128 kB pamięci SRAM oraz opcjonalnym modułem szyfrującym/deszyfrującym,
- AVR32UC3D z hardware wspierającym tworzenie interfejsów dotykowych,
- AVR32UC3L zoptymalizowana pod kątem małego poboru energii.
W mikrokontrolerach AVR32 zwraca uwagę bardzo duża wydajność CPU, przekraczająca prędkość taktowania rdzenia, co jest możliwe m.in. dzięki zastosowaniu 7-stopniowego kolejkowania oraz dużej liczbie podręcznych rejestrów umożliwiających lokalne manipulowanie danymi.
Nowa rodzina mikrokontrolerów AVR32UCA4 jest dobrze dopasowana do aplikacji wymagających dużej szybkości przetwarzania oraz bezpieczeństwa danych. Jako przykłady mogą posłużyć peryferia komputerów PC, tokeny do zabezpieczania operacji bankowych, układy teletransmisyjne oraz urządzenia do przesyłania cyfrowych danych audio. Mikrokontrolery z serii UC4A osiągają wydajność do 1,51 MIPS/MHz przy programie uruchomionym z pamięci Flash. Pamięć RAM o pojemności 128 kB podzielono na trzy bloki: 64 kB bezpośrednio "związane" z rdzeniem oraz 2 po 32 kB, dołączone do szybkiej szyny wymiany danych. Te dwa bloki są fizycznie odseparowane, ale ich adresy umieszczono sekwencyjnie pozwalając na buforowanie metodą ping-pong, aby zwiększyć wydajność. Z podwyższonej wydajności korzysta też wbudowany interfejs USB OTG. Wyposażenie układu obejmuje: kontroler DMA pozwalający na przesyłanie danych pomiędzy pamięciami, wsparcie dla pamięci SD/SDIO, MLC NAND Flash z interfejsem ECC, dużą liczbę interfejsów komunikacyjnych, takich jak: USART, SPI, TWI, I²S oraz - co ciekawe - konwerter C/A dla aplikacji audio. Niektóre z mikrokontrolerów z tej serii wyposażono również w moduł szyfrujący/deszyfrujący AES z kluczem o długości 128, 192 i 256 bitów. Co ciekawe, moduł jest dołączony do kontrolera DMA i może pracować bez angażowania CPU z prędkością do 22 MB/s.
Mikrokontrolery AVR32UC3D są przystosowane do aplikacji wymagających pojemnościowego interfejsu dotykowego. Oczywiście, nie wyklucza to ich zastosowania również w innych urządzeniach. Ta seria mikrokontrolerów ma opatentowany, atmelowski interfejs QTouch (pisaliśmy o nim w EP 12/2010), USB pracujący w trybie full speed, moduł RTC, 10-bitowy przetwornik A/C, USART, SPI, TWI, PWM oraz I²S. Jednostka centralna może być wyprowadzona ze stanu uśpienia przez układ peryferyjny, dzięki czemu w aplikacjach interfejsów dotykowych CPU może być wybudzane za pomocą dotyku. Interfejs dotykowy wspiera aż 25 kanałów sprzętowych, z których każdy może być skonfigurowany jako przycisk, suwak lub rolka. Wiele kanałów dotykowych może być łączonych w grupę w aplikacjach, w których jest wymagana różna czułość w różnych częściach interfejsu dotykowego np. przy stosowaniu odmiennych materiałów dielektrycznych, przy różnej grubości izolatora itp.
Mikrokontrolery UC3D są kompatybilne pod względem wyprowadzeń ze starszą serią UC3B wyposażoną w pamięci o większych pojemnościach oraz interfejs USB OTG. Dzięki temu, w wypadku potrzeby zastosowania mikrokontrolera o większych możliwościach, można dokonać migracji bez zmian na płytce drukowanej czy w urządzeniu docelowym.
W mikrokontrolerach AVR32UC3L postawiono przede wszystkim na jak najmniejsze zużycie energii. Wykonano je w opatentowanej przez Atmela technologii picoPower, co umożliwiło osiągnięcie 165 mA/MHz w trybie aktywnym oraz 600 nA w trybie uśpienia z pracującym zegarem RTC i 9 nA po jego wyłączeniu. Dzięki temu są to idealne mikrokontrolery do zastosowania w urządzeniach przenośnych, również tych z interfejsem dotykowym. Producent podaje również, że dzięki technologii pico- Power mikrokontroler może pracować przy zasilaniu napięciem od 1,62 V, przy którym pracują moduły analogowe, oscylator oraz pamięć Flash, bez konieczności osiągania jakichś kompromisów funkcjonalnych. Podobnie jak w serii UC3D, inteligentne układy peryferyjne mogą pracować autonomicznie, podejmując decyzję o uruchomieniu CPU w razie konieczności. Aktualnie są wytwarzane UC3L0 z pamięcią Flash o pojemności 128 lub 256 kB, UC3L4 z USB full speed i pamięcią Flash o pojemności 64, 128 lub 256 kB. Pamięć RAM w serii UC3L ma pojemność 32 kB.
Podrodzina AT32UC3A jest lepiej wyposażona (m.in. wszystkie układy wyposażono w USB z OTG oraz wbudowany MAC ethernetowy, wersje w "większych" obudowach mają wyprowadzone magistrale i wbudowany sterownik pamięci SDRAM), do tego maksymalna częstotliwość taktowania ich rdzenia wynosi 66 MHz. Mikrokontrolery AT32UC3B są wyposażone w wewnętrzne pamięci SRAM o pojemności do 32 kB (zamiast do 64 kB jak w AT32UC3A), nieco skromniejsze jest wyposażenie peryferyjne. Wszystkie te ograniczenia korzystnie odbijają się na poborze mocy: według danych katalogowych przy częstotliwości taktowania 60 MHz mikrokontrolery AT32UC3B pobierają podczas normalnej pracy ok. 23 mA, a wersje AT32UC3A blisko 37 mA. Ułatwia to postawienie granicy pomiędzy podrodzinami A i B w sposób wyraźniejszy, niż nieco sztuczne różnicowanie na przykłada za pomocą maksymalnych częstotliwości taktowania. Co ciekawe, wśród mikrokontrolerów z serii UC3A znajdziemy również specjalne mikrokontrolery przeznaczone do aplikacji audio (przyrostek AU np. AT32UC3A0128AU).
Układy AVR32 wyposażono w system sprzętowego debugowania Nexus (OCD), który jest obsługiwany poprzez interfejs JTAG.
Freescale ColdFire
ColdFire jest schedą po firmie Motorola i jej mikrokontrolerze z serii M68000. Ciekawostką jest fakt, że mikroprocesory ColdFire są używane również przez osoby budujące repliki komputerów, takich jak Atari czy Amiga. Zestaw instrukcji asemblerowych obu rdzeni jest prawie kompatybilny - w ColdFire usunięto instrukcje wspierające operacje na liczbach BCD, natomiast zachowano bogate tryby adresowania. Aktualnie wśród mikrokontrolerów z rdzeniem ColdFire znajdują się dwie wersje dostępne w handlu po oznaczeniem MCF51 (v1) i MCF52 (v2), w ramach których następuje dalszy podział na podrodziny różniące się wyposażeniem.
Mikrokontrolery z rdzeniem ColdFire v1 są kontynuacją architektury S08. Zachowano w nich kompatybilność pod względem wyprowadzeń z tą serią umożliwiając tym samym łatwą migrację do rozwiązań 32-bitowych. Rdzeń v1 jest uproszczoną wersją v2. Umożliwia łatwe operowanie na liczbach 8- i 16-bitowych zachowując przy tym tryby adresowania oraz instrukcje dostępne w rdzeniu v2.
W związku z tym, że ten mikrokontroler zastąpił S08 zachowano również 1-wyprowadzeniowy interfejs debugera o nazwie BDM. Firma podaje, że dzięki temu można z mikrokontrolerem używać starych programów narzędziowych przeznaczonych dla S08.
Rdzeń ColdFire v1 zawiera 2-stanowy bufor pipeline dla instrukcji oraz dla operandów (dostępne również w mikroarchitekturze v2). Co użyteczne, kolejne wersje rdzenia ColdFire (v2...v4) są kompatybilne wstecz, co zapewnia możliwości rozwoju urządzenia. Do standardowego otoczenia rdzenia v1 należą: interfejsy SCI, SPI, I²C, opcjonalnie CAN, Ethernet MAC (10/100) i USB OTG. Ponadto, wśród układów peryferyjnych znajdziemy przetwornik A/C o rozdzielczości 12 bitów, 8- i 16-bitowe timery, generator PWM, RTC, kontroler wyświetlacza LCD, komparator analogowy, generator liczb pseudolosowych, moduł wspomagający operacje szyfrowania/deszyfrowania. Układy są oferowane w obudowach mających od 48 do 104 wyprowadzeń (QFN, QFP i BGA), z pamięcią Flash od 32 do 256 kB, pamięcią RAM od 8 do 32 kB. Prędkość pracy rdzenia sięga 47 MIPS przy taktowaniu 50 MHz.
Mikrokontrolery z rdzeniem v2 są oferowane do bardziej wymagających aplikacji, o czym świadczy dostępność układów z pamięcią Flash do 512 kB, RAM do 64 kB oraz obudów o aż 256 wyprowadzeniach. Dodatkowo, do niektórych z nich można dołączyć zewnętrzną pamięć SDRAM, a prawie wszystkie mają z nich mają któryś z interfejsów: CAN, USB OTG, mostek Ethernet MAC lub wszystkie na raz. Wydajność rdzenia sięga 80 MIPS przy taktowaniu 80 MHz. Wybierając mikrokontroler ColdFire v2 do aplikacji należy zwrócić uwagę, że można wśród nich znaleźć mikrokontrolery o wydajności od 46 do 80 MIPS.
Firma Freescale wprowadziła do produkcji również mikrokontrolery ze zmodyfikowaną wersją rdzenia v1 - ColdFire+ (rysunek 1). W materiałach dostępnych na stronie internetowej producenta można znaleźć informację, że jest to rdzeń v1 produkowany w nowej technologii TFS 90 nm. Portfolio mikrokontrolerów z rdzeniem ColdFire+ zawiera 6 rodzin o bardzo małym poborze energii, w miniaturowych obudowach, mających pamięć Flash o pojemności od 32 do 128 kB z obszarem 2 kB na dane użytkownika (FlexMemory EEPROM). Nowe mikrokontrolery są przeznaczone głównie do urządzeń przenośnych, komunikujących się bezprzewodowo, np. do zdalnego sterowania, monitoringu pacjenta (pisaliśmy o tym EP 11/2010) i innych. W porównaniu z ColdFire v1 są lepiej wyposażone (np. 16-bitowy przetwornik A/C, poprawiona jednostka kryptograficzna, interfejs dotykowy, kontroler USB 2.0 device/host/OTG wspierający funkcję ładowarki akumulatorów zasilanej z USB, interfejs SAI dla kodeków oraz urządzeń z I²S itp.).
Renesas RX100, RX200, RX600, V850, RH850, SuperH
Producentem, który konsekwentnie promuje rozwiązania natywne jest dobrze znana Czytelnikom EP firma Renesas. Wśród oferowanych przez nią mikrokontrolerów, można znaleźć aż 6 rodzin z rdzeniem 32-bitowym: RX100, RX200, RX600, RH850, V850 i SuperH.
Mikrokontrolery z serii RX zaprojektowano jako następców rodzin H8 i M16C. Są one z nimi kompatybilne pod względem wyprowadzeń, co pozwala na łatwą migrację na nową platformę. Dzięki zintegrowaniu wielu bloków funkcjonalnych, zmiana istniejącego oprogramowania jest szybka i łatwa.
Co istotne, mikrokontrolery z serii RX są kompatybilne pod względem wyprowadzeń również pomiędzy sobą. Dostępność obudów mających od 48 do 177 pinów pozwala na użycie mikrokontrolerów w różnorodnych zastosowaniach, zależnie od wymaganego otoczenia rdzenia oraz liczby linii I/O.
Rodzina mikrokontrolerów RX100, która jeszcze rok temu miała status "under development" jest już dostępna w handlu. Obejmuje ona blisko 140 energooszczędnych, wydajnych jednostek, mających od 8 do 512 kB pamięci Flash, od 8 do 64 kB pamięci RAM, taktowanych zegarem o częstotliwości maksymalnej 32 MHz (3,08 CoreMark/MHz).
Tradycyjnie już u Renesasa i jak przystało na nowoczesne produkty, mikrokontrolery RX100 są dobrze wyposażone w różne moduły interfejsowe w tym w bloki służące do sterowania silnikami 3-fazowymi, a niektóre są przystosowane do zasilania z baterii lub akumulatora, co potwierdza fakt wyposażenia mikrokontrolera w ładowarkę (minimalne napięcie zasilania 1,5...2 V).
Rodzina RX100 jest oferowana w obudowach mających od 36 do 64 wyprowadzeń. Bloki funkcjonalne mikrokontrolerów RX100 zaprezentowano na rysunku 2, natomiast na rysunku 3 pokazano bloki funkcjonalne mikrokontrolera z podrodziny RX111.
Mikrokontrolery z serii RX200 i RX600 opracowano jako uzupełniające się funkcjonalnie. Serię RX200 zoptymalizowano pod kątem mniejszych aplikacji, wymagających oszczędności energii, natomiast seria RX600 jest przeznaczona są do zastosowań, w których jest potrzebna duża moc obliczeniowa i bogate wyposażenie. Przykładowe porównanie podstawowych parametrów podrodzin RX210 i RX63x zaczerpnięte z EP 10/2012 zamieszczono w tabeli 1.
Konstruktorzy mikrokontrolerów z rodziny RX200 postawili przede wszystkim na oszczędność energii. Opracowano w ten sposób komponent idealny dla urządzeń przenośnych, zasilanych z baterii lub źródeł odnawialnych. Niektóre bloki funkcjonalne, takie jak na przykład ELC (Event Link Controller) czy komparatory, mogą pracować w tle, bez angażowania jednostki centralnej.
Mikrokontrolery RX200 są oferowane w obudowach mających od 48 do 256 wyprowadzeń. Pojemność pamięci Flash wynosi od 32 do 1024 kB, pamięci RAM od 1 do 128 kB. CPU może być taktowane przebiegiem zegarowym o częstotliwości do 50 MHz.
Co ważne w niektórych aplikacjach, mikrokontroler może być zasilany napięciem 5 V (minimalne wartość napięcia zasilającego to 1,8 V), co może podnieść odporność aplikacji na zaburzenia (istotne np. w medycynie i przemyśle motoryzacyjnym).
Przykładowe bloki funkcjonalne mikrokontrolera z rodziny RX210 pokazano na rysunku 4. Jego wyposażenie obejmuje: zintegrowane generatory sygnału zegarowego (50/40/36,864/32 MHz i 125 kHz), ELC (Event Link Controller do obsługi zdarzeń bez angażowania CPU), DOC (Data Operation Circuit służący do dodawania, odejmowania i porównywania danych bez użycia CPU, np. dla algorytmów March-X), CRC (generator sumy kontrolnej), komparatory analogowe, Low Voltage Detector, czujnik temperatury, Power on Reset, Multifunction Pin Controller, Watchdog, Motor Control Timer, RTC.
Mikrokontrolery z rodziny RX600 opracowano jako wysokowydajne kontrolery dla aplikacji wymagających dużej mocy obliczeniowej oraz zaawansowanych możliwości wymiany danych. W ich strukturę wbudowano interfejsy Ethernet, USB oraz CAN. Jednostka centralna jest bardzo wydajna i zapewnia moc obliczeniową 165 MIPS przy częstotliwości taktowania wynoszącej 100 MHz.
Dzięki zintegrowanej jednostce FPU mikrokontroler świetnie nadaje się również do wykonywania złożonych operacji na liczbach. Użycie w wymagających aplikacjach np. funkcjonujących pod kontrolą systemów operacyjnych ułatwia szybka pamięć Flash (Zero Wait State Flash, bez czasu oczekiwania przy fCPU=100 MHz!) o dużej pojemności do 2 MB oraz 128 kB SRAM.
Portfolio mikrokontrolerów RX600 obejmuje 9 podrodzin: RX62N i RX63N do aplikacji z interfejsem Ethernet (aplikacje z grupy connectivity), RX621, RX631, RX610, RX630 do aplikacji ogólnego przeznaczenia, RX62G, RX62T, RX63T do aplikacji służących do kontrolowania silników i napędów.
Przykładowy schemat blokowy mikrokontrolera z podrodziny RX63N pokazano na rysunku 5. Jego wyposażenie obejmuje: Ethernet MAC 10/100 Mbit/s, interfejs USB Host/Device/OTG, interfejs CAN, generatory sygnału zegarowego 50 MHz i 125 kHz, generator CRC, Low Voltage Detector, czujnik temperatury, Power On Reset, Multifunction Pin Controller, Watchdog, Motorcontrol Timer, RTC z dodatkowym wyprowadzeniem zasilania awaryjnego, Sterowanie TFT poprzez ExDMA.
Mikrokontrolery z serii RX200 i RX600 mają ten sam rdzeń nazwany RX-CPU. Dzięki temu użytkownik może używać tego samego kompilatora języka C/C++. Najbardziej popularne z nich to produkty firm Renesas i IAR. Wielu programistów używa darmowego kompilatora GNU C dostępnego na stronie internetowej www.kpitgnutools.com.
Mikrokontrolery 32-bitowe z rdzeniem RX wykorzystują architekturę Enhanced Harvard z oddzielnymi szynami danych dla instrukcji i operandów. Dlatego po uruchomieniu programu nie trzeba kopiować wszystkich stałych z pamięci Flash do SRAM. Możliwość jednoczesnego pobrania instrukcji i operacji na pamięci jest idealna dla najbardziej wymagających aplikacji, np. związanych z cyfrowym przetwarzaniem sygnałów. Instrukcje są pobierane przez CPU z bardzo szybkiej, 100-megahercowej pamięci Flash i przetwarzane za pomocą 5-stopniowej pipeline. Zintegrowana z rdzeniem jednostka FPU (Floating Point Unit) w RX600 ma bezpośredni dostęp do rejestrów ogólnego przeznaczenia, co wypływa na szybsze wykonanie instrukcji oraz zmniejszenie wielkości kodu wynikowego. Wewnętrzna budowa mikrokontrolera umożliwia jednocześnie cztery przetwarzania równoległe i dwa transfery danych w trybie przeplotu. Użycie w rdzeniu RX wielu równoległych szyn danych umożliwia równoczesny transfer danych przez CPU, DMA, ExDMA (RX600), Ethernet-DMA (RX600) i DTC (Data Transfer Controller).
Poza czterema typowymi kontrolerami DMA, mikrokontrolery z serii RX wyposażono w 80-kanałowy DTC (Data Transfer Controller). Jest on co prawda wolniejszy, ale może uruchomiony przez każdy z wbudowanych bloków funkcjonalnych. Oprócz tego są dostępne mechanizmy Ethernet DMA dla interfejsu Ethernet i ExDMA np. umożliwiający sterowanie wyświetlaczem LCD-TFT.
Zastosowana przez Renesas już w mikrokontrolerach serii SH technologia MONOS Flash umożliwia także w serii RX odczyt danych z pamięci Flash z rzeczywistością częstotliwością sygnału zegarowego aż do 100 MHz. Dzięki temu nie jest konieczne przekopiowywanie "szybkich" sekwencji programu do pamięci SRAM. Pamięć Data Flash w RX210 i RX63x może być programowana aż 100000 razy. W mikrokontrolerze RX210 ma ona pojemność 8 kB i jest podzielona na 64 bloki po 128 B, natomiast w RX63x mieści 32 kB w 1024 blokach po 32 B.
Blok generatora sygnałów zegarowych może pracować w różnych trybach z częstotliwością wyznaczaną przez komponenty wewnętrzne lub z zewnętrznym oscylatorem kwarcowym. Wytwarza on sygnały taktujące pracą CPU i wszystkich bloków funkcjonalnych. Możliwość pracy bez zewnętrznego oscylatora oraz inne zintegrowane wyposażenie mikrokontrolera powodują, że do uruchomienia RX210 lub RX63x potrzebne są jedynie: napięcie zasilania, jeden rezystor i jeden kondensator! Seria RX spełnia prawie wszystkie oczekiwania. Na przykład, RX210 wyposażono w 9 interfejsów szeregowych. W RX63x jest ich aż 13! Za ich pomocą jest możliwa transmisja zgodnie z I²C, SPI i LIN (tylko w RX210), Ethernet, CAN, USB. Dzięki blokowi ELC (Event Link Controller, tylko w RX210) jest możliwe szybkie reagowanie na przerwania (na przejście do procedury obsługi są wymagane zaledwie 3 takty zegarowe) oraz w pełni automatyczna obsługa zdarzeń. Funkcjonalność MPC (Multifunction Pin Controller) pozwala na prawie dowolne dołączenie do wyprowadzeń mikrokontrolera wejść i wyjść timerów, portów szeregowych czy innych bloków funkcjonalnych. Może to obniżyć koszt zaprojektowania i wykonania płytki drukowanej, ponieważ sygnały można rozmieścić w taki sposób, aby otrzymać optymalne ułożenie ścieżek.
W latach 2008 i 2009 mikrokontroler V850 był na szczycie listy sprzedaży wśród mikrokontrolerów 32-bitowych. Ten mikrokontroler ma liczne zastosowania, z których bodajże najważniejsze są w przemyśle motoryzacyjnym oraz do kontroli napędów elektrycznych. Powodem tak dużej popularności tego mikrokontrolera jest jakość potwierdzona certyfikatami oraz bardzo duża wydajność, która dzięki dobrze przemyślanemu rdzeniowi G3 z 5-stopniowym buforem pipeline wynosi aż 1,9 MIPS/MHz! Pozwala to na realizowanie zadań w krótszym czasie, a przez to pracę CPU mikrokontrolera przy niższej częstotliwości taktowania, co przekłada się na mniejsze zużycie energii oraz łatwiejsze spełnienie wymagań norm EMI.
Jak wspomniano, głównym obszarem aplikacji V850 jest przemysł motoryzacyjny. Dlatego też, aby spełnić surowe wymagania norm w nim obowiązujących, V850 ma pamięć Flash z mechanizmem korekcji błędów, który jest w stanie poprawić błędy pojedynczych bitów. Dodatkowo pamięć jest też wyposażona w wielopoziomowy system zabezpieczeń, który chroni ją przed nieuprawnionym dostępem. Najnowszą rodziną mikrokontrolerów V850 składającą się aż z 19 układów jest V850E2/Fx4-L. Są one specjalne przystosowane do użycia w samochodach, do sterowania napędem szyb i szyberdachów, siedzeń, modułów oświetlenia, HVAC (H - ogrzewanie, V - wentylacja, AC - klimatyzacja) oraz modułów kontrolujących inne podzespoły w samochodzie. W trybie aktywnym nowe mikrokontrolery pobierają 0,35 mA przy częstotliwości taktowania 1 MHz. Oszczędność energii jest dodatkowo "wzmacniana" dzięki zastosowaniu mechanizmu SEQ. Monitoruje on wejścia cyfrowe niezależnie od CPU i pamięci operacyjnej. W wypadku, gdy wykryje aktywność na wejściach, wybudza CPU z trybu uśpienia "przekazując pałeczkę". Innym ciekawym elementem wyposażenia jest interfejs LIN pracujący w trybie master (LMA) ze sprzętowym wsparciem dla detekcji ramek danych LIN bez potrzeby angażowania CPU. Maksymalna częstotliwość taktowania rdzenia, zależnie od mikrokontrolera, wynosi od 48 do 64 MHz, a współczynnik Drystone wynosi 1,81 MIPS/MHz.
Wśród mikrokontrolerów V850 użytkownik ma do wyboru układy mające od 30 do 256 wyprowadzeń, od 16 kB do 2 MB pamięci Flash, od 8 do 256 kB RAM, taktowane przebiegiem zegarowym o częstotliwości do 200 MHz. Zakres napięcia zasilania rozciąga się od 2,7 do 5,5 V.
W sierpniu 2012 r. Renesas zapowiedział wprowadzenie do produkcji kolejnej rodziny mikrokontrolerów będącej rozwinięciem V850. Rodzina RH850 - bo o niej tu mowa - na razie obejmuje tylko jeden mikrokontroler RH850/F1L wytwarzany w procesie MONOS 40 nm. Pozwala to na dalsze ograniczenie poboru energii. Nowy mikrokontroler jest dodatkowo wyposażony w sprzętowe wspomaganie szyfrowania danych oraz dodatkowe funkcje sieciowe, przydatne w nowoczesnym samochodzie. Schemat blokowy mikrokontrolera RH850/F1L pokazano na rysunku 6. Można na nim zauważyć bogate wyposażenie w interfejsy komunikacyjne (6×CAN, 2×CSI, 4×QCSI, 6×UART/LIN, 10×LIN, I²C), aż 36-wejściowy przetwornik A/D, 16-kanałowy kontroler DMA, 72-kanałowy generator PWM, liczne timery, zegar czasu rzeczywistego i inne.
Ostatnim mikrokontrolerem, który pozostał do omówienia, jest SuperH. W tym artykule pod pojęciem mikrokontrolera kryje się układ wyposażony w CPU, niezbędne układy peryferyjne oraz pamięć operacyjną. Wspólnie tworzą one system autonomiczny, zdolny do samodzielnego wykonywania programu użytkownika z niewielkim tylko udziałem elementów zewnętrznych.
Rdzeń SuperH został opracowany przez firmę Hitachi w latach 90. Firma ta opracowała szereg kompatybilnych "w górę" rdzeni, noszących oznaczenia SH. Rdzenie SH1 i SH2 były używane np. w grach wideo firmy Sega (Sega Saturn, Sega 32X). Co ciekawe, dla zaoszczędzenia pamięci programu, pomimo 32-bitowej architektury rdzeń używa rozkazów 16-bitowych, co daje znaczne oszczędności w zajętości pamięci. Kilka lat później opracowano rdzeń SH3, w otoczeniu którego pojawił się kontroler pamięci oraz jednostka DSP wspomagająca przetwarzanie sygnałów. Na początku 2001 r. firma Hitachi opracowała rdzeń SH4 przeznaczony do zastosowania w konsoli Dreamcast. Jako kolejne powstały rdzenie SH5 i SHX, które jednak są poza obszarem naszych zainteresowań.
Firma Renesas wytwarza mikrokontrolery i mikroprocesory z rdzeniami SH1 (56 typów), SH2 (62 typy), SH3 (68 typów), SH4 (91 typów). W mikrokontrolerach są stosowane rdzenie SH1, SH2, SH2-DSP, SH2A. SH2A-FPU oraz SH-2A Dual. Na rysunku 7 pokazano przegląd rodziny mikrokontrolerów z rdzeniem SuperH wytwarzanych przez Renesas.
Przeznaczeniem mikrokontrolerów SuperH są urządzenia multimedialne, powszechnego użytku, nawigacje samochodowe i inne. Na przykład, układy z rdzeniem SH1 były używane w napędach CD ROM w domowych urządzeniach powszechnego użytku, takich jak pralki czy lodówki. Z kolei układy z rdzeniem SH2 są stosowane w urządzeniach pracujących w sieci, grach komputerowych oraz w instalacjach samochodowych. Rdzeń SH2A jest modyfikacją SH2 - pracuje w architekturze superskalarnej, która pozwala na wykonywanie więcej niż 1 instrukcji w pojedynczym cyklu maszynowym. Mikrokontrolery z tym rdzeniem są stosowane równie dobrze w aplikacjach sterujących silnikami, jak i w urządzeniach multimedialnych, systemach car audio, automatyce budynków oraz systemach kontroli trakcji, ABS i innych.
Microchip PIC32
Microchip jest znany przede wszystkim jako producent mikrokontrolerów 8- i 16-bitowych, które zyskały ogromną popularność. Nieco mniej znane są mikrokontrolery 32-bitowe produkowane pod oznaczeniem PIC32. A są to układy o tyle ciekawe, że mają ogromne możliwości, tradycyjnie doskonałe wsparcie firmy oraz są bardzo dobrze wyposażone np. we wbudowany interfejs USB OTG, który nieustępliwie wypiera wysłużony RS-232 do komunikacji z komputerem PC. Rozszerzenie standardu USB 2.0 OTG pozwala na dodanie niektórych funkcji Hosta USB urządzeniom podrzędnym.
Mikrokontrolery PIC32 mają rdzeń M4K z rodziny MIPS32. Rdzenie te są również oferowane jako rozwiązania do implementacji przez innych producentów układów scalonych. Jak podaje producent, prędkość wykonywania kodu przez rdzeń MK4 jest bardzo duża i osiąga 1,53 MIPS/MHz w teście Dryhstone. Oznacza to, że układ wykonuje średnio półtorej instrukcji na takt zegara. Uzyskanie wysokiej wydajność możliwe było m.in. dzięki zastosowaniu 5-stopniowego bufora pipeline oraz modułu sprzętowego dzielenia i mnożenia. Dzięki temu niemu mnożenie i dzielenie są wykonywane w pojedynczym cyklu zegarowym. W celu zminimalizowania czasu obsługi przerwania, mikrokontrolery PIC32 mają podwójne zestawy rejestrów (tzw. shadow registers). Naprzemienne ich przełączanie skraca czas obsługi przerwania, gdyż nie ma potrzeby zapisywania na stosie aktualnego stanu procesora. W procesorach PIC32 rdzeń ma rozdzielone, 32-bitowe magistrale danych i instrukcji. Są to więc procesory o architekturze harvardzkiej. Schemat blokowy mikrokontrolerów PIC32 przedstawiono na rysunku 8.
Zależnie od wersji, mikrokontrolery PIC32 mają pamięć Flash o pojemności od 32 do 512 kB wyposażoną w moduł wstępnego pobierania danych (prefetch). Oprócz "standardowych" komunikacyjnych układów peryferyjnych, takich jak: do 6 interfejsów UART, do 5 interfejsów I²C, do 4 portów SPI, w mikrokontrolerach jest wbudowany moduł komunikacyjny USB OTG. Zawiera on generator sygnału zegarowego 48 MHz (wymagany w standardzie USB low speed i full speed), transceiver, układy komparatorów napięcia na magistrali USB, a także rezystory podciągające do napięcia zasilania lub do masy, w zależności od trybu pracy modułu. Ma również kontroler DMA do obsługi systemowych pamięci RAM oraz Flash. Co ważne dla aplikacji sieciowych, mikrokontrolery PIC32 mają również Ethernet MAC z interfejsem MII/RMII (obsługiwany - podobnie jak USB - za pomocą DMA).
Do opisywanych mikrokontrolerów można również dołączyć urządzenia zewnętrzne za pomocą portu równoległego. Magistrala adresowa dla peryferiów może mieć szerokość do 16 bitów, natomiast danych może być 8- lub 16-bitowa (w mikrokontrolerach w obudowach z 64 wyprowadzeniami jest dostępne tylko 8 bitów danych). Umożliwia ona dołączenie pamięci zewnętrznych, takich jak SRAM czy Flash, modułów LCD lub innych procesorów. Aby odciążyć jednostkę centralną od zadań transferu danych, mikrokontrolery PIC32 są wyposażone w moduł DMA obsługujący do 8 kanałów, który umożliwia inicjowanie bezpośredniego transferu danych z i do modułu komunikacyjnego, z i do pamięci danych bez udziału procesora.
Mikrokontrolery z rodziny PIC32 zostały tak zaprojektowane, aby ułatwić przenoszenie oprogramowania między różnymi modelami mikrokontrolerów, a nawet w różnych obudowach (64 i 100 wyprowadzenia).
PIC32 muszą być zasilane napięciem od 2,3 do 3,6 V, przy czym linie wejścia-wyjścia akceptują napięcie do 5 V. Należy tu zaznaczyć, że stwierdzenie to jest prawdziwe tylko dla czysto cyfrowych wejść, jeżeli dana końcówka może pełnić funkcje analogowe to maksymalne napięcie nie może przekraczać napięcia zasilania. Prąd poobierany przez te układy podczas normalnej pracy wynosi około 55 mA przy częstotliwości zegarowej 80 MHz. Mikrokontrolery PIC32 mogą pracować w kilku trybach oszczędzania energii, to jest przy zmniejszanej wartości prądu pobieranego przez układ. Moduł zarządzania energią posiada funkcje Power-On-Reset, Brown-Out-Reset oraz wykrywania niskiego napięcia zasilania.
Microchip wspiera projektantów oprogramowania dla swoich 32-bitowców oferując darmowe biblioteki programowe, m.in. stos protokołów TCP/IP, obsługi interfejsu CAN lub też biblioteki audio oraz do projektowania GUI (graficznego interfejsu użytkownika).
Infineon AUDO, AURIX
W 1999 r. firma Infineon uruchomiła produkcję mikrokontrolera AUDO. Jego nazwa została utworzona jako zbitek liter ze słów AUtomotive unifieD processOr). Czytając poprzednie zdanie mam jednak wrażenie, że ktoś najpierw nazwał wyrób, a później na siłę szukał uzasadnienia dla nazwy, która już została przyjęta. To jednak jest dla nas bez znaczenia. Nowy mikrokontroler miał rdzeń TriCore nazwany tak, ponieważ łączył cechy RISC, MCU i DSP. Od tamtego czasu koncepcja rdzenia ewoluowała i aktualnie jest oferowana jego czwarta generacja. Nowe, wyposażone w niego mikrokontrolery z rodziny AURIX MAX (wersja 1,6) są przeznaczone głownie do zastosowania w motoryzacji.
W związku z aplikacjami motoryzacyjnymi, mikrokontrolery produkowane przez firmę Infineon mają podwyższone poziomy zabezpieczeń zawartości pamięci oraz bezpieczeństwa wykonywania aplikacji, a systemy w nie wyposażone są łatwo skalowalne dzięki kompatybilności pod względem wyprowadzeń i różnicom jedynie funkcjonalnym.
Mikrokontrolery z rdzeniem TriCore są opracowane do realizowania złożonych algorytmów obliczeniowych. Doskonale nadają się np. do sterowania wtryskiem w silnikach benzynowych oraz wysokoprężnych, świetnie radzą sobie z zadaniem zapewnienia niskiej emisyjności szkodliwych spalin. Nowym obszarem ich zastosowania są pojazdy elektryczne i hybrydowe, w których nie tylko sterują silnikiem napędowym, ale również elementami wyposażenia pojazdu. Oprócz tego, te mikrokontrolery są stosowane np. do sterowania poduszkami powietrznymi, systemami oświetlenia, czujnikami parkowania, radarami bliskiego i dalekiego zasięgu (także działającymi w oparciu o fale radiowe), do obsługi kamer systemów cofania itd. Oczywiście, mikrokontrolery Infineona świetnie nadają się również do innych zastosowań, np. do budowy sterowników PLC, sterowników silników, w instalacjach inteligentnych budynków itp.
Wydaje się, że rodziny AUDO i AURIX są znane w Polsce tylko wąskiemu gronu specjalistów. Dlatego na rysunku 9 prezentujemy pełny przegląd ich oferty, natomiast na rysunku 10 przykładową aplikację zaczerpniętą z dokumentacji, na której jest widoczne nie tylko otoczenie mikrokontrolera, ale również jego schemat blokowy.
Era rozwiązań standardowych - mikrokontrolery Cortex-M
W błyskawicznym tempie producenci mikrokontrolerów wprowadzają do swoich ofert produkcyjnych układy z opracowanymi przez ARM rdzeniami Cortex-M, które - choć nie pozbawione niedoskonałości - w ciągu kilku zaledwie lat zostały wypromowane i przyjęte jako rozwiązanie standardowe przez większość liczących się producentów. Z siły corteksowego trendu dość szybko zdała sobie sprawę większość producentów mikrokontrolerów, w związku z czym polski konstruktor bez trudu może sięgnąć po mikrokontrolery z rdzeniem Cortex-M pochodzące z ofert 12 producentów. Konstruktorzy chcący stosować rozwiązania alternatywne, mogą zastosować mikrokontrolery z ofert co najmniej 5 dużych i 4 mniej znanych producentów, słabo reprezentowanych w naszym kraju, ale ich oferta jest dostępna u różnych dystrybutorów obecnych także na naszym rynku.
Dzieje standardu
Historia mikrokontrolerów z rdzeniem Cortex-M sięga wiosny 2007 roku, kiedy to nieistniejąca już firma Luminary Micro ogłosiła rozpoczęcie produkcji pierwszych na świecie mikrokontrolerów wyposażonych w rdzeń Cortex-M3. Nowa rodzina układów nosiła nazwę Stellaris, a obecnie (od połowy 2009 roku) jej właścicielem i producentem jest firma Texas Instruments. Charakterystyczną dla każdego technologicznego startup’u słabością firmy Luminary Micro była słabo rozwinięta sieć dystrybucyjna, co umożliwiło przejęcie palmy pierwszeństwa na rynku firmie STMicroelectronics, która pierwsze mikrokontrolery STM32 wprowadziła (także z rdzeniem Cortex-M3) na rynek po połowie 2007 roku. Nieco później, bo pod koniec 2008 roku zapowiedziała wprowadzenie do produkcji własnej rodziny mikrokontrolerów z rdzeniem Cortex-M3 - LPC1700. Było to o tyle zaskakujące, że właśnie dzięki Philipsowi 32-bitowe mikrokontrolery trafiły pod strzechy, co zawdzięczamy rewolucyjnemu wdrożeniu do produkcji przez tę firmę mikrokontrolerów LPC2000 (ogłoszono to pod koniec 2003 roku, a fizycznie układy z tej serii trafiły na rynek w 2004 roku).
Decyzje tych firm zachęciły do wejścia na powstający rynek kolejnych producentów, z których wielu zakupiło od ARM licencje na rdzeń Cortex-M3. Aktualnie na jest dostępnych kilkadziesiąt rodzin mikrokontrolerów z różnymi rdzeniami Cortex-Mx (x=0, 0+, 3, 4 lub 4F), pochodzących z ofert ponad 20 producentów.
Firma ARM dość szybko dostrzegła konieczność przygotowania uniwersalnego pakietu bibliotek dla mikrokontrolerów wyposażonych w rdzenie Cortex-M w celu uproszczenia przenoszenia aplikacji pomiędzy mikrokontrolerami różnych producentów, a przede wszystkim mikrokontrolerami wyposażonymi w różne rdzenie Cortex-M. Dlatego w 2008 roku firma ARM ogłosiła opracowany wspólnie z firmami produkującymi mikrokontrolery system bibliotek CMSIS 1.0 (Cortex Microcontroller Software Interface Standard), których zadaniem jest obsługa rdzeni Cortex-M i ich standardowych elementów wyposażenia, jak na przykład SysTick, NVIC, rejestry CPU, rejestry SCB itd. W specyfikacji CMSIS uwzględniono także ujednolicenie nazw przerwań, przebieg inicjalizacji CPU, systemu taktującego (w tym zdefiniowanie uniwersalnej zmiennej SystemFrequency) i innych niezależnie od producenta układu, zestandaryzowano organizację plików nagłówkowych stosowanych w projektach, ujednolicono także wiele innych elementów programowania. Aby dodatkowo ułatwić pracę programistom, w specyfikacji CMSIS przewidziano miejsce na pakiety bibliotek dostarczanych przez producentów mikrokontrolerów, w których zdefiniowano funkcje komunikacji ze sprzętem dostępne za pomocą wspólnego API, co oznacza, że poprawnie napisana aplikacja korzystająca z na przykład UART może być przekompilowana z mikrokontrolera pochodzącego od jednego producenta na inny bez żadnych zmian.
Różnice pomiędzy rdzeniami Cortex-Mx
Pierwsze na rynku pojawiły się mikrokontrolery z rdzeniami Cortex-M3, następnie M0, M4 i M0+. W ofercie firmy ARM znajduje się także rdzeń Cortex-M1, ale jest on dostępny wyłącznie w wersji do stosowania w układach FPGA. Różnice pomiędzy poszczególnymi rdzeniami Cortex- Mx są istotne i determinują docelowe obszary aplikacyjne mikrokontrolerów, w których są stosowane. Najważniejsze z nich, poza listami obsługiwanych rozkazów (rysunek 11) zestawiono w tabeli 2. Rdzenie Cortex-M0/M0+, ze względu na względną prostotę budowy i wynikającą z tego relatywnie niewielką wydajność oraz niewielki pobór mocy, są stosowane w najtańszych mikrokontrolerach, które mogą cenowo konkurować z rozwiązaniami 8-bitowymi i jednocześnie wydajnością - z większością 16-bitowych.
Obecnie najpopularniejsze rdzenie Cortex-M3 tworzą "klasę średnią", charakteryzującą się dużą prędkością wykonywania programów, bogatym wyposażeniem, a dzięki zastosowanym rozwiązaniom wspomagającym oszczędzanie energii, nadają się także do stosowania w systemach o wymaganym niskim poborze mocy. Rdzenie Cortex-M4/M4F są przeznaczone do stosowania w aplikacjach wymagających zarówno dużej szybkości wykonywania programów, możliwości cyfrowej obróbki sygnałów (DSP), jak i wspomagania obliczeń zmiennoprzecinkowych.
Ogólnodostępne specyfikacje rdzeni udostępnione przez firmę ARM nie zawsze dostarczają pełnych informacji o możliwościach rdzenia zastosowanego w danym mikrokontrolerze. Wynika to z faktu umożliwienia przez ARM indywidualnego modyfikowania niektórych elementów wyposażenia rdzeni na życzenie firmy zakupującej licencję. Przykładowo rdzenie Cortex-M0 standardowo nie umożliwiają operacji typu bit-banding, ale większość mikrokontrolerów w nie wyposażonych radzi sobie z tym bez problemów. Rdzenie Cortex-M4 mogą, ale nie muszą być wyposażane w koprocesor FPU, w związku z czym na rynku dostępne są mikrokontrolery z rdzeniami Cortex-M4 wyposażonymi w FPU i bez FPU, co nie jest zbyt chętnie sygnalizowane przez ich producentów. Różnic tego typu jest znacznie więcej, w związku z czym należy ostrożnie dobierać mikrokontrolery do aplikacji.
Oferta tynkowa i aplikacje Cortex- Mx
Obecnie na rynku mamy łatwą dostępność wielu (szacunkowo ich liczba przekracza 1200 typów) mikrokontrolerów wyposażonych w rdzenie Cortex-Mx pochodzących od wielu producentów, z których część zadbała o kompatybilność elektryczną i mechaniczną z rozwiązaniami konkurentów. Ze względu na ogromne możliwości wyboru, jego dokonanie nie zawsze bywa proste. Samo poznanie istotnych cech poszczególnych mikrokontrolerów wymaga ogromnej dokładności, czasu i cierpliwości co powoduje, że konstruktorzy przyzwyczajają się do typów mikrokontrolerów z pierwszego wyboru, których cechy i parametry nie zawsze są optymalne z punktu widzenia aplikacji. Dzięki wbudowanemu wyposażeniu największa liczba dostępnych na rynku mikrokontrolerów z rdzeniami Cortex-Mx jest zorientowana na aplikacje uniwersalne, co oznacza, że mikrokontrolery są bogato wyposażone w różnego rodzaju konfigurowalne peryferia o dużej uniwersalności. Standardem wyposażenia wśród uniwersalnych mikrokontrolerów z rdzeniami Cortex są zwielokrotnione interfejsy SPI, I²C (także w różnych wersjach Fm+), UART (zazwyczaj z LIN i IrDA), CAN, USB FS/HS oraz OTG, duża liczba 16- i 32-bitowych timerów, a także wielokanałowe przetworniki A/C i C/A o rozdzielczości od 10 bitów wzwyż.
Mikrokontrolery zorientowane na aplikacje komunikacyjne są dodatkowo wyposażane w interfejsy mostki MAC lub MAC+PHY (zazwyczaj z obsługą IEEE1588), bloki kryptograficzne AES/DES oraz generatory hash’ujące, które łącznie umożliwiają implementację inteligentnego urządzenia sieciowego, realizującego wszelkie zadania wymagane we współczesnych systemach sieciowych.
Szybko rosnącym obszarem aplikacji mikrokontrolerów wyposażonych w rdzenie Cortex-Mx są falowniki i sterowniki silników elektrycznych. Mikrokontrolery zorientowane na aplikacje tego typu zawierają wielokanałowe timery umożliwiające generację przebiegów wielofazowych PWM z definiowanym czasem martwym pomiędzy poszczególnymi fazami, wejścia blokujące sprzętowo PWM, pozwalają na monitorowanie wartości prądów w wyjściowych stopniach mocy, mają sprzętowe mechanizmy wspomagające szybkie hamowanie wirników i zmianę kierunku obrotów, a także analogowe komparatory i wzmacniacze operacyjne (często PGA - Programmable Gain Amplifier). Nowym trendem w tej grupie mikrokontrolerów jest stosowanie w nich timerów o bardzo dużej rozdzielczości generacji PWM (nawet poniżej 1 ns), dzięki czemu możliwa staje się bezpośrednia synteza wielofazowych przebiegów sinusoidalnych o regulowanych parametrach za pomocą mikrokontrolerów.
Równie szybko rosnącą grupą aplikacji mikrokontrolerów z rdzeniami Cortex-Mx są urządzenia mobilne, w których jednym z podstawowych kryteriów doboru podzespołów jest minimalizacja poboru mocy. Producenci stosują różne zabiegi zapewniające spełnienie tego wymogu, przy czym w większości przypadków dotyczą one bloków peryferyjnych a nie samych rdzeni, które zostały zaprojektowane przez ARM - z niezłym skutkiem - jako energooszczędne. W rdzeniach Cortex-Mx zaimplementowano zaawansowane mechanizmy oszczędzania energii, są one także przystosowane do zasilania napięciami o wartościach 1,1...1,8 V, które są uzyskiwane za pomocą stabilizatorów liniowych wbudowanych w struktury mikrokontrolerów. Jednym z powszechnie zaakceptowanych przez producentów sposobów obniżenia poboru energii przez peryferia jest dynamiczne zarządzanie ich taktowaniem, sprzętowe odłączanie zasilania bloków peryferyjnych niewykorzystywanych w danej aplikacji oraz możliwość wyłącznej, autonomicznej pracy wybranych bloków peryferyjnych z uśpioną CPU i pozostałymi peryferiami.
Kolejną dużą grupą układów o wyposażeniu dobranym pod kątem specyficznych wymogów aplikacji są mikrokontrolery "pomiarowe", różniące się od uniwersalnych przede wszystkim wbudowanymi precyzyjnymi przetwornikami A/C i C/A o dużej rozdzielczości (nawet do 26 bitów), wbudowanymi analogowymi torami kondycjonującymi sygnały analogowe (także różnicowe), wbudowanymi precyzyjnymi źródłami napięć i/lub prądów odniesienia, a także budową zorientowaną na minimalizację generacji zakłóceń elektromagnetycznych i ochronę torów analogowych przed ich wpływem. Zazwyczaj mikrokontrolery z tej grupy nie należą do rekordzistów częstotliwości taktowania, bowiem istotą typowych aplikacji pomiarowych jest maksymalnie precyzyjne obrobienie sygnału analogowego, w czym przeszkadzają blisko ulokowane źródła szybkich sygnałów cyfrowych.
Równie wyraźnie określoną grupą aplikacji, w których widać szybko rosnące udziały rdzeni Cortex-Mx, są mikrokontrolery zintegrowane z transceiverami radiowymi na pasma ISM. Układy tego typu oferuje już trzech producentów (Analog Devices, Energy Micro i STMicroelectronics), przy czym każdy z nich wybrał - przynajmniej na razie - inny sposób podboju rynku aplikacji RF:
- firma Analog Devices w mikrokontrolerach ADuCRF101 zastosowała uniwersalne transceivery na pasam 434 lub 868 MHz, umożliwiające przesył danych z prędkością do 38,4 kb/s i modulacją 2FSK,
- firma Energy Micro w mikrokontrolerach z rodziny EFR4D (Draco) zastosowała uniwersalne transceivery na pasma 169/315/433/500/868/915/950 MHz oraz 2,4 GHz, umożliwiające przesył danych z prędkością do 4 Mb/s i modulacjami: (FSK/MSK/O-QPSK/BPSK/OOK/ASK,
- firma STMicroelectronics w mikrokontrolerach STM32W zastosowała transceivery radiowe na pasmo 2,4 GHz zgodne ze standardem IEEE 802.15.4, co wyraźnie sugeruje ich orientację na aplikacje zgodne z ZigBee.
Przedstawione powyżej podziały są oczywiście umowne i nie są związane z żadnym z rdzeni z serii Cortex-Mx.
Nie ma jednego, bezwzględnie optymalnego sposobu zestawienia cech i możliwości mikrokontrolerów dostępnych na rynku, ale żeby dać Czytelnikom elementarne poczucie skali zalewającej nas corteksowej fali przygotowaliśmy zestawienia najważniejszych cech rodzin mikrokontrolerów wyposażonych w poszczególne rdzenie z serii Cortex-Mx. W tabeli 3 zestawiono mikrokontrolery wyposażone w rdzenie Cortex-M0 oraz Cortex-M0+. W tabeli 4 znajduje się zestawienie mikrokontrolerów wyposażonych w rdzenie Cortex-M3, natomiast w tabeli 5 zestawienie mikrokontrolerów wyposażonych w rdzenie Cortex-M4 i Cortex-M4F.
Dane zebrane w tabelach nie dają pełnej informacji o prezentowanych rodzinach mikrokontrolerów, ponieważ chcąc pokazać zakresy wartości parametrów takich jak na przykład pojemność pamięci, przytaczamy ich maksymalne wartości, które nie zawsze występują we wszystkich konfiguracjach sprzętowych. Dokładne informacje są dostępne w aktualnych notach katalogowych poszczególnych podzespołów.
W tabelach pominięto rodziny mikrokontrolerów wyposażonych w rdzenie Cortex-Mx produkowanych przez firmy mało znane i słabo w Polsce reprezentowane, jak na przykład: Fujitsu, Holtek, OKI (obecnie Lapis Semiconductor), Renesas, Samsung, Toshiba, czy też rosyjski Milandr. Wiele firm stosuje także rdzenie Cortex-Mx w układach typu SoC (System-on-Chip), czego przykłady przedstawiły na rynku m.in. firmy: Triad Semiconductor (rodzina TSX1000), Nordic Semiconductor (nRF51822), IDT (seria układów 90E46), czy ONSemiconductor (np. NCN49597).
W prezentowanych zestawieniach nie uwzględniliśmy także mikrokontrolerów spełniających rolę sprzętowych odtwarzaczy dźwięków (jak np. ChipCorder ISD9160 firmy Nuvoton) oraz mikroprocesorów (także wielordzeniowych, jak na przykład OMPA4470 firmy Texas Instruments), w których dwa rdzenie Cortex-M3 (taktowane sygnałem zegarowym o częstotliwości 266 MHz) spełniają rolę supportu dla rdzeni Cortex-A9 przy realizacji prostszych zadań. Podobne rozwiązanie firma Texas Instruments zastosowała w mikroprocesorach OMAP5 (Cortex-A15), w których rolę supportu spełniają rdzenie Cortex-M4.
Jacek Bogusz, EP
Bibliografia:
"ColdFire Embedded Controllers Fact Sheet" Freescale Semiconductor, Inc. 2005
"Highly Integrated and Performance Optimized. 32-bit Microcontrollers for Automotive and Industrial Applications" Infineon 2012
"32-bitowe mikrokontrolery PIC z interfejsem USB OTG" Tomasz Starak, EP 8/2008
"PIC32. Korzyści płynące ze stosowania 32-bitowych mikrokontrolerów" Dave Richkas, EP 6/2011
"Dwa na wszelki wypadek. Mikrokontrolery RX210 i RX63N od Renesas" Ewald Gunther, EP 11/2012
"Mikrokontrolery Flexis. Precyzyjne pomiary w urządzeniach medycznych" Farnell/Freescale, EP 11/2010
"Mikrokontrolery AVR32. Atmel wie co robi, ale też robi co wie..." Piotr Zbysiński, EP 1/2008
"Mikrokontrolery AD 2012: era rozwiązań standardowych" Piotr Zbysiński, EP+ Mikrokontrolery
http://goo.gl/8X6FjW
http://goo.gl/ozrFBQ
http://goo.gl/OIJDtB
http://goo.gl/ZhJMK5
http://goo.gl/g5kCLb
http://goo.gl/Fb9wCB
http://goo.gl/MRcNw9
http://goo.gl/7ALsnJ
http://goo.gl/zDHRD2
http://goo.gl/HtrrPj
http://goo.gl/nWPP1a
http://goo.gl/mb62rJ