Sie sind hier: HomeRubrikenHalbleiterMikrocontroller

Energiemanagement bei Mikrocontrollern: Low-Power-Optionen von MCUs optimal nutzen

Embedded Systeme müssen heute mit nur einer Akkuladung möglichst lange laufen. Hier gilt es, die internen Low-Power-Modi von Mikrocontrollern optimal zu nutzen. Ein Vergleich der Low-Power-Optionen von MCUs der Hersteller Microchip, STMicroelectronics und Texas Instruments.

Für tragbare elektronische Geräte ist deren Betriebsdauer mit einer Akkuladung fast so wichtig wie die eigentlichen Funktionen, die das Gerät bietet. Denn wenn der Akku leer ist, spielt es keine Rolle, mit welch tollen Leistungen das Gerät aufwarten könnte. Moderne Mikrocontroller (MCUs) mit Plattformen, die speziell für den Betrieb mit niedriger Leistungsaufnahme ausgelegt sind, bieten hier gute Lösungen. Zudem stellen sie viele Energiesparmodi zur Verfügung wie Schlafmodus, Ruhezustand etc. und Funktionen wie dedizierte Pins, die automatisch das System auf Backup-Batteriebetrieb umschalten, wenn der Strom abgeschaltet wird. Und schließlich kommt zu den Stromsparmaßnahmen noch die Kunst der Softwareentwicklung mit Tools wie der »IAR Embedded Workbench«

hinzu, die den Stromverbrauch für die Ausführung jeder Codezeile anzeigen kann. Indem sie das Systemverhalten in Echtzeit überprüfen, können Entwickler das System auf Basis dieser Informationen auf die maximale Effizienz im Betrieb hin abstimmen, beispielsweise die Taktfrequenz ändern oder das System in einen niedrigeren Energiemodus versetzen.

Sollten noch irgendwelche Zweifel an der Bedeutung der Energie­effizienz in heutigen Embedded Systemen bestehen, reicht ein Blick auf die letzten von der JEDEC veröffentlichten DRAM-Standards: Nicht nur hat die Organisation mit LPDDR3 eine neue Version seines Standards für tragbare Elektronik publiziert, der neueste allgemeine DRAM-Standard DDR4 umfasst eine Vielzahl von Features für einen reduzierten Stromverbrauch wie z.B. eine Pseudo-Open-Drain-Architektur. Egal, ob ein Mikrocontroller in einem Smartphone oder einem Automobil sitzt – eines ist klar: Die Anforderungen der Kunden erfüllt er nur, wenn er einen energieeffizienten Betrieb bietet.

Um den Stromverbrauch zu optimieren, müssen sich Entwickler auf zwei Hauptziele konzentrieren: eine möglichst kurze Zeitdauer im aktiven Modus und eine minimale Stromaufnahme im inaktiven Modus. Vor nicht allzu langer Zeit verfügten Mikrocontroller nur über einen einzigen Standby-Modus, heute bieten die Bausteine hingegen eine Reihe von Optionen, den aktiven Modus zu vermeiden und nur dann zuzulassen, wenn es absolut notwendig ist.

»PICs« sparen Strom

Bild 1: Im Halbschlafmodus (Doze Mode) kann die CPU des  »PIC24F-J128GA310« (hier auf dem Plug-in-Modul für das  »Explorer 16«-Entwicklungsboard) langsamer laufen als die Peripherie Bildquelle: © Digi Key
Bild 1: Im Halbschlafmodus (Doze Mode) kann die CPU des »PIC24F-J128GA310« (hier auf dem Plug-in-Modul für das »Explorer 16«-Entwicklungsboard) langsamer laufen als die Peripherie

So bietet die Mikrocontroller­familie »PIC24FJ128GA310« von Microchip (Bild 1) beispielsweise eine ganze Reihe von Energieverwaltungsoptionen:

  • VBAT ermöglicht dem Baustein den Übergang zu einer Backup-Batterie für den niedrigsten Stromverbrauch mit RTCC (Real Time Calendar/Clock, Echtzeituhr mit Kalender),
  • »Tiefschlaf« (Deep Sleep Mode) für fast vollständig leistungslosen Betrieb mit der Fähigkeit, durch einen externen Trigger geweckt zu werden, und extrem geringer Leistungsaufnahme (bei 3,3 V typisch WDT: 270 nA, RTCC: 400 nA bei 32 kHz, Tiefschlaf-Strom: 40 nA),
  • Schlaf- und Leerlaufmodi, die Peripheriegeräte und/oder Kerne für erhebliche Leistungsreduzierung und schnelles Aufwachen selektiv abschalten,
  • Halbschlafmodus (Doze Mode), der die CPU mit einer niedrigeren Taktfrequenz als die Peripherie laufen lassen kann,
  • alternative Taktmodi ermöglichen On-the-Fly-Wechsel zu einer niedrigeren Taktrate für die selektive Leistungsabsenkung.

Schlaf- und Leerlaufmodi ermöglichen es Entwicklern, Peripherieeinheiten und/oder den Controllerkern herunterzufahren, um den Stromverbrauch zu reduzieren, während die Fähigkeit zum schnellen Wiederhochfahren (Wake-up) erhalten bleibt. Im »Retention Sleep«-Modus werden Schlüsselschaltungen von einem separaten Niederspannungsregler versorgt. Der VBAT-Modus schaltet das System auf die Backup-Batterie um, falls VDD entfernt wird, und minimiert damit den Stromverbrauch mit RTCC. Tiefschlaf ohne RTCC bietet fast vollständiges Abschalten und erhält gleichzeitig die Softwaresteuerung, damit sich der Baustein über externe Trigger wieder hochfahren lässt. Nach Angaben des Unternehmens läuft der Controller in diesem Modus mit nur 40 nA (bei typisch 3,3 V), im Vergleich zu 400 nA bei 32 kHz für den RTCC-Modus.

Die Taktfrequenz zu modifizieren, kann viel Energie einsparen. So kann der Anwender im Halbschlafmodus beispielsweise die Leistung reduzieren, indem er die CPU mit einer niedrigeren Taktrate laufen lässt als die Peripherie. Zudem bietet der Mikrocontroller die Option, die Taktfrequenz im laufenden Betrieb herunterzusetzen, und erlaubt so, die Leistungsreduzierung fein abzustimmen.

Genügsame »STM8«-Controller

Bild 2: Damit der Anwender eine optimale Balance zwischen Effizienz, Leistung und Anlaufzeit finden kann, stellt die »STM8L«-Mikrocontrollerfamilie vier Low-Power-Modi zur Verfügung Bildquelle: © Digi Key
Bild 2: Damit der Anwender eine optimale Balance zwischen Effizienz, Leistung und Anlaufzeit finden kann, stellt die »STM8L«-Mikrocontrollerfamilie vier Low-Power-Modi zur Verfügung

Vier Low-Power-Modi stellt der Mikrocontroller »STM8L152C6T6« von STMicroelectronics (Bild 2) zur Verfügung, damit der Anwender eine optimale Balance zwischen Effizienz, Leistung und Anlaufzeit finden kann (Bild 3).

Bild 3: Die Low-Power-Modi der »STM8L«-Mikrocontrollerfamilie im Vergleich Bildquelle: © Digi Key
Bild 3: Die Low-Power-Modi der »STM8L«-Mikrocontrollerfamilie im Vergleich

Im Wait-Modus wird der CPU-Takt angehalten, während die Peripherie weiter­arbeitet. Der Chip kann diesen Wartezustand über einen internen oder externen Interrupt, ein Trigger-Ereignis oder einen Reset verlassen. Im Low-Power-Run-Modus führt die CPU bestimmte Funktionen zusammen mit ausgewählten Peripherieeinheiten aus. Zum Beispiel lassen sich Flash und Daten-EEPROM anhalten, während das System Code aus dem RAM mit niedriger Frequenz ausführt. Per Software kann der Anwender das System in und aus dem Low-Power-Run-Modus steuern. Auch über einen Reset kann das System den Modus verlassen, nicht aber durch Interrupts.

In vielen Embedded Systemen verschwenden Mikrocontroller Strom, weil sie einen Großteil der Laufzeit auf ein Ereignis warten. Hier bietet der STM8L152C6T6 einen Wartemodus mit niedriger Leistungsaufnahme (Low Power Wait), in dem der CPU-Takt angehalten wird. Ein Reset oder ein internes oder externes Ereignis, ausgelöst beispielsweise durch Timer oder I/O-Ereignisse, bringt das System wieder in den Low-Power-Run-Modus.

Der Aktiv-Halt-Modus (Active Halt) geht einen Schritt weiter und hält sowohl den Taktgeber für die CPU als auch die für alle Peripheriegeräte an – mit Ausnahme der RTC. Externe Interrupts, RTC-Interrupts oder ein Reset sind in der Lage, das System wieder aus dem Aktiv-Halt-Modus aufzuwecken. Der Halt-Modus (Halt) schließlich stoppt die Taktgeber für alle Peripheriegeräte und die CPU. Dabei bleibt der Baustein aber eingeschaltet, um die Daten im RAM zu halten. Ein externer Interrupt oder Reset weckt den Controller wieder auf. Ausgewählte Peripherieeinheiten lassen sich ebenfalls aus dem Haltemodus heraus aufwecken. Zudem lässt sich der Baustein so konfigurieren, dass er im Wait-Modus ohne die interne Referenz auskommt, was durch das Abschalten der internen Referenzspannung zusätzlich Energie einspart.

»MSP430« mit FRAM

Bild 4: Einige Derivate der Low-Power-Architektur »MSP430« verfügen über besonders stromsparenden FRAM-Speicher Bildquelle: © Digi Key
Bild 4: Einige Derivate der Low-Power-Architektur »MSP430« verfügen über besonders stromsparenden FRAM-Speicher

Sieben Low-Power-Modi bietet der 16-Bit-Mikrocontroller »MSP430FR5739« von Texas Instruments (Bild 4) für Embedded Systeme in portablen Anwendungen. Auf der obersten Ebene deaktiviert der Low-Power-Modus 0 (LPM0) die CPU und den Master-Takt, während alle Daten erhalten bleiben. Die Takte der Peripherieeinheiten bleiben aktiv, und der Benutzer kann den Status des Submaster-Takts wählen. Am oberen Ende der Stromeinsparung erhält der Low-Power-Modus 4.5 (LPM4.5) den Status der I/O-Pads, aber nicht die Daten, und deaktiviert außerdem den internen Regler. Im Rahmen seines Energiespardesigns integriert der Mikrocontroller auch ferroelektrisches RAM (FRAM) für einen nichtflüchtigen Speicher mit niedriger Stromaufnahme.

Power-DebuggingEs spielt keine Rolle, wie viele Energiesparmodi ein Mikrocontroller hat, wenn diese nicht sinnvoll und korrekt angewendet werden. Hier kommen Power-Debugging-Tools wie »I-Jet« von IAR Software Systems ins Spiel. Dieses Tool erfasst laufend den Stromverbrauch des Systems im Betrieb, und die Embedded-Workbench-Software von IAR korreliert diese Stromverbrauchsdaten mit den Abläufen im System.

Bild 5: Im Timeline-Fenster korreliert das »I-Jet«-Tool den Stromverbrauch mit Funktionsaufrufen und anderen Programmteilen Bildquelle: © Digi Key
Bild 5: Im Timeline-Fenster korreliert das »I-Jet«-Tool den Stromverbrauch mit Funktionsaufrufen und anderen Programmteilen

In einer perfekten Welt könnte ein Entwickler eine Stromspitze direkt mit einer Codezeile in Verbindung bringen. Die Realität ist jedoch, dass die Systemkapazitäten den Verbrauch zeitlich verteilen, sodass ein derart diskretes Vorgehen unmöglich ist. Daher ist die beste Wahl, den Stromverbrauch mit den Funktionsaufrufen in Beziehung zu bringen (Bild 5). Dann kann der Anwender auf eine Leistungsspitze klicken und diese bis zum Code zurückverfolgen.

Mithilfe dieser tiefen Einblicke ins System kann der Entwickler Peripherieeinheiten identifizieren, die unnötig Strom verbrauchen. Zur Abhilfe kann er vielleicht Taktfrequenzen anpassen oder das System in einen Stromsparmodus versetzen, während es sich im Leerlauf befindet, und wieder aufwecken, wenn es eine Antwort bekommt. Auf diese Weise können Entwickler die Vorteile der Powermanagement-Optionen für einen optimalen Betrieb der Hardware nutzen.

Über den Autor:

Rich Miron ist bei  Digi-Key im Technical Content Team