Mikrocontroller Neue Cortex-M0+-Familie von Atmel

Unter der Bezeichnung »SAM D20« hat Atmel eine neue Mikrocontroller-Familie herausgebracht, die sich für zahlreiche Anwendungen eignet. Erster Großkunde für die MCUs mit ARMs kleinstem Core ist Bosch Sensortec, das den Chip in seinen 9-Achsen-Orientierungssensor BNO055 eindesignt hat.

Der SAMD, den es in drei Unterfamilien D20J, D20G und D20E geben wird (64/48/32 Pins, siehe Tabelle) macht den Eindruck, als habe Atmel sich bei einigen guten Ideen von Wettbewerbern inspirieren lassen, auch wenn die Basistechnologie schon lange im eigenen Haus verfügbar ist - dazu später mehr.

Der Cortex-M0+ belegt in seiner Basiskonfiguration 12.000 Gatter und nimmt bei Fertigung in einem 90-nm-LP-Prozess rund 11 µW/MHz auf. Atmel hat ihm allerdings einige der optionalen Zusätze spendiert, als da wären: Nested-Interrupt-Controller mit 32 Interrupts (3.000 Zusatzgatter), System-Timer (SysTick, 1.000 Gatter), Single-Wire-Debugging mit 2 Watch- und 4 Breakpoints (7.500 Gatter), separater Port neben AHB-Bus für I/O-Zugriffe in einem Taktzyklus, Interrupt-Vektor-Tabellenverschiebung (keine Interrupt-Blockade bei Flash-Zugriff, 1.000 Gatter) und schneller 32-bit-Multiplizierer (1 Taktzyklus, 3.000 Gatter).In unserer detaillierten Analyse des Cortex-M0+ sind u.a. alle Konfigurationsoptionen aufgeführt.

In Summe kommt der von Atmel verwendete Cortex-M0+ auf 27.500 Gatter und eine geschätzte Leistungsaufnahme von 17 µW/MHz in einem 90-nm-LP-Prozess. Über die Daten der MCU hinsichtlich Energiesparmodi und Leistungsaufnahme gibt es in der ersten veröffentlichten Datenblattversion leider keine Angaben – es wäre jedoch verwunderlich, wenn im aktiven Modus angesichts der Pheripheriebeschreibung mehr als 150 µA/MHz aufgenommen würden. Die Rechenleistung beträgt 2,14 Coremark/MHz oder 0,93 DMIPS/MHz.

Die maximale Taktfrequenz des Cortex-M0+ beträgt 48 MHz (mit einer DFLL), es gibt noch weitere Oszillatoren für 32,768 kHz und 8 MHz, zudem einen Eingang für einen Quarz-Oszillator im Bereich von 0,4 bis 32 MHz.

Die Speicheraussattung beträgt 16, 32, 64, 128 oder 256 KB Flash (256 KB nur beim D20J), SRAM ist in Größen von 2, 4, 8, 16 oder 32 KB verfügbar. Wenn man sich das Blockschaltbild (Bild 1) ansieht, fallen folgende Dinge ins Auge: Zum einen gibt es eine Trennung zwischen der Hochgeschwindigeits-Schaltmatrix (AHB-Domäne), die zeitgleiche Zugriffe der beiden Master Cortex-M0+ und Device-Service-Einheit (DSU, wichtig für Debugging) auf die Slaves Flash, SRAM und AHB/ABP-Brücken erlaubt, und der Peripherie, die an der langsameren, aber enerspiesparenden ABP-Domäne hängt. Um Kollisionen auf dem Bus zu minimieren, wurden 3 Brücken mit separaten Bussen implementiert – die Timer, Taktversorgung u.s.w. wurden damit komplett von den Peripherie-Elementen entkoppelt.

Das sogenannte Event-System (EVSYS) tauchte vom Prinzip her erstmals schon in Atmels 8-bit-MCUs vom Typ XMEGA auf. In der jetzt auf dem Cortex-M3-Chip implementierten Komplexität ließ sich Atmel allerdings mehr oder weniger offensichtlich von Energy Micros Periphal-Flex-System inspirieren, auch wenn es sich technologisch um eine deutliche Weiterentwicklung des hauseigenen Systems und nicht um eine Kopie der Norweger handelt. Der Hauptzuweck besteht darin, eine Kommunikation einzelner Pheripherie-Elemente unabhängig vom Core und ohne Belastung des Busses oder RAMs vornehmen zu können (Bild 2). Sie können vom Anwender als Event-Erzeuger oder Event-Empfänger konfiguriert werden (es gibt 8 Kanäle, 59 potentuielle Event-Erzeuger und 14 Event-Empfänger), wobei die CPU sogar in Spleep-Modi aufgeweckt werden kann, wenn die Taktversorgung für den EVSYS-Kanal und den EVSYS-Bus abgeschaltet wurde.

Ein zweites interessantes Element ist SERCOM (Serial Communication Interface), ein Block, den man sowohl für I2C, SPI als auch USART (voll- oder halbduplex) konfigurieren kann, je nachdem welches Protokoll man haben möchte. SERCOM besteht grob gesagt aus einem Sender, einem Empfänger, einem Baudraten-Generator und einer Adressenprüfung. Der Block kann in allen Energiesparmodi autonomy von der CPU betrieben werden. Auf dem Chip gibt es 4 (D20E) oder 6 dieser Blöcke.

Das GCLK-Modul (Generische Taktsteuerung) unterstützt die sogeannte SleepWalking-Funktion. Im Sleep-Modus, in dem die Taktversorgung gestoppt ist, kann ein Peripherieelement, das zur Ausführung eines Prozesses eine Taktversorgung benötigt, diese von dem GLCK anfordern. Dieser nimmt die Anforderung entgegen und untersucht, welcher Taktgenerator involviert ist und aufgeweckt werden muss.

Ansonsten gibt es noch bis zu acht 16-bit-Timer/Zähler, die als 8-bit- oder 16-bit-Element mit Compare/Capture-Kanälen konfiguriert werden können. Durch Zuammenschalten von zwei Timer/Zähler-Elementen kann jeweils ein 32-bit-Element erzeugt werden.

Eine 32-bit-Echtzeituhr, ein Watchdog-Timer, ein Prüfsummengenerator (CRC-32), bis zu 52 programmierbare I/O-Pins, zwei Analog-Komparatoren, ein 10-bit-D/A-Wandler mit maximal 350 KSamples/s und ein 12-bit-A/D-Wandler mit 20 Kanälen und einer maximalen Abtastrate von ebenso 350 KSamples/s vervollständigt die Peripherie. Der A/D-Wandler beinhaltet einen Verstärker (0,5 bis 16fache Verstärkung), eine automatische Offset- und Verstärkungsfehler-Kompensation und unterstützt auch Überabtastung. Diese geschieht durch eine Abtastratenkonvertierung von der frei wählbaren Quellabtastfrequenz auf die gewünschte Zielabtastfrequenz. Dieses geschieht durch eine Tiefpassfilterung mit anschließender Dezimierung der Abtaststellen.

Last but not least gibt es einen Peripherie-Touch-Controller (PTC), der Signale von einem kapazitiven Touch-Sensor and einem kapazitiven Anaäherungssensor verarbeiten kann. Jan ach Unterfamilie kann eine unterschiedliche Anzahl Zeilen und Spalten verarbeitet werden. Er kann zusammen mit Atmels QTouch-Firmware-Bibliothek und dem QTouch-Composer-Tool eingesetzt werden.

Die kleinste Variante (D20E, 16 KB Flash-Speicher, QFN) soll bei Abnahme von mindestens 1.000 Stück 1,02 US-Dollar kosten.

 SAM D20J
SAM D20G
 SAM D20E
CPU/max. TaktfrequenzARM Cortex-M0+/48 MHzARM Cortex-M0+/48 MHzARM Cortex-M0+/48 MHz
Flash-Speicher 16-256 KB
 16-256 KB
 16-128 KB
SRAM2-32 KB2-32 KB2-16 KB
Timer/Zähler (TC)866
Oszillatoren48 MHz DFLL, 400 KHz-32 MHz Quarz extern, 8 MHz intern, 32 KHz Ultra-Low-Power intern, 32,768 KHz Hochpräzision intern, 32,768 KHz Quarz extern
Kanäle mit Wellenform-Generierung pro TC222
SERCOM664
Kanäle Event-System888
Watchdog-Timer111
Kanäle A/D-Wandler201410
Komparatoren analog222
D/A-Wandler111
Echtzeituhr111
Vergleichswerte Echtzeituhr1x32 bit oder 2x16 bit1x32 bit oder 2x16 bit1x32 bit oder 2x16 bit
GPIOs523826
Externe Interrupts161616
PTC X x Y16x1612x1010x6
Anzahl Pins644832
GehäuseQFN,TQFPQFN,TQFPQFN,TQFP