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
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
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
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.
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.
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
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 ;-)
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".
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...
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.
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.
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
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.
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
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.
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
Die Interrupts kommen sehr präzise, wie gewünscht. Daran ändert sich auch wärend des Sendens nichts
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.