Forum: Mikrocontroller und Digitale Elektronik STM32F072 power consumption


von Mehmet K. (mkmk)


Angehängte Dateien:

Lesenswert?

Servus allerseits

Es handelt sich bei dem Projekt um einen USB-Dongle, der periodisch die 
Umgebungstemperatur misst, sie abspeichert und dann die Daten via USB 
dem PC zur Verfügung stellt.
Aus Kostengründen habe ich den STM32F072 (und nicht den STM32L072) 
eingesetzt.
Gespeist wird das Ganze mit einer Lithium Zelle (CR2032).

Soweit die Theorie.
In der Praxis funktioniert auch alles wie gewuencht; nur was den 
Stromverbrauch anbelangt, habe ich eine beachtliche Diskrepanz zwischen 
dem was ich messe, und dem, was ich eigentlich messen sollte.

Gemaess dem Datenblatt (Table 31) sollte die MCU im standby-mode so um 
die 2uA ziehen.
Tatsache ist aber, dass ich bei 20uA liege.
Zwar würden mir die 20uA genügen, aber es würde mich schon 
interessieren, wo der Fehler liegt.
1
PORTA, PORTB, PORTC und PORTF enable
2
Alle Ports auf Low-Speed
3
Alle Ports pull-up
4
Alle Ports auf analog
5
StandbyMode
Auf der Platine befindet sich z.Zt.:
- 2 externe pull-up Widerstaende zu je 1M
- die MCU mit dem 32kHz Quarz (der aber nicht aktiviert wird)

Die Messung:
- keine Battery
- 3.3V über einen 100R Widerstand
- der Debugger ist nicht eingesteckt

Entweder interpretiere ich das Datenblatt nicht korrekt, oder bei meinem 
Setup uebersehe ich etwas.
Beiliegend das abgespeckte Schema.
Waere nett, wenn jemand mir einen Fingerzeig geben könnte.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Erde Dich mal, und dann fahre mit dem Finger ueber die Portpins waehrend 
Du die Stromaufnahme beobachtest. Wenn sich die Stromaufnahme 
aendert,gibt es noch Verbesserungsmoeglichkeiten mit dem Portpins

von Mehmet K. (mkmk)


Lesenswert?

Hatte noch nie was von dieser Messmethode gehört :)
Aenderungen gab es nur max. +3uA.

von Lutz (Gast)


Lesenswert?

Die Details zur angeschlossenen Peripherie (Temperaturmessung) sind 
sowohl im Schaltplan als auch im Text wirklich sehr klein geraten...
Oder hast du auch mal den "nackten" Chip gemessen? Und gibt dein 
Meßgerät die Genauigkeit in dem Meßbereich garantiert her?

von Kastanie (Gast)


Lesenswert?

Ich würde die unbenutzten Ports auf Output schalten und die PullUps 
deaktivieren.

von Mehmet K. (mkmk)


Lesenswert?

@Lutz
Vielleicht meinen Beitrag nochmals lesen?

Kastanie schrieb:
> Ich würde die unbenutzten Ports auf Output schalten und die PullUps
> deaktivieren.
Saemtliche Kombinationen habe ich bereits durchgehaechelt.
Das, was Du vorgeschlagen hast, steht bei mir mit 2mA nicht gerade bei 
den Top-Ten.

von R.F (Gast)


Lesenswert?

Alle ports auf analog ist schon richtig.
Bist du sicher, dass er auch im Standby ist?

Ist die Schaltung so wirklich auf einer eigenen Platine oder mit dem 
"stm32f072 discovery" aufgebaut?

von Kastanie (Gast)


Lesenswert?

Mehmet K. schrieb:
> Kastanie schrieb:
>> Ich würde die unbenutzten Ports auf Output schalten und die PullUps
>> deaktivieren.
> Saemtliche Kombinationen habe ich bereits durchgehaechelt.
> Das, was Du vorgeschlagen hast, steht bei mir mit 2mA nicht gerade bei
> den Top-Ten.

Das kann nicht sein.
Nur die unbenutzten (=offenen) Pins dürfen auf Ausgang geschaltet 
werden.
Der Strom kann ja dann nirgends hin. Also treibst du einen falschen Pin 
mit.

von mts (Gast)


Lesenswert?

Mehmet K. schrieb:

> StandbyMode

SLEEPDEEP=1 und PDDS=1?

von Mehmet K. (mkmk)


Lesenswert?

Ich arbeite mit dem eigentlichen Board; also nicht mit einer Discovery 
oder aehnlichem.
Wie bereits geschrieben, habe ich alles entfernt.
Auf dem Board ist also nur die MCU, 2x 1M Widerstaende, 32kHz Quarz + 2 
Caps. Also so, wie im gepostetem Schema.

von Mehmet K. (mkmk)


Lesenswert?

mts schrieb:
> Mehmet K. schrieb:
>
>> StandbyMode
>
> SLEEPDEEP=1 und PDDS=1?

Exakt.

von R.F (Gast)


Lesenswert?

Warum ziehst du den Wakeup Pin nach High? Würde ihn auf gnd ziehen. Der 
controller wird ja aufgeweckt wenn eine steigende Flanke am WKUP pin 
kommt. So sparst du dir schonmal 3,3µA.

von Mehmet K. (mkmk)


Lesenswert?

R.F schrieb:
> Warum ziehst du den Wakeup Pin nach High? Würde ihn auf gnd ziehen. Der
> controller wird ja aufgeweckt wenn eine steigende Flanke am WKUP pin
> kommt. So sparst du dir schonmal 3,3µA.

JP2 ist ein Kurzschluss. Sobald dieser getrennt wird, beginnt die 
Aufzeichnung.

von Kastanie (Gast)


Lesenswert?

Mehmet K. schrieb:
> Saemtliche Kombinationen habe ich bereits durchgehaechelt.
> Das, was Du vorgeschlagen hast, steht bei mir mit 2mA nicht gerade bei
> den Top-Ten.


Überleg dir doch mal wo die 2mA herkommen sollen.

Eine Vermutung:
Du hast zwar auf Ausgang geschaltet, jedoch die PullUps aktiviert 
gelassen und die Ausgänge auf Low getrieben.

von Mehmet K. (mkmk)


Lesenswert?

Um des Friedens willen habe ich nochmals getestet:
1
// all inputs with No pull-up, pull-down
2
GPIOA->PUPDR = 0;
3
GPIOB->PUPDR = 0;
4
GPIOC->PUPDR = 0;
5
GPIOF->PUPDR = 0;
6
7
// all ports are outputs
8
GPIOA->MODER = 0x55555555;
9
GPIOB->MODER = 0x55555555;
10
GPIOC->MODER = 0x55555555;
11
GPIOF->MODER = 0x55555555;
2,27mA

von Mehmet K. (mkmk)


Lesenswert?

Hier in Istanbul ist es jetzt 21:35.
Ich buste also mal die Karbitlampe aus und verlasse den Stollen. Bis 
morgen allerseits.

von Gerd E. (robberknight)


Lesenswert?

Ist vielleicht noch irgendwelcher etwas leitender Dreck auf der Platine? 
Schwarze Flussmittelreste vom Löten oder ähnliches?

Wasch das mal ab. Wenn man Pech hat, kann so Zeug durchaus im niedrigen 
µA-Bereich leiten.

von Mehmet K. (mkmk)


Lesenswert?

Ne, an der Sauberkeit kann es nicht liegen. Da bin ich sehr pingelig. 
Habe es aber nichtsdestotrotz nochmals gereinigt. Keine Aenderung.

Also ich darf davon ausgehen, dass meine Erwartung von 1 - 2uA seine 
Berechtigung hat und ich zumindest die Möglichkeit, das Datenblatt 
falsch interpretiert zu haben, ausschliessen kann.

Falls die Methode 
"auch-ein-blinkdes-Huhn-findet-hin-und-wieder-ein-Korn" zum Erfolg 
führen sollte, werde ich hier berichten.

von Mehmet K. (mkmk)


Lesenswert?

Habe nochmals die Manuals durchgesehen ...
Ich vermute, der zusaetzliche Stromverbrauch kommt vom VDDIO2.
Dieser wird als "Independent I/O supply rail" bezeichnet, weshalb man 
davon ausgehen kann, dass die Angaben Ivdd und Ivda den Strom durch 
diesen Pin nicht miteinbeziehen.

Leider laesst das PCB es nicht zu, diese Vermutung zu verifizieren; 
werde also erst nach Erhalt eines neuen PCB berichten können.

von R.F (Gast)


Lesenswert?

> Also ich darf davon ausgehen, dass meine Erwartung von 1 - 2uA seine
> Berechtigung hat und ich zumindest die Möglichkeit, das Datenblatt
> falsch interpretiert zu haben, ausschliessen kann.

Die "power consumption" angeben sind schon korrekt im Datenblatt.

Kannst du mal deinen source code hochladen, vll liegt da noch irgendwo 
der Fehler.

VDDIO2 denke ich eher nicht, dass dieser die ca. 12µA verbraucht.


--
Ich nutzte für IoT den STM32L051K6T6 und da komme ich auf ca. 900nA im 
Stop-Modus (+RTC und GPIO-IRQ wake-up).

von Mehmet K. (mkmk)


Lesenswert?

R.F schrieb:
> VDDIO2 denke ich eher nicht, dass dieser die ca. 12µA verbraucht.

Danke für die Info. Denn danach suche schon seit laengerem. Wo im 
Datenblatt steht das?
20µA - 12µA = 8µA

R.F schrieb:
> Ich nutzte für IoT den STM32L051K6T6 und da komme ich auf ca. 900nA im
> Stop-Modus (+RTC und GPIO-IRQ wake-up)
Sauber!
Der STM32L0 würde aber den finanziellen Rahmen sprengen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.