Hallo,
um die Stromaufnahme im sleep mode zu reduzieren soll der ADC und der
DMA gestoppt werden bevor der stm32 in den sleep mode versetzt wird.
Nach Wakeup aus dem sleep mode, wie sieht die korrekte startsequenz für
den ADC aus ?
Ist nach dem Wakeup die ADC calibration neu durchzuführen ?
Code um den ADC und DMA zu stoppen vor dem sleepmode
1
// Prepare for Sleep: Stop ADC and DMA Peripherie (and there Clocks)
Das hängt wohl grundsätzlich davon ab, welcher Sleepmode überhaupt
genutzt werden soll. Je tiefer, desto mehr wird abgeschaltet und muß
dann natürlich auch wieder wie nach reset bzw. Programmstart
initialisiert werden. Da gibt es schöne Abschnitte im Manual, was
abgeschaltet wird und auch vor allem, was das teil überhaupt wieder
aufwecken kann.
Hallo Lutz, Hallo Manfred,
ich muss dazu sagen dass mein Code derzeit schon funktioniert. Nur bin
ich mir nicht sicher ob die Kalibrierung des ADC beim Stoppen des ADC
oder im Sleepmode "flötengeht" und daher neu durchgeführt werden muss.
Das Kalibrieren kostet Zeit und würde einen Delay zwischen Aufwecken und
erster ADC-Messung ergeben was unerwünscht wäre.
-----
Beim STM32 gibt es die drei Modi Sleep, Standby und Stop Mode.
Wie im Code sichtbar wird "__WFI()" verwendet, damit gelangt der stm32
NUR in den Sleep Mode (kein Standby und kein Stop Mode). Im Sleep Mode
wird die Peripherie nicht abgeschaltet und kein Wert im RAM geht
verloren (was hier wichtig ist). Ebenso ist beim Aufwecken aus dem Sleep
die Peripherie und der Controller mit geringem Delay wieder am Arbeiten
(was mir auch wichtig ist).
Ein laufender ADC oder DMA Interrupt würde den stm32 sofort wieder
aufwecken damit muss ich den ADC zuerst mal stoppen. Ohne Stoppen des
ADC läuft der ADC im Sleep Mode weiter denn im Sleep bleibt ja nur der
ARM CORE stehen - um den Strom in dieser Zeit zu reduzieren wird der ADC
ganz abgeschaltet.
Grüße,
Lukas
Moin,
ich hab jetzt selbst den sleep noch nicht verwendet. Aber warum machst
du die Interrupts nicht aus fr DMA und ADC, und lässt die laufen?
Wenn du dem ADC den Clock klaust dann würde ich behaupten musst du ihn
neu kalibrieren, was steht dazum im Datenblatt also zu Clock an aus am
ADC?
MfG
Tec
Hi,
Lukas Simma schrieb:> ich muss dazu sagen dass mein Code derzeit schon funktioniert. Nur bin> ich mir nicht sicher ob die Kalibrierung des ADC beim Stoppen des ADC> oder im Sleepmode "flötengeht" und daher neu durchgeführt werden muss.
Beim Sleep oder im StopModus muss der ADC nicht neu kalibriert werden!
Festhalten, das steht sogar im Datenblatt.
> Das Kalibrieren kostet Zeit und würde einen Delay zwischen Aufwecken und> erster ADC-Messung ergeben was unerwünscht wäre.
Naja, das geht ziemlich fix, bei fADC = 14Mhz gerade mal 5,9µs !!!
> Beim STM32 gibt es die drei Modi Sleep, Standby und Stop Mode.
Wie schon oben erwähnt, sind im Stop und Sleep Mode keine Rekalibrierung
notwendig(getestet).
Nach StandBy schon(ungetestet) meine ich muss ein neukalibrierung
erfolgen, da das wie ein RESET ist.
GRUß