Übersicht

Das MIMXRT1010-EVK (Evaluation Kit) basiert auf der i.MX RT1010 Mikrocontroller-Einheit (MCU) von NXP. Diese MCU ist Teil der i.MX RT Crossover-Familie, die mit leistungsstarken Arm Cortex-M-Kernen ausgestattet ist (einige haben sogar zwei). Die meisten Mitglieder dieser Familie sind für Echtzeit-Ethernet-Protokolle in industriellen IoT- und Automobilanwendungen optimiert, aber der RT1010, einer der kleineren Bausteine der Familie, ist eher für allgemeine Zwecke geeignet.

Das Innere der MCU

Der iMX RT1010 basiert auf einem Arm Cortex-M7 Kern, der mit einer Geschwindigkeit von bis zu 400 MHz arbeitet. Bei leistungsfähigeren Mitgliedern der Familie kommt noch ein Arm Cortex-M4-Kern hinzu. Der Prozessor verfügt über 128 KB On-Chip-RAM, das als Tightly Coupled Memory (TCM) oder universelles RAM konfiguriert werden kann. In den SoC ist ein Energieverwaltungsmodul integriert, das die Stromversorgung des Geräts erheblich vereinfacht. Natürlich gibt es eine Reihe von Schnittstellen, darunter UART, SPI, I²C, I²S und USB. Auch ein ADC und ein Temperatursensor wurden nicht vergessen.
 
iMX RT1010 inside
Blockdiagramm des Mikrocontrollers iMX RT1010. (Quelle: NXP)

Audio-Anwendungen

Der iMX RT1010 ist ein Allzweckbaustein mit einer leichten Vorliebe für Audioanwendungen, da er über umfangreiche Audiofunktionen verfügt, darunter SPDIF- und I²S-Audioschnittstellen. Das Evaluierungskit, auf dem die MCU steckt, unterstreicht dies durch die Integration eines WM8960 Audio-Stereo-CODECs von Wolfson, einer Kopfhörerbuchse, Lautsprecheranschlüssen, einem integrierten Kondensatormikrofon und (unbestückten) Lötpunkten für SPDIF-Anschlüsse.

Andere Anwendungen

Neben Audioanwendungen eignet sich der iMX RT1010 auch für die Steuerung von Motoren. Zu diesem Zweck verfügt das EVK über Anschlüsse für PWM-Signale, die vom eFlexPWM-Modul der MCU erzeugt werden, sowie über Analogeingänge zur Messung von Strömen und Spannungen.

Der MIMXRT1010-EVK wird auch vom Zephyr RTOS unterstützt.

Andere Peripheriegeräte

Wie bei Evaluierungsplatinen üblich, befinden sich noch einige andere Dinge darauf, die die Entwicklung etwas erleichtern sollen. Das MIMXRT1010-EVK ist da keine Ausnahme. Neben der bereits erwähnten Audio- und Motorsteuerungsperipherie verfügt das Board auch über 128 Mbit QSPI-Flash-Speicher (für Programm- und Datenspeicherung, da die MCU keinen hat) und 4 Mbit LPSPI-Flash-Speicher, USB OTG, einen Bedientaster und LED sowie einen 6-Achsen-Bewegungssensor mit 3-Achsen-Beschleunigungsmesser und 3-Achsen-Magnetometer.

 
MIMXRT1010-EVK peripherals
Lage der Peripheriegeräte auf dem MIMXRT1010-EVK. (Quelle: NXP)

Auch Arduino Shields werden unterstützt

Erweiterungsleisten im Arduino-UNO-Stil sind ebenfalls verfügbar, allerdings in einer besonderen Form, da sie aus zweireihigen statt einreihigen Leisten bestehen. Die inneren Reihen sind mit dem Arduino Shield kompatibel, während einige der äußeren Reihen den Zugang zur Motorsteuerungsschnittstelle ermöglichen.

Debugging leicht gemacht

Um die Anwendungsentwicklung zu erleichtern, verfügt das EVK über eine integrierte Debug-Unterstützung. Neben einem JTAG-Header gibt es auch eine Freelink-Schnittstelle (ein Überbleibsel von Freescale) mit einem USB-Anschluss (der auch die Stromversorgung des Boards sicherstellt). Diese Schnittstelle wird von MCUXpresso unterstützt, NXPs Eclipse-basierter integrierter Softwareentwicklungsplattform.

MCUXpresso und Beispiele

Damit kommen wir zur Softwareentwicklung. Wie bereits erwähnt, ist MCUXpresso der günstigste Weg, um mit dem MIMXRT1010-EVK zu beginnen, da es kostenlos ist. Es wird mit einem umfangreichen SDK geliefert, das viele Beispiele für fast alle auf der MCU und dem EVK verfügbaren Peripheriegeräte enthält. Alles, was Sie tun müssen, ist, das Beispiel, das Sie interessiert, zu importieren, es zu kompilieren und auf das Board zu laden.

Viele Beispiele gibt es in drei Versionen: 'bm', 'lite_bm' und 'freertos'. BM" steht für Bare Metal, d.h. ohne Betriebssystem wie FreeRTOS. Die lite-Beispiele sind Bare-Metal-Beispiele, aber mit einem minimalen USB-Stack. Die komplexeren Beispiele kommen mit etwas Dokumentation, aber tief versteckt in einem Unterordner eines Ordners mit dem Namen der Karte ('evkmimxrt1010'), der auch eine vorkompilierte ausführbare Datei enthält.
 
MCUXpresso debug session
Schritt für Schritt durch ein Codebeispiel in MCUXpresso.

Ich habe ein paar Beispiele ausprobiert und sie haben alle problemlos funktioniert. Nach dem Hochladen kann man den Code sofort ausführen oder debuggen, indem man ihn schrittweise durchläuft oder Breakpoints setzt.

Eine überraschende Demo

Ein interessantes Beispiel, das ich ausprobiert habe, ist 'evkmimxrt1010_dev_audio_generator_bm', das ein USB-Audiowiedergabegerät emuliert. Nach dem Kompilieren und Hochladen des Codes entdeckt Windows ein 'USB AUDIO DEMO'-Gerät, das man anhören kann. Anstatt jedoch schöne Musik zu spielen, schreit die Demo: " Out! Out! Out! Out!...".

Natürlich werden der EVK und der iMX RT1010-Prozessor auch von den etablierten Tool-Herstellern unterstützt.

Dokumentation?

Da der Einstieg in einen neuen Prozessor immer etwas entmutigend ist, und noch mehr, wenn er mit vielen komplexen Peripheriegeräten ausgestattet ist, ist eine gute Dokumentation wichtig. Dies ist leider der Schwachpunkt des MIMXRT1010-EVK. Es gibt nicht viel, und was es gibt, sagt einem nicht viel. Allerdings sind die Designdateien der Platine mit einem Schaltplan im PDF-Format enthalten, so dass man herausfinden kann, wie z.B. die Erweiterungsports verdrahtet sind. Für alles andere sollten Sie das Datenblatt der MCU zu Rate ziehen.

Holen Sie sich das Buch!

Da es keine Dokumentation gibt, sollten Sie das neue Elektor-Buch mit dem Titel ‘Get Started with the NXP iMX RT1010 Development Kit’ von Dogan Ibrahim lesen. Das Buch beschreibt den Prozessor, das Evaluation Board und die Entwicklung von Anwendungen mit MCUXpresso sehr viel detaillierter als NXP und ist daher eine gute Möglichkeit, den Einstieg zu finden.