Freescale Freedom KL25Z: „Arduino” na 32 bitach
Nowy rdzeń charakteryzuje się jeszcze bardziej zmniejszonym poborem mocy, jednocześnie zwiększono prędkość wykonywania przez niego programów do 0,93 DMIPS/MHz i to pomimo zredukowania głębokości pipelinening’u z trzech poziomów do dwóch. Integralną funkcją rdzenia Cortex-M0+ jest także jednotaktowy dostęp do portów GPIO, których obsługę zsynchronizowano z dostępem do pamięci rozkazów (synchronizacja odbywa się „przeciwnymi” zboczami sygnału zegarowego) za pośrednictwem magistrali AHB-Lite. Firma ARM wróciła w Cortex-M0+ do niektórych wcześniejszych pomysłów, zweryfikowanych w praktyce w rdzeniach Cortex-M3 i Cortex-M4, między innymi:
- rdzeń wyposażono w kontroler MPU ze sprzętowym podziałem pamięci na 8 chronionych obszarów, co zapewnia łatwość zarządzania dostępem do przechowywanych danych,
- możliwa jest dynamiczna relokacja tablicy wektorów obsługi wyjątków,
- w rdzeniu Cortex-M0+ zintegrowano dodatkowe bloki sprzętowe wspomagające debugowanie jego pracy, w tym MTB (Micro Trace Buffer), który umożliwia wykorzystanie fragmentu RAM mikrokontrolera jako bufora kołowego przechowującego wybrany przez użytkownika zestaw danych.
Twórcy rdzenia Cortex-M0+ przewidzieli także mechanizmy umożliwiające jego współpracę z pamięciami Flash z magistralami danych o szerokości 16 bitów, co nie powinno mieć wpływu na jego wypadkową wydajność, ponieważ większość instrukcji z listy ARMv6-M jest 16-bitowa.
Już wiemy dlaczego warto zwrócić uwagę na zestaw Freedom firmy Freescale, teraz pokrótce przedstawimy jego możliwości. Schemat blokowy zestawu pokazano na rysunku 2.
Rys. 2 Schemat blokowy zestawu Freedom KL25Z
Rozmieszczenie elementów zestawu Freedom KL25Z
|
„Sercem” zestawu Freedom jest mikrokontroler KL25Z128VLK4, wyposażony w 128 kB pamięci Flash, 16 kB pamięci SRAM, jego rdzeń jest taktowany sygnałem zegarowym o częstotliwości do 48 MHz. Mikrokontroler jest fizycznie kompatybilny z układami z rodziny Kinetis K, wyposażono go także w kompletny interfejs USB FS. Programowanie pamięci Flash tego mikrokontrolera oraz debugowanie jego pracy umożliwia zintegrowany na płytce Freedom interfejs programująco-debugujący o nazwie OpenSDA, który jest obsługiwany m. in. przez pakiety: CodeWarrior, IAR Embedded Workbench oraz Keil MDK.
Dodatkowe informacje o mikrokontrolerach Kinetis L są dostępne pod adresem: www.freescale.com/kinetis/Lseries |
W skład „pokładowego” wyposażenia zestawu Freedom wchodzą: LED-RGB (sterowana z linii GPIO mikrokontrolera), slider pojemnościowy, 3-osiowy akcelerometr MMA8451Q oraz złącze USB (device), za pomocą którego można dołączać zestaw do komputera PC. Wolne linie I/O mikrokontrolera wyprowadzono na złącza szpilkowe (gold-piny nie są standardowo wlutowane) rozmieszczone w rastrze 2,54 mm. Sposób rozmieszczenia tych wyprowadzeń jest zgodny ze standardem wyznaczonym przez Arduino. Ponieważ praktycznie wszystkie linie GPIO mogą spełniać kilka funkcji (są w mikrokontrolerze KL25 multipleksowane), zapanowanie nad konfiguracją portów GPIO jest dość trudne. Z tego powodu firma Freescale przygotowała proste narzędzie w postaci arkusza Excel, które nie tylko ułatwia szybką orientację w funkcjach dostępnych pinów, ale także porównać jej z płytką referencyjną Arduino R3. W arkuszu XLS zawarto także opis funkcji wyprowadzeń drugiego mikrokontrolera Kinetis (tym razem z rodziny K20), który spełnia rolę interfejsu USB<->JTAG (OpenSDA), co pozwala go także wykorzystać we własnych aplikacjach (choć, ze względu na jego rolę na płytce FREEDOM, jest to możliwe w ograniczonym zakresie).
Zestaw Freedom może być zasilany z interfejsu USB, ogniwa litowo-jonowego 3 V (przewidziano na nie miejsce od spodu płytki drukowanej), napięciem zewnętrznym o wartości 3,3 V, 5 V lub 5…9 VDC (wbudowano stabilizator).
Inżynierowie firmy Freescale przygotowali dla użytkowników mikrokontrolerów tej firmy bezpłatny system operacyjny MQX, którego uproszczona wersja – MQX Lite – powstała także z myślą o mikrokontrolerach Kinetis L. Jest ona dystrybuowana wraz z – także bezpłatnym – pakietem programistycznym CodeWarrior 10.3 (i następne wersje), który obecnie jest dostępny w wersji beta.
Wygląda więc na to, że użytkownicy dostali – co rzadkie na rynku – dobrze zgrany z mikrokontrolerami, do tego kompletny pakiet narzędzi, które tworzą kompletny system projektowy, zapewniający możliwość migracji – w razie takiej potrzeby – do innych rodzin mikrokontrolerów z oferty Freescale.