Forum: Mikrocontroller und Digitale Elektronik STM32L4 Power supply design


von Janos P. (saftig)


Lesenswert?

Hallo,
ich möchte eine Platine mit STM32L4 designen. Da ich VCC und AVCC des 
Controllers mit unabhängigen Spannungsversorgungen beschalte, wollte ich 
gern eine Funktion einplanen, die mir die beiden Spannungen sequenziert 
ein- und abschaltet. In diesem Datenblatt auf Seite 21/22 (Das Diagramm) 
ist nämlich zu lesen, dass es da einen "verboten Zustand" der 
Versorgungsspannungen gibt:
https://www.mouser.de/datasheet/2/389/stm32l431cb-956249.pdf
Während VCC <1V, darf AVCC maximal VCC + 0,3V betragen.
Wenn VCC >1V sind die Spannungen unabhängig.

Kann mir mal jemand erklären, wie das auf Seite 21 mit dem Entladen der 
"decoupling-capacitors" gemeint ist? Ich nehme an, der MCU entlädt die 
AVCC und VCC Kapazitäten mit unterschiedlicher Geschwindigkeit, um mit 
AVCC unter dem im Diagramm zu sehenden "Totbereich" 0,3V über'm 
fallenden VCC zu kommen - irgendwie so? aber könnte mir das noch mal 
jemand detaillierter übersetzen? Was hat denn das mit den 1mJ zu tun? 
Das wird da ja im Zusammenhang beschrieben, nur scheinen das für mich 
zwei unterschiedliche Funktionen zu sein, ein mal, dass VCC unter die 
anderen Spannungen fallen darf, solange die Aufnahme das MCU 1mJ nicht 
übersteigt, aber was DARAN erlaubt es jetzt die 
Entkopplungskondensatoren unterschiedlich schnell zu entladen? Werden 
die mit 1mJ entladen?


Für die Einschaltphase der Spannungen wollte ich also einen 
Spannungsregler mit "power-good-pin" nehmen, und ebendiesen Pin an den 
enable Pin des zweiten Reglers schalten. So würde AVCC erst einschalten, 
wenn die VCC Spannung von ~3.3V erreicht wäre, also weit über der 1V 
Grenze. Passt soweit, vorher brauche ich die Analoge Spannung auch 
nicht, und so wäre das Einschalten schon mal sicher sequenziert. Denkbar 
wäre auch ein Spannungsteiler an der Ausgangsspannung des ersten 
Reglers, so hätte ich über das variieren des Spannungsteilers eine 
änderbare Schaltschwelle, oder sogar ein Fester Komparator für zwei 
Schaltschwellen, falls den nicht schon der Enable-Pin des zweiten 
Reglers implementiert). Zumindest Wollte ich wie beschrieben so die 
Start Sequenz sicherstellen.
Spricht bis hier irgendetwas dagegen?




Ich möchte aber noch eine weitere Sicherheit in Hardware implementieren:
In dem (Fehler-)Fall aber, dass VCC unter 1,71V abfällt (darunter läuft 
der Kern nicht mehr), und AVCC nicht vorher ordnungsgemäß von der 
Shutdown-Routine abgeschaltet wurde, hätte ich gerne noch eine Funktion 
(Notbremse), die AVCC möglichst schnell abschaltet. Der MCU könnte es ja 
dort nicht mehr, und bliebe AVCC eingeschaltet, während VCC fiele, 
entstünde wieder ein verbotener Zustand. Dagegen also was in Hardware.

Sicherlich kann man per Software fünf VCC Spannungs-Schwellen 
einstellen, bei deren Unterschreiten ein Interrupt generiert werden 
könnte, der AVCC garantiert rechtzeitig abschaltet! Und das würde auch 
solange niemand an der Software rumfrickelt funktionieren.
Ich möchte aber eine "Idioten-Funktion", sprich: wenn irgendein Idiot 
(ich) zu doof war das Ganze so zu programmieren, dass es sicher 
herunterfährt, dann soll trotzdem immer mittels Hardware sichergestellt 
sein, dass die Spannungen in nicht-schädlicher Reihenfolge ein- und 
ausgeschaltet werden, und der MCU nach so einem Fehler nicht hinüber 
ist.
Ich möchte da nämlich einiges probieren, die STM32L4 bringen eine Menge 
interessanter Funktionen zum Energie-Management mit, und die Platine 
soll mein Experimentierboard werden, sodass ich also bei der Planung 
auch davon ausgehen möchte, dass das Ding mal falsch programmiert wurde, 
oder irgendwo  ein Fehler passiert.

Aber wie mache ich das? Wie kriege ich, wenn ein rasch fallendes VCC 
auffällt, das AVCC Signal schnell und sicher unter das des VCC + 0,3V?
Kann ich die Kapazität von AVCC einfach mit einem Transistor auf GND 
ziehen und so entladen? Im Datenblatt steht ja, wenn die Funktionen von 
AVCC nicht genutzt werden, soll man sie auf VCC schalten. Aber darf im 
aus- bzw. shutdown Modus AVCC auf GND gezogen werden, oder spricht da 
was dagegen?
Man könnte auch beim Fallen von VCC unter 1.71V, die AVCC-Versorgung 
trennen und den AVCC-Pin mit VCC zusammenlegen, das würde in jedem Fall 
verhindern dass AVCC >= VCC +0,3V, ginge dann ja nicht mehr.

Ich kanns mir ja eigentlich schon fast selber denken, aber ich frage 
trotzdem nochmal:
Zwischen MCU und Entkopplungskondensator zu trennen ist wohl in jedem 
Fall nicht ratsam, weil diese Kondensatoren dann nicht mehr nah genug am 
MCU sind, da noch Pins und die interne Elektronik der highside-switches 
und lange Leiterbahnen mit ihren dazugehörigen parisitären Effekten 
zwischen hängen?

Gibt es vielleicht extra Spannungsregler mit Unterbrechungsfunktion, die 
die Entladung der Kapazitäten automatisch und schnell machen?

Wie würdet ihr das Vorhaben in Hardware implementieren, wenn ihr 
solltet?

Habe glaube ich erst mal genug erklärt was ich vor habe, ich hoffe Ihr 
habt ein paar Tipps!

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Normalerweise reichts doch VDDA durch einen LC Tiefpass von VDD zu 
trennen.
Dann sind all die Probleme weg wenn die Spule nicht hochohmig wie 
sonstwas is.

Daher eine Rückfrage:
Warum willst du da jetzt mit 2 Quellen ran?

von Janos P. (saftig)


Lesenswert?

Mw E. schrieb:
> Warum willst du da jetzt mit 2 Quellen ran?

Ich wollte mir ein möglichst umfangreiches Power-Experimentier-Board mit 
Analogen Schutz-Funktionen und Power-Sequencing entwerfen, um damit die 
Funktionen des STM32L4 auszuprobieren.
Als ich gelesen habe, dass man AVCC und VCC unabhängig versorgen kann, 
dachte ich, dass es auch auch Sinn macht dies zu tun.

Da das unabhängige Versorgen des AVCC und VCC doch ein sinnloses 
Vorhaben scheint, weil der Tiefpass auch reicht, und das auch gar keine 
Vorteile bietet, widme ich mich lieber sinnvollen Herausforderungen.


Eigentlich hatte ich vor, zum Experimentieren einen STM32 einzusetzen, 
an dem man direkt den Core über einen Pin versorgen kann, während die 
internen Linearregler des STM32 ausgeschaltet sind, um so einen extrem 
effizienter Betrieb zu erreichen, (solange der eingesetzte externe 
Regler effizienter als der ersetzte interne überbrückte LDO ist).
Vielleicht widme ich mich besser wieder dieser Aufgabe.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Ob sich das lohnt hängt davon ab wie oft der L4 rechnen muss.
Der ist ja auch nur stromsparend wenn er seine ganzen Schlafzustände 
ausspielen kann.

In denen ist der Stromverbrauch aber so gering, dass ein Schaltregler da 
alleine durch seine Umschaltverluste weniger Wirkungsgrad als ein LDO 
hat.
(wir reden hier von µA!)

Wenn man bereits die passende Kernspannung aus einem Schaltregler auf 
seinem Layout hat dann kann man damit auch den STM32 versorgen.

von Schorsch X. (bastelschorsch)


Lesenswert?

Die Versorgung per Tiefpass reicht eigentlich aus. Bei der getrennten 
Versorgung des Cores muss das entsprechende Derivat ausgewählt werden, 
der das auch kann. Je nach Versorgung macht das aber nur selten 
sonderlich Sinn. Nur wenn es um extrem sparsamen Betrieb geht. Wenn das 
Ding eh fast die ganze Zeit pennt, bringt ein Schaltregler nicht 
sonderlich viel und macht nur Aufwand.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Janos P. schrieb:
> Wie würdet ihr das Vorhaben in Hardware implementieren, wenn ihr
> solltet?

Vermutlich mit einer Schottkydiode, die dann AVCC über VCC entlädt. 
Dabei kann man sich allerdings wieder Störungen von VCC einfangen. Wenn 
ich sollte, würde ich dann doch zum klassischen LC Tiefpass tendieren, 
der sich aus VCC speist.

von Janos P. (saftig)


Lesenswert?

Danke für die Antworten! Werde jetzt AVCC mit Tiepass an VCC einplanen, 
bringt doch zu viele Probleme mit sich anders.

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.