Das Thema Sleep-Modus ist vielschichtig. Jeder Sleep-Modus lässt sich aber mit zwei Faktoren quantifizieren, nämlich mit dem Ausmaß der Energieersparnis und mit der Zeit, die die Rückkehr in den aktiven Modus dauert.
Am Beispiel des Menschen lassen sich drei verschiedene Arten, Energie zu sparen, anschaulich demonstrieren:
Sleep-Modus 1
Beim Sitzen auf einem Stuhl verbraucht der Mensch zwar mehr Energie als im Liegen, jedoch benötigt der Wechsel in den aktiven Modus, also das Aufstehen, nur sehr wenig Zeit. Dies entspricht dem Sleep-Modus 1, in dem nur der Core abgeschaltet wird, während der Rest der Plattform vollständig aktiv bleibt. Die MCU kann nach wie vor den Kommunikations-Port nutzen, um Daten zu erfassen und - mithilfe der eingebauten DMA-Funktion - an den Flash-Speicher zu übertragen.
Diese Betriebsart bringt zwar nur eine geringe Ersparnis, benötigt aber auch nur wenige Taktimpulse, um in den aktiven Modus zurückzukehren. Man nutzt diesen Modus für Anwendungen, die nach kurzen Reaktionszeiten verlangen und darauf angewiesen sind, dass Flash, RAM, analoge Funktionen und andere Peripherie aktiv bleiben. Abhängig von der Architektur der MCU-Plattform kann gegenüber dem aktiven Modus bis zu 50 Prozent Energie gespart werden.
Sleep-Modus 2
Schon etwas komplexer ist der Sleep-Modus 2. Während einerseits angestrebt wird, möglichst viele Teile der Plattform abzuschalten, muss die MCU andererseits nach wie vor über externe Ereignisse auf dem Laufenden bleiben und auch die Zeit mitzählen, um nach einer vorgegebenen Zeitspanne selbstständig aufzuwachen. Dieser Modus verlangt nach Flexibilität und ist daher auf verschiedene Features wie etwa eine Echtzeituhr angewiesen.
Dieser Sleep-Modus existiert in den verschiedensten Spielarten, angefangen bei einem mit extrem niedriger Frequenz (1 kHz) laufenden Timer, bis hin zu den ausgefeiltesten Echtzeituhren, die mit externem 32,768-kHz-Quarz getaktet sind und die BCD-Kalender, Subsekunden-Zählfunktionen, automatische Kalibrierfunktion usw. übernehmen - alles zusammen mit einer auf 400 nA abgesenkten Stromaufnahme. Ein solcher Sleep-Modus kann den RAM-Inhalt erhalten, um das erneute Starten der Applikation nach dem Aufwachen zu beschleunigen. Das Ziel besteht darin, RAM, RTC, DAC, Sensoren und UART mit einem sehr knappen Energiebudget nutzen zu können. Es ist heutzutage üblich, dass eine Lösung mit präziser Echtzeituhr und RAM-Erhalt weniger als 1 µA aufnimmt. Die Flexibilität liegt in der Möglichkeit, bei Bedarf Gebrauch von DAC, ADC, USART, Timern usw. zu machen.
Die Zeit zum Aufwecken aus einem solchen Sleep-Modus variiert sehr stark. Klar ist: je kürzer die Aufweckzeit, umso höher ist der Strom, der kurzzeitig der Batterie entnommen wird. Knopfzellen sind damit möglicherweise überfordert. Abhilfe lässt sich hier mit einer flexiblen Aufweckzeit schaffen, mit der es möglich ist, die Energieersparnis und die Höhe der Stromspitze an die jeweiligen Gegebenheiten anzupassen.
Die Intention beim Sleep-Modus 2 besteht darin, möglichst viele Schaltungsteile zu deaktivieren, gleichzeitig aber die Zeit weiterzuzählen und externe Ereignisse zu registrieren, die von der MCU möglicherweise verarbeitet werden müssen. Eine Kombination aus aktivem Modus und Sleep-Modus 2 kommt häufig in Brand- und Rauchmeldern, Computermäusen oder Tastaturen zum Einsatz.
Sleep-Modus 3
Bei dieser Betriebsart geht es darum, das Maximum aus den aktivierten Peripherie-Komponenten herauszuholen. Indem man den Großteil des Mikrocontrollers, einschließlich Taktgeber und RAM, deaktiviert, kann man die Stromaufnahme unter 100 nA drücken, womit man sich allerdings eine längere Aufweckzeit einhandelt, die zwischen einigen zehn Mikrosekunden und einigen Millisekunden betragen kann. Für das Aufwecken aus diesem Sleep-Modus werden meist ein Reset-Signal, ein Echtzeituhr-Wakeup (falls in dieser Betriebsart verfügbar) oder spezielle Wake-up-Anschlüsse vorgeschlagen. Dies hat weitestgehend Ähnlichkeit mit einem Power-on-Reset, doch können auch hier einige Kunstgriffe angewendet werden. Um einen völligen Reset zu vermeiden, verfügen einige MCUs über Backup-Register, die beim Wechsel in einen solchen ULP-Modus einige Registerinhalte abspeichern und bei der Rückkehr in den aktiven Modus diese Inhalte zurückspeichern können. Dies macht eine komplette System-Initialisierung überflüssig, wenn die MCU in den aktiven Modus zurückgekehrt ist, und verringert somit die Zeit, die im aktiven Modus verbracht werden muss.
Das Mitzählen der Zeit könnte aber auch für den Sleep-Modus 3 eine Option sein. Der Sleep-Modus 3 mit laufender Echtzeituhr und Backup-Register eignet sich ideal für Anwendungen wie zum Beispiel Gas- oder Wasserzähler. Ein einfacher Sleep-Modus 3 käme für all jene Applikationen in Frage, die nach der Produktion monatelang auf Lager liegen, bevor sie zum Einsatz gelangen.
Der perfekte Sleep-Modus lässt sich nur schwierig definieren, zumal alle Anwendungen ihre Besonderheiten haben. Eine intelligent konzipierte MCU muss deshalb so flexibel sein, dass alle drei beschriebenen Sleep-Modi (aber nicht nur diese) unterstützt werden. Eine energiesparende für niedrige Versorgungsspannungen ausgelegte MCU mit der Eignung für Vdd-Werte unter 1,8 V könnte beispielsweise gegenüber anderen Produkten im Vorteil sein. Während die meisten Ultra-Low-Power-MCUs bei Spannungen von 1,8 V oder 2 V funktionsfähig werden, hat ein Absenken von Vdd unter dieses Niveau Auswirkungen auf die Stromaufnahme in den Sleep-Modi 2 und 3 und kann deshalb von großem Nutzen sein.
Die Aufweckzeit
Schon bei der Beschreibung der drei Sleep-Modi kamen die unterschiedlichen Aufweckzeiten zum Ausdruck. Selbst wenn die Sleep-Modi eine Menge Features bieten, um ein systemseitiges Aufwecken entbehrlich zu machen - vollständig vermieden werden kann es nicht.
Je tiefer ein Mikrocontroller schläft, d. h. je mehr seiner Peripheriefunktionen deaktiviert sind, umso länger dauert das Aufwecken, und je mehr Gatter gleichzeitig wiedereingeschaltet werden müssen, umso mehr Strom wird der jeweiligen Stromversorgung entnommen. Bei batteriebetriebenen Anwendungen muss die beim Reaktivieren auftretende Stromspitze unbedingt berücksichtigt und beim Dimensionieren der Batterie einkalkuliert werden. Also geht es auch hier darum, den Anwendern die Wahl der richtigen Aufweckzeit zu überlassen, um das Auftreten von Stromspitzen zu vermeiden.
Fazit
Extrem sparsame MCU-Betriebsarten sind ebenso komplex wie die Anwendungen, die diese Modi erforderlich machen. Um die Leistungsaufnahme zu minimieren, kommt es darauf an, alle verfügbaren Modi zu nutzen und dabei das richtige Gleichgewicht zwischen Aufweckzeit, Energieersparnis und erforderlicher Performance zu finden. Um die Herausforderung zu bewältigen, die Leistungsaufnahme zu senken und dennoch für hohe Performance zu sorgen, muss eine Ultra-Low-Power-MCU in jeder Betriebsart, ob aktiver Betrieb oder Sleep-Modus, Intelligenz und Flexibilität bieten. Sicherlich spielt der Core hier eine Rolle, aber die Architektur und intelligente eingebettete Peripheriefunktionen machen den Unterschied zwischen den verfügbaren Plattformen aus. STMicroelectronics trägt mit seinen Ultra-Low-Power-Mikrocontrollern der STM32L-Serie genau dieser Problematik Rechnung.
Hakim Jaafar ist Ultra-Low-Power Marketing Manager bei STMicroelectronics.