Der erste Blick vermittelt vielleicht den Eindruck „noch ein Mikrocontroller-Board“, aber das täuscht. Denn obwohl der MAX78000 von Maxim Integrated wie ein gewöhnlicher Dual-Core-Mikrocontroller aussieht, prädestinieren ihn seine Features für ein anderes Feld von Embedded-Anwendungen: Künstliche Intelligenz. In diesem Zusammenhang bedeutet KI vereinfacht die Fähigkeit eines Systems, komplexe Inputs wie Töne und Bilder zu erkennen – sowie natürlich: musterabhängige Steuerungen zu implementieren. Dieses Evaluations-Kit birgt neben vielem Anderen eine Anwendung zur Erkennung von Sprachbefehlen. Und diese könnte erweitert werden, um z.B. digitale Ausgänge per Sprache zu schalten.
 
Die erste Vorstellung des Evaluation-Boards MAX78000FTHR bei Elektor wurde von meinem Kollegen Clemens Valens vorgenommen. Dieser Artikel beschäftigt sich mit der Hardware des Boards. Mein Kollege Mathias Claußen wird Sie noch in einem weiteren Artikel durch die ersten Schritte der Software-Entwicklung mit dem MAX78000 führen.
 

Rapid Dev mit dem MAX78000FTHR

Der folgende Text aus der Dokumentation von Maxim Integrated beschreibt die vor ein paar Wochen auf meinem Schreibtisch gelandete Elektronik ganz gut:
 
Beim MAX78000FTHR handelt es sich um eine Rapid-Development-Plattform, die es auf der Basis des ARM-Cortex-M4F-Prozessors MAX78000 dank integriertem Convolutional-Neural-Network-Beschleuniger (CNN) erlaubt es, schnell Lösungen für KI mit sehr geringem Stromverbrauch zu implementieren. Das Board enthält außerdem den PMIC MAX20303 zwecks Batterie- und Power-Management. Es ist lediglich ca. 26 x 67 mm groß und ist mit seinem zweireihigem Header-Footprint mit den Peripherie-Erweiterungsboards von Adafruit Feather Wing kompatibel. Es enthält viel Peripherie wie z.B. eine CMOS-VGA-Kamera, ein digitales Mikrofon, einen Low-Power-Stereo-Audio-CODEC, 1 MB QSPI-SRAM, einen Micro-SD-Karten-Slot, RGB-LEDs und Taster. Der MAX78000FTHR ist eine energieoptimierte, flexible Plattform für schnelle Proof-of-Concepts und erste Softwareentwicklungen zur Beschleunigung der Markteinführung.
 
KI erfordert extreme Rechenleistung, und der MAX78000 ist so konzipiert, dass er neuronale Netze bei extrem niedrigem Stromverbrauch ausführen kann. Der integrierte hardwarebasierte CNN-Beschleuniger kann KI-Inferenzen (die Verwendung vortrainierter Modelle) bei sehr niedrigem Stromverbrauch ausführen. Dies erlaubt KI sogar im Zusammenhang mit dem IoT!
 
In diesem Beitrag geht es um die MAX78000-Hardware bzw. um die Funktionen und Peripherie des Feather Boards. Bild 1 zeigt ein vereinfachtes Blockdiagramm der Hardware, die auf dem MAX78000FTHR-Board verbaut ist und auf die wir hier näher eingehen werden.
 

MAX78000FTHR board
Bild 1: Blockdiagramm des MAX78000FTHR-Boards. Grafik: Maxim.

Der Mikrocontroller MAX7800

Dieser Chip ist das wichtigste Bauteil auf diesem Evaluations-Board. Zunächst wird kurz auf die Hauptmerkmale dieses Mikrocontrollers eingegangen. Detailliertere Informationen finden Sie im Datenblatt und dem MAX78000-Benutzerhandbuch, das zum Zeitpunkt der Erstellung dieses Artikels  nur auf GitHub zu finden war. Höchstwahrscheinlich es wird aber auch bald auf der Website von Maxim Integrated verfügbar sein. Bild 2 veranschaulicht den Aufbau der Hardware-Strukturen dieses Mikrocontrollers.

MAX78000 microcontroller
Bild 2: Blockschaltbild des Mikrocontrollers MAX78000. Grafik: MAX78000-Datenblatt.

TBeim MAX78000 handelt es sich um eine Dual-Core-MCU mit einem ARM-Cortex-M4-Prozessor samt FPU. Der Basistakt beträgt bis zu 100 MHz und der seines RISC-V-Coprozessors liegt bei 60 MHz. Der ARM-Core ist für den Großteil der Steuerung und Verarbeitung zuständig, während der RISC-V-Coprozessor Hilfsaufgaben wie DMA-Datentransfer und Hintergrund-Jobs wie GPIO-Verarbeitung, erledigt. Die beiden CPUs haben im Prinzip gleichwertigen Zugriff auf die Systemperipherie und können für beliebige Aufgaben programmiert werden. Der interne Speicher für allgemeine Verwendung besteht aus 512 KB Flash, 128 KB SRAM, 16 KB Cache und einem Boot-ROM.

Der Block „Convolutional Neural Network“ oben rechts in der Blockschaltung ist das Zentrum der KI-Verarbeitung geht. Das Thema KI und auch die genaue Funktionsweise dieses CNN-Blocks würden den Rahmen dieses Artikels sprengen. Weitere Informationen zum CNN finden sich im Datenblatt und im Handbuch. Der CNN-Block enthält dedizierte Speicher für die Gewichtungen des neuronalen Netzes und für die Ablage und Verarbeitung der Eingangsdaten. Diese Speicher sind unabhängig und stehen dem Mikrocontroller zusätzlich zu den oben aufgeführten Speichern zur Verfügung.

Über das interne Takt- und Powermanagement können Rechenleistung und Stromverbrauch des MAX78000 ausbalanciert werden. Der MAX78000 verfügt über bis zu 52 GPIO/O-Pins, die mit einer beeindruckenden Sammlung von Schnittstellen belegt sind. Natürlich sind auf dem MAX78000FHTR-Board viele dieser Pins und Schnittstellen durch die On-Board-Hardware und Peripherie belegt. Sogar zu den Erweiterungssteckern an den Seiten des Feather-Boards geführte Pins können mit dieser Hardware geteilt werden. Man sollte daher immer prüfen, ob die verwendete externe Elektronik, mit dem Board und der zu implementierenden Firmware in Konflikt geraten könnte! Bild 3 zeigt, welche I/Os schon mit der On-Board-Peripherie belegt sind. Die Pegel jedes GPIO-Pins können per Software auf 1,8 V oder 3,3 V konfiguriert werden. Generell wird hier die Peripherie auf des Boards und seine Verbindungen zum MAX78000 und zum PMIC dargestellt. Bilder: 
MAX78000 FTHR Application Platform.
 

Top side of the MAX78000FHTR
Bild 3a: Obere Seite.
Bottom side of the MAX78000FHTR
Bild 3b: Untere Seite.


An Schnittstellen bietet der MAX78000 serielles Debugging (SWD), I2S (Master/Slave), drei High-Speed-I2C-Master, einen 4-Wire-UART, zwei 2-Wire-UARTS, einen 2-Wire-Low-Power-UART (LPUART), zwei SPIs (Master/Slave), einen 1-Wire-Master und ein 12-bit-Parallel-Kamera-Interface (PCIF). Hinzu kommen acht 10-bit-Sigma-Delta-ADC-Kanäle und drei Pulse-Train-Engines. Und schließlich sind eine Echtzeituhr, zwei Watchdog-Timer, vier 32-bit-Timer und zwei 32-bit-Low-Power-Timer vorhanden.

MAX20303 Wearable PMIC mit „Tankanzeige“

Dieses Power-Management-IC enthält Spannungsregler, einen Akkulader und eine Anzeige zur Steuerung und Überwachung des Ladezustands eines (optionalen) externen Li-Ionen-Akkus, der an die JST-Anschluss J9 angeschlossen ist. Er wurde für Ultra-Low-Power-Wearable-Anwendungen entwickelt und ist über eine I2C-Schnittstelle an den Pins P0_17 (SDA) und P0_16 (SCL) des MAX78000 konfigurierbar. Weitere Informationen zu diesem PMIC finden Sie im Datenblatt.
Der MAX20303 steuert die Stromversorgung des Feather-Boards und schaltet - falls angeschlossen - automatisch auf den externen Akku um, wenn die USB-Versorgung abgeschaltet wird. Der Akku wird geladen, wenn das Feather Board über den Micro-USB-Anschluss CN1 mit Strom versorgt wird und die vom System benötigte Strom geringer ist als der maximale Versorgungsstrom. Dann wird die Batterie mit dem übrig bleibenden, auf maximal 51 mA begrenzten Strom geladen. Benötigt das Board aktuell mehr Strom als die USB-Versorgung liefern kann, wird der optionale LiPo-Akku als Puffer zugeschaltet.

Der MAX20303-Ausgang L1OUT kann so konfiguriert werden, dass er die Stromversorgung des eingebauten Mikrofons schaltet. Der Ausgang MCP0 kann die Stromversorgung des SD-Karten-Slots steuern. Der Thermistor RT1 ist ebenfalls an den MAX20303 angeschlossen und überwacht vermutlich die Temperatur des Akkus während des Ladevorgangs – das ist aber nicht im Datenblatt des MAX78000FTHR dokumentiert. Dazu müsste der LiPo-Akku auf der Unterseite der Platine angebracht werden. RT1 befindet sich in der Nähe der dreieckigen Markierung von Pin-1 des SD-Karten-Slots.

Debugging- und Programmierschnittstellen

U2 ist eine mit der DAPLink-Firmware vorprogrammierte MAX32625-MCU und ermöglicht das Programmieren und Debuggen des ARM-Cortex-M4-Kerns MAX78000 via USB. U2 stellt auch eine Brücke zwischen einem der UARTs des MAX78000 und USB zur Verfügung, so dass jedes Terminalprogramm auf einem PC zum Austausch serieller Daten mit dem Feather Board verwendet werden kann. Es stellt auch die Schnittstelle zur Verfügung, um den MAX78000 als USB-Massenspeicher zu programmieren, sodass man einfach eine Binärdatei per Drag&Drop auf das Board ziehen kann.

J1 ist ein 10-poliger Standard-JTAG-Anschluss zum Programmieren und Debuggen des RISC-V-Kerns des MAX78000. Direkt daneben befindet sich auf der Platine die Pads für J2, einem nicht bestückten 10-poligen SWD-Anschluss für den ARM-Kern. Auf der Unterseite der Platine befindet sich mit J3 ein 10-poliger Nadeladapter-Anschluss für die SWD-Schnittstelle von U2, der MCU für die DAPLink-Schnittstelle.

Steckbrettkompatible Stiftleisten

Dank der beiden SIL-Stiftleisten J4 und J8 an den Seiten der Platine kann man die MAX78000FTHR-Platine auf ein normales Steckbrett stecken. J4 und J8 sind auch mit den Peripherie-Erweiterungsplatinen von Adafruit Feather Wing kompatibel. Bild 4 zeigt, welche Signale auf diese Stiftleisten geführt werden. Nochmals: Einige dieser Signale werden mit der On-Board-Peripherie geteilt!

 
Connections on the Feather Wing
Bild 4: Belegung der Feather-Wing-Stiftleisten. Bild: MAX78000 FTHR.

Die meisten I/O-Pins dieser Stiftleisten werden direkt vom MAX78000 angesteuert. Einige aber sind mit dem PMIC MAX20303 verbunden, der hier auch als I/O-Expander dient. Obwohl Wert auf Kompatibilität zum Feather Wing Footprint gelegt wurde: Das ist ein inoffizieller Standard! Überprüfen Sie daher die benutzten Pins immer auf potentielle elektrische oder logischen Konflikte, bevor Sie zusätzliche Feather-Wing-Boards anschließen.

Die Pegel der I2C-Leitungen an den Pins 11 und 12 von J4 werden mit dem Pegel-Shifter U6 (einem MAX14595) von den bordeigenen 1,8 V auf 3,3 V gelegt. Durch Vertauschen des 0-Ω-Widerstands von Position R15 auf R20 auf der Unterseite der Platine (in der Nähe von Pin 12 des Anschlusses J4) kann man dies deaktivieren und erhält so 1,8-V-Pegel.

Micro-SD-Karten

J6 auf der Unterseite der Platine ist ein Standard-Micro-SD-Karten-Slot. Er ist über eine SPI-Schnittstelle mit dem MAX78000 verbunden. Seine Spannungsversorgung kann mit dem Ausgang MCP0 des MAX20303 und einem MOSFET geschaltet werden. Die SPI-Schnittstelle wird mit dem On-Board-QSPI-RAM geteilt.

Haben Sie eine Idee für ein interessantes KI-Projekt auf MAX78000-Basis? Dann interessieren Sie sich womöglich für den MAX78000 AI Design Contest von Maxim Integrated an (powered by Elektor).
 


MAX78000 AI Design Contest

Haben Sie eine Idee für ein interessantes KI-Projekt auf MAX78000-Basis? Dann interessieren Sie sich womöglich für den MAX78000 AI Design Contest von Maxim Integrated an (powered by Elektor).


 


RGB-LEDs

Das MAX78000FTHR-Board enthält drei RGB-LEDs. D1 steht für eigene Anwendungen zur Verfügung. Die rote, grüne und blaue LED sind an P2_0, P2_1 und P2_2 des MAX78000 angeschlossen. D2 ist mit den LEDx-Ausgängen des MAX20303 PMIC verbunden, die über I2C-Befehle auch als Ladestatusanzeige konfiguriert werden kann. Die DAPLink-Adapter-Status-LED D3 wird von der Programmier-/Debugging-Schnittstelle gesteuert und kann nicht vom Benutzer gesteuert werden.

Taster

Von den fünf Miniaturtastern auf der Platine sind zwei für eigene Anwendungen verfügbar: SW1 und SW2 sind über das Dual-Debounce-IC U11 (MAX6817) mit den MAX78000-Pins P0_2 und P1_7 verbunden. SW3 ist der Power-On/Off-Taster, der das Board ausschaltet, wenn der Taster länger als zwölf Sekunden gedrückt gehalten wird. Bei erneutem Drücken wird das Board sofort eingeschaltet. Dieser Taster ist mit dem PFN1-Pin des MAX20303 PMICs verbunden. SW4 ist der Reset-Taster des MAX78000. SW5 ermöglicht das Firmware-Update der MCU (DAPlink Debug and Programming Interface).

CMOS-VGA-Kamera
Dieser VGA-Sensor kann für die Bild- und Mustererkennung verwendet werden. U1 ist ein VGA-Kamera-Sensor OVM7692 von Omnivision. Er ist über sein PCIF direkt mit dem MAX78000 verbunden. Achtung: Nach dem Auspacken kann sich noch eine Schutzfolie auf dem Objektiv befinden. Zur Vermeidung von Enttäuschungen sollte man sie vor Verwendung abziehen.

Audio

Die beiden 3,5-mm-Stereo-Klinkenbuchsen J5 und J7 ermöglichen den Anschluss von stereo Line-In- bzw. Line-Out-Signalen. Die Signale werden an den Low-Power-Stereo-Audio-CODEC MAX9867 geleitet, der vom MAX78000 über I2C gesteuert wird, während die digitalen Audiodaten zwischen CODEC und Mikrocontroller über den I2S-Bus übertragen werden.

Dieser I2S-Bus wird mit MK1 geteilt, dem digitalen Mikrofon SPH0645LM4H-B von Knowles Acoustics. Um Konflikte auf dem I2S-Bus mit dem CODEC zu vermeiden, kann die Spannungsversorgung des Mikrofons über I2C vom PMIC-Ausgang L1OUT gesteuert werden. 

Externes SRAM

Bei U2 auf der Unterseite der Platine handelt es sich um das zusätzliches 1-Mb-QSPI-SRAM N01S830HAT22I von On Semiconductor. Seine serielle Schnittstelle für ist mit den Pins P0_5 bis P0_10 des MAX78000 verbunden. Einige dieser Pins werden mit dem SD-Karten-Slot geteilt.

Viel Leistung auf kleinem Raum

Mit dem MAX78000 Feather Board präsentiert Maxim Integrated eine Plattform für batteriebetriebene KI-Anwendungen, die klein bezüglich Abmessungen, aber groß in bezüglich Rechenleistung und Peripherie ist. Die Kompatibilität zu Adafruits Feather-Boards erlaubt den einfachen Anschluss anderer Hardware. Mit einem Preis von rund 25 € für das MAX78000FTHR ergibt sich eine preiswerte Entwicklungsplattform mit toller Peripherie, die selbst dann überlegenswert ist, wenn man ein leistungsfähiges Mikrocontroller-Board benötigt, ohne die KI-Funktionen zu nutzen.

Aber natürlich geht bei einem Mikrocontroller-Board nichts ohne Software. Daher wird der bald folgende Artikel von Mathias Claußen durch die Einrichtung von Entwicklungswerkzeugen und das Kompilieren von Anwendungen führen. Für den Anfang können Sie schon einmal mit der vorprogrammierten Schlüsselwort-Erkennung spielen, denn sie demonstriert eindrucksvoll, was dieses KI-Board kann!


Übersetzung: Dr. Thomas Scherer