en / de
Expertisen
Methoden
Dienstleistungen
Referenzen
Jobs & Karriere
Firma
Technologie-Trends TechCast WebCast TechBlog News Events Academy

SmartConnector: Low Power Anbindung im IoT Umfeld (VLLS3 Restore auf einem ARM Cortex KW40Z)

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.

Low Power Berechnungen

Die Werte des Datenblattes für den VLLS3 Mode ergeben folgende Werte: (Der MKW40Z wird im DC/DC Buck mode betrieben)

Tabelle
Es wird somit ein Strom von 2.06 uA erwartet.
Umrechnung von Strom:-
3V auf 2.5V : Ix * 3V/2.5V
1.8V auf 2.5V: Ix * (1.8V /2.5V) *(1/n)

SW

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.

Fluss_Demo

Bild 1: Programm flow in power_manager_hal_demo für VLLS3 mit RTC wakeup

Der gewünscht Programmablauf wäre jedoch:

Fluss_Soll

Bild 2: Gewünschter Programm flow mit VLLS3

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:

  • Speichern der CPU Register auf dem Stack
  • PC+XX (PC des weiterführenden des Programms) auf dem Stack speichern
  • Stack Pointer absolut in RAM speichern

Nach dem Aufwachen:

  • Unterscheidung ob POR Reset oder ein Wakeup
  • SP aus absoluter RAM Adresse lesen
  • PC zurückladen und setzen
  • Register zurückladen
  • HW neu initialisieren

Konkret sieht der Programmfluss nun so aus:

BildIst

Bild 3: Konkret Programmfluss mit VLLS3

Strommessung

Um die ca. 2 uA mit +/- 5 % Genauigkeit zu messen, wird auf folgende Schaltung zurückgegriffen:

Schema

Bild 4: Messschaltung

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.

Messung:

VBattery = 2.5 V

Gemessene Spannung Vpeak: 267mV, Vlow: 138mV ->Vmittel: 202mV -> I = 2 uA, was genau den Erwartungen entspricht.

 

058

Bild 4: Strom KO Plot, bei einem VLLS3 Wakeup Intervall von 10 s

Fazit

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

Bemerkung

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.

 

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Newsletter - aktuelle Angebote, exklusive Tipps und spannende Neuigkeiten

 Jetzt anmelden
NACH OBEN
Zur Webcast Übersicht