Bildergalerie
Bild 1: Die Peripherieblöcke der EFM-32-Gecko-MCU wurden speziell für einen stromsparenden Betrieb entwickelt. Zum Beispiel braucht der 4x40-Segment-LCD-Controller nur 550 Nanoampere Strom.
Bild 2: Die blauen Pfeile zeigen die eingesparte Energie eines 32-Bit-Cores, der Tasks in weniger Zyklen abarbeitet als ein Acht-Bit-Core sowie im Aktivmodus und in den Sleep-Modi weniger Strom verbraucht.
Bild 3: Ein wesentliches Merkmal der EFM32-Gecko-MCU ist die Wahl der Energiemodi, die der Anwender treffen kann. Je weiter rechts in der Tabelle, desto geringer die Energieaufnahme, aber auch der verfügbare Funktionsumfang.
Bild 4: Energy Micros Peripherie-Reflexsystem ist eine Interconnect-Matrix, die einfache Aufgaben ohne Beteiligung des 32-Bit-Prozessor-Cores durchführt. Es kann zum Beispiel Datenwandlungen initiieren und die Ergebnisse speichern.

Eine Batterielebensdauer von 20 Jahren erscheint für Embedded-Systeme auf den ersten Blick als unrealistisch. Die meisten batteriebetriebenen Geräte des täglichen Gebrauchs halten zwischen den Ladezyklen gerade einmal einige Stunden durch. Die Hersteller, beispielsweise von Mobiltelefonen, beziffern ihre Standby- und Sprechzeiten folgerichtig in Stunden und nicht in Monaten oder Jahren, wobei ihre Nutzer in der Praxis selbst diese Werte selten ­erreichen. Batterielebensdauern in der Größenordnung von Jahren oder sogar Jahrzehnten sind aber in immer mehr Produktbereichen gewünscht, etwa bei Temperatursensoren und anderen Umgebungsüberwachungseinrichtungen sowie Sensoren in der Gebäudeautomatisierung, in Haushalten und kommerziellen Einrichtungen, Sicherheits- und medizintechnischen Systemen.

Alle diese Geräte müssen über lange Zeit ohne externe Energiezufuhr und ohne manuellen Eingriff arbeiten. Die Batterie auszutauschen wäre meist zu teuer oder zu umständlich, etwa weil das Gerät schwer zugänglich ist. Ihre Funktion setzt zudem eine kleine Batteriegröße voraus: Die Lebensdauer durch mehr Batteriekapazität zu erhöhen, ist meist nicht möglich. Also gilt es, eine maximale Lebensdauer aus der Energiequelle herauszuholen, die Anwendungen muss energiebewusst arbeiten. Die meisten gängigen Batterien lassen sich bestenfalls zehn Jahre lang lagern. Es sind jedoch auch Batteriezellen mit längerer Lebensdauer und Lagerzeiten von 20 bis 25 Jahren erhältlich. Allerdings begrenzt auch die Selbstentladung einer Batterie das tatsächlich verfügbare Energiebudget.

In Designs mit Mikrocontroller, die eine sehr lange Batterie­lebensdauer brauchen, muss sich die MCU die meiste Zeit im Deep-Sleep-Modus befinden. Eine kurze Betriebszeit im Aktivmodus ist aber noch nicht ausreichend, um eine lange Batterielebensdauer zu erzielen; jeder Aspekt des MCU-Betriebs muss so optimiert sein, dass das System ein Minimum an Leistung verbraucht.

Zeitintervall zwischen Wake-up und Shut-down minimieren

Energy Micros energiebewusste Gecko-MCU aus der EFM-32-Familie (Bild 1) basieren auf einem ARM Cortex-M3-Core mit 32 Bit. Dies klingt zunächst nicht nach geringem Energieverbrauch: Entwickler versuchen bei Low-Power-MCU-Ansätzen meist, die Gate-Zahl des Cores zu minimieren, indem sie verbesserte Versionen etablierter Acht-Bit-Cores verwenden. Allerdings reicht deren Verarbeitungsleistung kaum für die heutigen Anforderungen.

Ein moderner 32-Bit-Core kann eine effiziente Alternative darstellen: Mit sämtlichen Low-Power-Entwicklungstechniken, die Chipdesignern heute zur Verfügung stehen, setzt Energy Micro auf einen ARM Cortex-M3-Core, der Applikationscode aus dem Flash-Speicher abarbeitet und sich mit 180 Mikroampere pro Megahertz begnügt. Dieser Wert gilt nicht nur bei hoher Rechenleistung, er skaliert auch auf niedrige Taktraten. Bei der Feinjustierung einer Anwendung zur geringsten Energieaufnahme ist dies entscheidend. Der M3-Core verwendet die etablierte Thumb2-Befehlssatz-Architektur, die kompakten Code mit geringem Speicherbedarf hervorbringt und somit den Energiebedarf weiter senkt.

Die Rechenleistung des 32-Bit-Cores spielt eine entscheidende Rolle: Die MCU soll sich so selten und so kurz wie möglich im Aktivzustand befinden. Das beginnt bereits beim Aufwachen aus dem Deep-Sleep-Modus: Die MCU soll den vollen Betriebsmodus möglichst rasch erreichen und die erforderlichen Verarbeitungsschritte so schnell und sparsam wie möglich durchführen. Auch bei der Rückkehr in den Deep-Sleep-Modus ist Eile angesagt, um keine Energie zu verschwenden.

Um die maximale Batterielebensdauer zu erreichen, sollte der Applikationsentwickler in Ladungseinheiten denken, also dem Produkt aus Strom und Zeit (Bild 2). Der 32-Bit-Core optimiert beide Werte: er braucht wenig Strom und erledigt seine Verarbeitungsaufgaben schnell. Damit verlängert sich der Zeitanteil, den die MCU im Deep-Sleep-Modus verbringt. Für diese Betriebsart genügen Ströme ab 20 Nanoampere (niedrigster, kompletter Shut-Down-Modus) oder 900 Nanoampere (Power-on-Reset und Brown-out-Erkennung plus Echtzeit-Uhr sowie RAM-Datenerhalt und CPU-Zustandserhalt).

Umfassende Funktionen auf einem Chip

Integration ist wichtig beim Energiesparen: Dank der internen Peripherie brauchen Systeme mit Gecko-Mikrocontroller sehr wenig externe Komponenten. Der Core wird durch On-Chip-Flash-Speicher (bis 128 Kilobyte) und RAM (bis 16 Kilobyte) unterstützt; serielle Schnittstellen wie UART (Standard und Low-Power), USART und I²C sowie mehrere digitale I/O stehen an bis zu 90 Pins bereit; unterschiedliche Timer/Counter-Blöcke, die auch PWM-Ausgänge generieren sind vorhanden; Analogmodule enthalten A/D- und D/A-Wandler. Zur weiteren integrierten Hardware zählen ein LCD-Controller, der ein 4×40-Segment-Display ansteuert, sowie eine Beschleunigungsfunktion für die AES-Verschlüsselung.

Immer mehr Low-Power-Anwendungen, zum Beispiel Handheld-Terminals, brauchen Datenverschlüsselung. Der in die Gecko-MCU integrierte Block codiert und decodiert nach einem 128- oder 256-Bit-Schlüssel. Der Cortex-M3 könnte die AES-Funktion zwar vollständig in Software ausführen, die zusätzliche Hardware beschleunigt die Routinen aber auf das 20- bis 80-fache. Der Controller-Core kann damit für eine kürzere Zeit aktiv sein.

Sparsam in fünf Stufen

Sich nur auf die Aktiv- und Deep-Sleep-Modi der MCU zu beziehen wäre zu einfach. Fünf verschiedene Betriebsmodi ermöglichen dem Entwickler die präzise Anpassung der Verarbeitungsleistung an die Bedürfnisse seiner Applikation. Für eine bestimmte Aufgabe wird dabei nur ein Minimum an Strom aufgewendet (Bild 3). Die Peripherie kann komplett abgeschaltet werden, sobald sie nicht mehr benötigt wird.

Neben energieeffizienter Logik kommt es auch darauf an, dass jeder Mixed-Signal-Block trotz hoher Leistungsfähigkeit möglichst wenig Energie aufnimmt. Der Acht-Kanal-12-Bit-A/D-Wandler verbraucht nur 200 Mikroampere bei voller Auflösung und einem Megasample pro Sekunde Abtastrate. Einfachere Messungen, die nur eine Auflösung von sechs Bit und eine Abtastung mit einem Kilosample pro Sekunde benötigen, verbrauchen nur 500 Nanoampere. Der 12-Bit-D/A-Wandler verbraucht ebenfalls nur 200 Mikroampere bei 500 Kilosamples pro Sekunde. Andere Mixed-Signal-Funktionen, wie interne Spannungsregler und die Brown-out-Erkennung, arbeiten ähnlich effizient.

Autonome Peripherie umgeht die CPU

Als weitere Optimierung haben Energy Micros Entwickler neben den Standard-32-Bit-ARM-Architektur-Bussen, die alle Funktionsblöcke miteinander verbinden, einen zweiten Bus entwickelt: Der arbeitet als Interconnect-Matrix und heißt Peripherie-Reflexsystem. Mit dieser Matrix kann die Peripherie untereinander Daten austauschen, ohne den ARM-Core mit einzubeziehen (Bild 4). Der Core bleibt währenddessen im stromsparenden Tiefschlaf.

Eine typische Reflex-Anwendungen wäre ein Temperatursensor, der jede Minute Daten sammelt, diese aber nur einmal täglich berichten muss oder nur dann, wenn eine bestimmte Datenmenge erreicht ist. Der Baustein kann im Sleep-Modus verbleiben; ein Timer startet über das Peripherie-Reflexsystem jede Minute die A/D-Wandlung. Der DMA-Controller transportiert die Ergebnisse in das RAM, ohne die CPU zu starten. Nach längerer Zeit können die internen Timer den Haupt-Core aktivieren, das entsprechende Kommunikationsprotokoll aufrufen und die gesammelten Messungen hochladen.

Voll im Bilde

Das Systemdesign mit EFM-32-MCU wird durch eine Entwicklungsplattform unterstützt, mit der sich die durch den Applikationscode verbrauchte Energie genau messen lässt. Die Stromaufnahme der MCU wird dabei abgetastet und durch den Advanced Energy Monitor integriert. Damit ergibt sich ein Profil der aufgenommenen (Batterie-)Ladung, womit Entwickler ihren Code hinsichtlich unterschiedlichster Stromsparmöglichkeiten untersuchen und optimieren können: Sie sehen sofort, welche Auswirkung eine Änderung hat, und spüren die Energiefresser auf. Damit wird die Entwicklung langlebiger Produkte zur systematischen Optimierungsaufgabe. 20 Jahre aus einer Batterie – dieses engagierte Ziel rückt in greifbare Nähe.