Für ein Projekt im Maschinenumfeld sollen mehrere IoT-Devices mit Bluetooth Anbindung eingesetzt werden. Als Anforderung steht ein Strombedarf von einigen uA. Der verwendete Mikrocontroller MKW40Z (mit Bluetooth) bietet hierfür den speziellen Betriebsmode VLLS3 (Very Low Leakage Stop Mode) an. Dieser Mode schaltet dabei alle Peripherie Module und auch den Core aus. Einzig das RAM bleibt erhalten. Nach dem Aufwachen aus dem VLLS3 wird das Programm fortgeführt. Das Aufwachen erfolgt über den RTC. Die Anwendung läuft von einer Primärzelle und soll als weitere Anforderung eine Laufzeit von mehr als einem Jahr erreichen.
Die Werte des Datenblattes für den VLLS3 Mode ergeben folgende Werte: (Der MKW40Z wird im DC/DC Buck mode betrieben)
Das Kinetis KSDK_1.3.0 Demoprogramm power_manager_hal_demo von Freescale liefert einen einfachen Einstieg in die VLLS3 Thematik. Das Demoprogramm tritt in den VLLS3 State ein, unglücklicherweise erfolgt jedoch das Aufwachen über die normale Reset Abfolge. Das heisst: Initialisieren von RAM, Stack Pointer SP, Variablen, etc. Dieses Verhalten ist alles andere als gewünscht, da der erhaltene RAM Speicher gar nicht genutzt wird und dadurch Zeit und Energie verloren geht.
Der gewünscht Programmablauf wäre jedoch:
Aus dem Datenblatt kann entnommen werden, dass beim einem Aufwachen aus dem VLLS3 Mode das Bit RCM_SRS[WAKEUP] gesetzt ist. Mit folgenden Schritten lässt sich das gewünschte Verhalten erreichen:
Vor dem VLLS3 Mode:
Nach dem Aufwachen:
Konkret sieht der Programmfluss nun so aus:
Um die ca. 2 uA mit +/- 5 % Genauigkeit zu messen, wird auf folgende Schaltung zurückgegriffen:
Somit entspricht 0.1 V gemesse Spannung einem Strom von 1 uA. Der Messbereich wird von der Diode begrenzt, was bei einer BAV99L maximal 0.4 V sind. Durch die Diode fliesst der Strom nur, wenn der uC im Run Mode läuft.
VBattery = 2.5 V
Gemessene Spannung Vpeak: 267mV, Vlow: 138mV ->Vmittel: 202mV -> I = 2 uA, was genau den Erwartungen entspricht.
Der VLLS3 Mode ist für Low Power Designs unverzichtbar. Da der Core abgeschaltet wird, ist das «Restoren» etwas aufwendiger. Es sind einige Zeilen Assembler Anweisungen für die Wiederinitialisierung zu schreiben.
Unglücklicherweise ist nach dem VLLS3 Mode das Debugging nicht immer möglich.
Unter IAR und mit JLink ist es möglich, wenn im unter settings\*.jlink folgenede anweisung hinzugefügt wird:
[CPU]
LowPowerHandlingMode = 1
Achtung: Über Pullup Widerstände von Vbat(3V) auf Vcc (1.8V) kann ein Strom über die interne Schutzdiode fliessen. Dieser Strom verhindert ein Regeln von Vcc(1.8V) und Vcc(1.4V) und damit ist ein ordnungsgemässes Rückkehren aus dem VLLS3 Mode nicht mehr garantiert.
Schreiben Sie einen Kommentar