Forum: Mikrocontroller und Digitale Elektronik Stromaufnahme STM32F4 sinkt bei USART Transmission


von Ingo L. (corrtexx)


Lesenswert?

Hallo,
ich habe hier eine Platine mit einem STM32F405. Nun beobachte ich, dass 
die Gesamtstromaufnahme bei einer USART Transmission zu einem FTDI 
sinkt! Es sind satte 20mA. Dies beschert mir auf auf der 5V-Schiene 
einen Spannungshub von +20mV. Am Ende der Transaktion steigt sie dann 
wieder um 20mA und ich bekomme wieder einen Hub -20mV. Nun Frage ich 
mich, warum die Stromaufnahme sinkt? Es laufen alle Tasks weiter, es 
kommt nur zusätzlich USART dazu?

Der Spannungshub stört meinen DAC, da der Spannungshub auf diesen 
durchgereicht wird und mein Signal ebenfalls diese Sprünge macht.

Der Workaround ist derzeit einen 5V-Spannungsregler für die 5V, und 
nicht wie derzeit von einem externen 5V Netzteil, auf die Platine zu 
setzen. Mich wundert aber, dass die Stromaufnahme sinkt, ich hätte eher 
erwartet das sie steigt, wenn ich USART benutze.

Der STM32 wird über einen 3,3V Spannungsregler aus dieser 5V-Schiene 
versorgt.

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ingo L. schrieb:
> ich hätte eher
> erwartet das sie steigt, wenn ich USART benutze.

Wenn du da z.B. einen starken Pulldown auf TXD liegen hast, klingt das 
gar nicht so unplausibel, aber du müsstest dann einen recht starken 
Spannungseinbruch auf dem TXD Signal haben, denn der Pin kann bei hoher 
Stromentnahme nicht mehr die Logiklevel erreichen.
Was hängt also an TXD als Beschaltung dran?
Als zusätzliche Standardfrage stelle ich noch schnell die nach den 
Abblockkondensatoren rund um den STM32. Ist das alles gut und nach 
Empfehlung?

: Bearbeitet durch User
von georg (Gast)


Lesenswert?

Ingo L. schrieb:
> Der Spannungshub stört meinen DAC

Vermutlich willst du das nicht hören, aber das ist ein klarer 
Designfehler - analoge Teile dürfen nicht von der Versorgung für den 
digitalen Teil abhängig sein. Dafür gibt es Spannungsreferenzen. Und der 
Innenwiderstand der Stromversorgung ist offensichtlich unterirdisch.

Georg

von Ingo L. (corrtexx)


Lesenswert?

Also ich habe jetzt die Spannugsversorgung nachgebessert mit etwas 
kräftigerer Entstörung (1µ + 10µF) die Versorungsspannungen sauber 
gemacht. Der Spannungshub ist auch weg, trotzdem wabert mein Signal bei 
am DAC bei USART Ausgabe, ich finde nirgends einen Hinweis mit dem Oszi, 
dass gleichzeitig eine Spannung wackelt. Ich werde das Gefühl nicht los, 
dass es am Programm selber liegt. Der Interrupt, der das Ausgabesignal 
berechnet und die Ausgabe übernimmt hat Vorrang und kann den Systick 
unterbrechen, dass habe ich getestet. Auch wird der Interrupt mit fester 
Frequenz ausgeführt, da stört niemand rein.

von Dr. Sommer (Gast)


Lesenswert?

Ingo L. schrieb:
> Ich werde das Gefühl nicht los,
> dass es am Programm selber liegt.

Möglich; wenn du während der Ausgabe nichts anderes tust als auf den 
Interrupt zu warten, verbrauchst du deutlich weniger Strom als während 
einer möglicherweise sonst stattfindenden intensiven Berechnung.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ingo L. schrieb:
> ich habe hier eine Platine mit einem STM32F405.
Zeig doch mal den Schaltplan davon. Und am besten auch noch das Layout 
dazu...

Ingo L. schrieb:
> ich finde nirgends einen Hinweis mit dem Oszi
Miss mal mit deinem Oszi von Masse nach Masse quer über die Platine 
(richtig: Masseklemme links unten an Masse und Tastkopf rechts oben auch 
an Masse). Was siehst du da?

: Bearbeitet durch Moderator
von Rauchfang (Gast)


Lesenswert?

Blinde Vermutung:
Injektion von Strömen von der TX-Leitung des FT232 in den STM32.

Nicht alle Pins sind 5V-tolerant.

Wenn der FT232 nämlich mit 5V auf den 3V3 STM32 treibt, würde ein Strom 
in die Versorgung fließen, was die Reduktion des Stromverbrauchs 
erklärt.

Also das aber nur, wenn der Pin nicht 5V-Tolerant ist und der FT232 mit 
5V arbeitet.

Wie schon gesagt, blinde Vermutung ;-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rauchfang schrieb:
> Blinde Vermutung:
> Injektion von Strömen von der TX-Leitung des FT232 in den STM32.
Allerdings ist der Ruhepegel des (RX?) Ausgangs vom FT232 ja 
eigentlich 5V, wenn der mit 5V versorgt ist. Denn der Ruhezustand der 
seriellen Schnitte ist "high".

von Ingo L. (corrtexx)


Lesenswert?

Ich habe nun auf alle 100nF unter dem STM einen 10µ Ceramik gebraten und 
es setzte spontane Selbstheilung ein.

Kaum macht man es richtig gehts...

von MCU Historiker (Gast)


Lesenswert?

Heutige MCU Einsteiger haben es schon deutlich schwerer. Haben die MCUs 
in der MCS51 Ära wenn überhaupt dann einen 8-Bit ADC gehabt, hat ein 
heutiger Cortex-M4 schon einen 12-Bit ADC und jede Menge mehr digital 
schaltende Transistoren on Chip, die alle Radau machen, also Störungen 
verursachen.
Beim Entstören schaut es nicht anders aus. Hat man damals ausreichend 
viele THT Keramikkondensatoren und Tantals eingelötet, sind es heute SMD 
MLCCs mit hässlichem DC-Bias, was die meisten erstmal gar nicht kennen 
sondern schmerzhaft selbst erfahren müssen.

Heute geht alles schneller nur dauert es länger.

von Ingo L. (corrtexx)


Lesenswert?

Scheint doch in der Software der Fehler zu liegen, wenn ich die Selbe 
Firmware mehrmals hintereinander flashe kommt es vor, dass der Fehler 
nicht auftaucht.

von georg (Gast)


Lesenswert?

Ingo L. schrieb:
> Scheint doch in der Software der Fehler zu liegen, wenn ich die Selbe
> Firmware mehrmals hintereinander flashe kommt es vor, dass der Fehler
> nicht auftaucht.

Wenn du glaubst, hier findet ein Wettbewerb statt um die rätselhaftesten 
Funktionsfehler - nein, den gibt es nicht.

Ich kann dir auch versichern, dass alle bisherigen Computer 
deterministisch sind, mit dem gleichen Programm verhalten sie sich auch 
gleich. Selbst wenn man das, wie bei Neuronalen Netzen, nicht auf Anhieb 
sieht.

Georg

von MCU Historiker (Gast)


Lesenswert?

Wenn es darum geht, ein gutes ADC-Ergebnis zu bekommen, also mit 
möglichst vielen Nichtverrauschten Bits, dann ist das bei einem 12-Bit 
ADC gar nicht so einfach und erfordert eine Gesamtsystemische 
Betrachtung.

Falls es sich bei der Platine um ein Evaluation Board handelt, sei 
gesagt, dass die Referenzspannung vom ADC/Analogteil/Entkopplung meist 
sehr liederlich realisiert ist und oft improvisiert werden muss, um 
halbwegs akzeptable Ergebnisse zu bekommen.

von Ingo L. (corrtexx)


Lesenswert?

Es wird immer merkwürdiger. Wenn ich das Programm flashe:
STM32_Programmer_CLI -c port=SWD FREQ=4000 mode=NORMAL -d 
${TARGET_OUTPUT_DIR}${TARGET_OUTPUT_BASENAME}.hex -V -rst

Startet das Programm und macht die Mucken. Nehme ich dann die 
Betriebsspannung kurz weg, läuft es nach dem Neustart ohne Probleme. 
Flashe ich es dann wieder habe ich das Problem erneut. Ein Hardwarereset 
hilft hier nicht, es muss VCC wegfallen damit es läuft, verstehe ich 
nicht

: Bearbeitet durch User
von (Gast)


Lesenswert?

Wabert das Signal auf und ab oder hin und her? Es könnte was am Timing 
faul sein, die Busse im STM haben ja nur eine endliche Bandbreite, 
genauso ist die Interrupt-Latenz nicht unbedingt immer gleich.

von Ingo Less (Gast)


Lesenswert?

Beides, es wird ein Sinus berechnet und ausgegeben. Beim Senden des 
USART mit 1200 Baud zuckt das Signal für die Dauer der Transmission kurz 
um 200mV nach oben und es gibt scheinbar auch sowas wie n Vektorsprung. 
Nach der Transaktion is das Signal wieder normal. Stutzig macht mich, 
dass nach eine Unterbrechung der VCC alles prima läuft, bis zum nächsten 
Flashen

von Ingo Less (Gast)


Lesenswert?

Die Interrupts kommen sehr präzise, wie gewünscht. Daran ändert sich 
auch wärend des Sendens nichts

von Ingo Less (Gast)


Lesenswert?

Ich hab die Hardware leider nicht mehr griffbereit, aber kann es sein 
das man beim Initialisieren ein „Deinit“ einiger Peripherie machen muss 
wenn die schon läuft? Scheinbar setzt der Reset nicht alle Register in 
den gleichen Zustand wie nach einem Power on, oder? Der DMA scheint da 
sehr sensibel zu sein

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.