Forum: Mikrocontroller und Digitale Elektronik STM32F3: Problem mit hoher Stromaufnahme


von max123 (Gast)


Lesenswert?

Hallo liebe Gemeinde,


ich habe in einem Projekt nun zum ersten mal einen STM32 eingesetzt, die 
genaue Bezeichnung ist STM32F303VBT im LQFP100 Gehäuse.

Vor einem Jahr wurde von der Schaltung ein Prototyp gebaut, der ist 
seitdem im Dauereinsatz und macht keinerlei Probleme.

Nun wurden 150 Boards gefertigt und ich habe die ersten 60 Stk. in 
Betrieb genommen. Von diesen 60 Boards fielen beim IO-Testprogramm auf 
Anhieb vier Boards auf, die am internen AD-Wandler nicht auf den 
Maximalwert kommen.

An den Eingängen hängen 10k Potis, die mit einem RC-Glied gefiltert 
werden, R=10k, C=1u. Die defekten Boards ziehen einen so hohen Strom 
über die analogen Pins, dass das RC-Glied durch Belastung nur auf 2.9V 
hochkommt, 0.4V fallen am Filterwiderstand ab.

Der Prozessor wird mit zwei NCP1117 versorgt, einer macht VDD_D, der 
andere VDD_A und VREF+. Die Massen sind an zentraler Stelle 
zusammengeführt. Die Stromversorgung der Regler ist über ein 9V 
Steckerschaltnetzteil per Brückengleichrichter als Verpolungsschutz und 
entsprechenden Kondensatoren.

Bei allen betroffenen Boards werden die Spannungsregler sehr heiß und 
der Prozessor merklich warm. Über VDD_D fließt ein um 20-30 mA höherer 
Strom als bei intakten Boards. Der Code wird (soweit man erkennen kann) 
jedoch korrekt ausgeführt.

Ein Austausch des Prozessors bei einem der defekten Boards hat das 
Problem beseitigt. Das Entlöten und wieder Auflöten eines Prozessors auf 
einem anderen Board hat das Problem nicht beseitigt. Mit dieser Prozedur 
wollte ich Lötfehler oder Leiterplattenfehler ausschliessen. 
Kurzschlüsse lassen sich nicht feststellen.

Ich weiß hier nicht weiter. Hat jemand eine Idee in welche Richtung ich 
weiter Suchen könnte?

Max

von 6a66 (Gast)


Lesenswert?

max123 schrieb:
> Ich weiß hier nicht weiter. Hat jemand eine Idee in welche Richtung ich
> weiter Suchen könnte?

Stückweise die Schaltung "entstücken" und Stromverbrauch beobachten.
Wenn Die CPU warm wird fließt der Strom darüber - das sollte ja 
feststellbar sein wohin.

rgds

von Bauteiltöter (Gast)


Lesenswert?

max123 schrieb:
> Bei allen betroffenen Boards werden die Spannungsregler sehr heiß und
> der Prozessor merklich warm. Über VDD_D fließt ein um 20-30 mA höherer
> Strom als bei intakten Boards. Der Code wird (soweit man erkennen kann)
> jedoch korrekt ausgeführt.
>
> Ein Austausch des Prozessors bei einem der defekten Boards hat das
> Problem beseitigt. Das Entlöten und wieder Auflöten eines Prozessors auf
> einem anderen Board hat das Problem nicht beseitigt. Mit dieser Prozedur
> wollte ich Lötfehler oder Leiterplattenfehler ausschliessen.
> Kurzschlüsse lassen sich nicht feststellen.

Klingt nach Latch-up. Prozessor nicht ESD-gerecht verpackt? Beim löten 
nicht auf ESD geachtet?

Ich habe einen STM32F4 mal mit ähnlichen Verhalten entsorgen müssen 
(TQFP176 auslöten -> bah). Der hat kurzzeitig einen 12V-Spike gesehen, 
daraufhin genemigte sich das Teil über 2A (@3.3V) und wurde innerhalb 
von Sekunden kochend heiß, das Programm hat er aber weiterhin korrekt 
ausgeführt und auch programmiren ließ er sich noch.

von 6a66 (Gast)


Lesenswert?

Bauteiltöter schrieb:
> Der hat kurzzeitig einen 12V-Spike gesehen,
> daraufhin genemigte sich das Teil über 2A (@3.3V)

Na, das hat aber Nichts mit Latchup und ESD zu tun. Da brennt der 
Ausgangstreiber durch - anscheinend leitend. Dass der Core dann 
weitermachen kann ist durchaus möglich.

rgds

von Bauteiltöter (Gast)


Lesenswert?

Ne, der 12V-Spike war auf der 3,3V Versorgungsspannung.

Kann also zum Latchup führen. Ich zitiere mal Wikipedia:
>Auslösemechanismen:
>Die Versorgungsspannung überschreitet die absoluten Grenzdaten (engl. >absolute 
maximum ratings) des Bausteins. Eine kurze Spannungsspitze wie >bei einer 
elektrostatischen Entladung kann hier genügen.

Aber du hast recht, je nachdem welcher Teil des Chips betroffen ist, ist 
es nur logisch das der CPU-Core weiter rechnet. Im ersten Moment ist es 
aber schon erstaunend wenn man einen kochenden Prozessor hat der dennoch 
weiter arbeitet.

von Max 1. (max123)


Lesenswert?

6a66 schrieb:

> Stückweise die Schaltung "entstücken" und Stromverbrauch beobachten.
> Wenn Die CPU warm wird fließt der Strom darüber - das sollte ja
> feststellbar sein wohin.
>
> rgds

Das werde ich vielleicht mal machen müssen. Komisch ist jedoch, dass 
nach Prozessortausch das Board mit der selben Peripherie einwandfrei 
funktionierte!



Bauteiltöter schrieb:
>
> Klingt nach Latch-up. Prozessor nicht ESD-gerecht verpackt? Beim löten
> nicht auf ESD geachtet?
>
> Ich habe einen STM32F4 mal mit ähnlichen Verhalten entsorgen müssen
> (TQFP176 auslöten -> bah). Der hat kurzzeitig einen 12V-Spike gesehen,
> daraufhin genemigte sich das Teil über 2A (@3.3V) und wurde innerhalb
> von Sekunden kochend heiß, das Programm hat er aber weiterhin korrekt
> ausgeführt und auch programmiren ließ er sich noch.


Die Bestückung findet bei einem professionellen Bestücker statt. Wir 
haben zwar Teppichboden, haben deshalb Tischmatten und Armbänder im 
Dauereinsatz.



Wie empfindlich sind die Chips erfahrungsgemäß gegen die 
Einschaltreiheenfolge der Versorgungsspannung? Wir schalten 
"gleichzeitig" und ohne Verzögerung, das Datenblatt spricht ja von VDD_A 
vor oder gleichzeitig mit VDD_D..

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> Die Bestückung findet bei einem professionellen Bestücker statt. Wir
> haben zwar Teppichboden, haben deshalb Tischmatten und Armbänder im
> Dauereinsatz.

4 Stück in Serie mit ESD zu töten - unwahrscheinlich.
Eher: Kaputte Keramikkondensatoren durch trennen (Ritztechnik), 
Kurzschlüsse durch Lotperlen oder Mechanik (Potentiometer), ...

rgds

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> Wie empfindlich sind die Chips erfahrungsgemäß gegen die
> Einschaltreiheenfolge der Versorgungsspannung? Wir schalten
> "gleichzeitig" und ohne Verzögerung,

Du meinst die VDD_A und VCC_D?
Machen wir auch, >10k am laufen, ohne Probleme.

rgds

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> Das werde ich vielleicht mal machen müssen. Komisch ist jedoch, dass
> nach Prozessortausch das Board mit der selben Peripherie einwandfrei
> funktionierte!

Hmm, mal mit dem Mikroskop draufschauen? Kein Mikroskop - dann 
Uhrmacherelupe für 15EUR besorgen, gehört zu jedem HW-Arbeitsplatz dazu 
der SMD verarbeitet.

rgds

von Arc N. (arc)


Lesenswert?

Wie sehen denn die Spannungen an den Ausgängen der NCPs bzw. am STM aus?
Kann es sein, dass da nicht mehr die Anforderungen aus dem Datenblatt 
des NCP1117 erfüllt werden?

von Max 1. (max123)


Angehängte Dateien:

Lesenswert?

6a66 schrieb:
> Max 123 schrieb:
>> Das werde ich vielleicht mal machen müssen. Komisch ist jedoch, dass
>> nach Prozessortausch das Board mit der selben Peripherie einwandfrei
>> funktionierte!
>
> Hmm, mal mit dem Mikroskop draufschauen? Kein Mikroskop - dann
> Uhrmacherelupe für 15EUR besorgen, gehört zu jedem HW-Arbeitsplatz dazu
> der SMD verarbeitet.
>
> rgds


Ja, wir haben mit dem Mikroskop geschaut. Nichts zu sehen. Ich habe den 
Schaltplan mal angefügt - vielleicht ist das hilfreich.

Arc Net schrieb:
> Wie sehen denn die Spannungen an den Ausgängen der NCPs bzw. am STM aus?
> Kann es sein, dass da nicht mehr die Anforderungen aus dem Datenblatt
> des NCP1117 erfüllt werden?



In welcher Hinsicht? Die Spannungen sind bei 3.3V +- 50mV, kein 
erkennbarer Ripple, Spikes etc, kein (sichtbares) Schwingen.

Ergänzend ist festzustellen, dass bei überbrücken der R's in den 
RC-Gliedern nach den Potis der AD Wandler wieder seine hohen Werte 
erreicht. Es ist aber auch zu messen, dass die digitalen IO's nicht mehr 
über 2.7V-2.8V hinauskommen.

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> Ja, wir haben mit dem Mikroskop geschaut. Nichts zu sehen. Ich habe den
> Schaltplan mal angefügt - vielleicht ist das hilfreich.

Interessant - wir versorgen den VDD_A aus dem VDD_D mittels Ferriten 
(beads). Was passiert wenn VDD_A vorhanden und VDD_D nicht - sollte man 
ma überprüfen. STM hat zur Versorgung von VDD_A IMHO eine APPNOTE.

rgds

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> Ja, wir haben mit dem Mikroskop geschaut. Nichts zu sehen. Ich habe den
> Schaltplan mal angefügt - vielleicht ist das hilfreich.

Sehe auch dass Ihr VSS_A nicht am Regler auflegt sondern einfach and 
PWRGND. Auch hier APPNOTE beachten.

rgds

von Max 1. (max123)


Lesenswert?

6a66 schrieb:
> Interessant - wir versorgen den VDD_A aus dem VDD_D mittels Ferriten
> (beads). Was passiert wenn VDD_A vorhanden und VDD_D nicht - sollte man
> ma überprüfen. STM hat zur Versorgung von VDD_A IMHO eine APPNOTE.

STM sagt dazu in AN2834, Abschn. 3.2.12:

If you use a switching-type power supply for the digital circuitry, you 
should use a separate linear supply for the analog circuit. Also, if you 
expect a lot of noise on the DC power supply due to I/O switching etc., 
it is preferable to use a separate supply for the analog circuit.

Weiter im Datenblatt DocID023353 Rev 8, Abschn. 3.7.1:

The VDD_A voltage level must be always greater or equal to the VDD 
voltage level and must be provided first.

Das liegt sicher auch daran, dass die interne PLL und der Reset 
Generator an VDD_A hängen. Die Spannungsdifferenz zwischen den Reglern, 
wie kritisch mag man hier "equal" auslegen?


6a66 schrieb:
> Sehe auch dass Ihr VSS_A nicht am Regler auflegt sondern einfach and
> PWRGND. Auch hier APPNOTE beachten.
>
> rgds

Was meinst du hier genau? GND_PWR ist vom Netzteil und jeweils mit VSS_D 
und VSS_A an den LDOs verbunden.

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> The VDD_A voltage level must be always greater or equal to the VDD
> voltage level and must be provided first.

Hmmm - wie "first" muss das denn sein. Wie gesagt, bei uns läuft ein 
Produkt mit EINEM LDO für beide problemlos.
Was passiert wenn dem nicht so ist, wenn VDD kommt und VDD_A nicht 
(Regler defekt, Zeitkonstanten, ...)?

Max 123 schrieb:
> Was meinst du hier genau? GND_PWR ist vom Netzteil und jeweils mit VSS_D
> und VSS_A an den LDOs verbunden.

Wir haben einen GND_A für diesen Fall den wir an EINEM Punkt mit GND 
verbunden haben. An GND_A hängt die ganze Analogbeschaltung für die AD 
Wandler und deren Eingänge.

rgds

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


Lesenswert?

Irgendwo 5 Volt auf einen non-5-Volt-tolerant Pin?

von Max 1. (max123)


Lesenswert?

6a66 schrieb:
> Max 123 schrieb:
>> The VDD_A voltage level must be always greater or equal to the VDD
>> voltage level and must be provided first.
>
> Hmmm - wie "first" muss das denn sein. Wie gesagt, bei uns läuft ein
> Produkt mit EINEM LDO für beide problemlos.
> Was passiert wenn dem nicht so ist, wenn VDD kommt und VDD_A nicht
> (Regler defekt, Zeitkonstanten, ...)?


Ich habe das gerade mal gemessen, der VDD_A-Regler kommt sowohl bei den 
defekten als auch einem intakten Board wenige us früher hoch als der 
digitale. Das liegt an den kapazitiven Belastungen auf den Rails und ist 
deshalb zuverlässig denke ich - oder?


>
> Max 123 schrieb:
>> Was meinst du hier genau? GND_PWR ist vom Netzteil und jeweils mit VSS_D
>> und VSS_A an den LDOs verbunden.
>
> Wir haben einen GND_A für diesen Fall den wir an EINEM Punkt mit GND
> verbunden haben. An GND_A hängt die ganze Analogbeschaltung für die AD
> Wandler und deren Eingänge.
>
> rgds

So ist es im Layout auch.



Uwe Bonnes schrieb:
> Irgendwo 5 Volt auf einen non-5-Volt-tolerant Pin?

Ja, das war tatsächlich zuerst der Fall. Deshalb sind alle Boards 
gepatcht und jetzt ist es nicht mehr so. Die betroffenen Boards sind 
aber wie im Schaltplan im Anhang und meiner Überprüfung nach gibt es 
diesen Fall jetzt nicht mehr. Die betroffenen Boards sind erst nach dem 
Fix bestromt worden.

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> Ich habe das gerade mal gemessen, der VDD_A-Regler kommt sowohl bei den
> defekten als auch einem intakten Board wenige us früher hoch als der
> digitale. Das liegt an den kapazitiven Belastungen auf den Rails und ist
> deshalb zuverlässig denke ich - oder?

Würde ich mal als unkritisch vermuten.
Ich denke mal dass es darauf hinausläuft tatsächlich die fehlerhaften 
Blöcke durch Entstückung zu bestimmen.

rgds

von Max 1. (max123)


Lesenswert?

Auch, wenn nach Entlöten des Prozessors und Einsetzen eines Neuen in das 
selbe Board das Board einwandfrei läuft? Was ist deine Vermutung hier?

Ich hatte noch folgenden Verdacht:

SWDIO und SWCLK werden von einem Discovery stm32f4-board im 
Automatik-Modus von ST-Link zum Programmieren benutzt. Dafür wird das 
Discovery per Stiftleiste mit dem Board verbunden. Ich kann nicht 
garantieren, dass die Boards bisher immer zuerst Spannung hatten und 
dann der Programmer verbunden wurde. Die Signalspannungen aus dem 
Discovery sind zwar nur 3.3V, dafür aber immer noch zu hoch, sofern der 
zu programmierende uC noch nicht versorgt ist.

Gibt es da Zustimmung oder Gegenrede?

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> Auch, wenn nach Entlöten des Prozessors und Einsetzen eines neuen in das
> selbe Board das Board einwandfrei läuft? Was ist deine Vermutung hier?

Nicht den Prozessor runter, sondern die umgebenden Funktionsblöcke. Klar 
- wenn Du 'nen neuen Prozessor einlötest ist der Fehler u.U. erstmal 
wech.
Oder versuche die Stromversorgung der umgebenden Blöcke Stück für Stück 
zu unterbrechen.


rgds

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> SWDIO und SWCLK werden von einem Discovery stm32f4-board im
> Automatik-Modus von ST-Link zum Programmieren benutzt. Dafür wird das
> Discovery per Stiftleiste mit dem Board verbunden. Ich kann nicht
> garantieren, dass die Boards bisher immer zuerst Spannung hatten und
> dann der Programmer verbunden wurde. Die Signalspannungen aus dem
> Discovery sind zwar nur 3.3V, dafür aber immer noch zu hoch, sofern der
> zu programmierende uC noch nicht versorgt ist.

Wir machen das mit dem jlink von Segger. Wenn da nicht zuerst die 
Boardspannung vorhenden ist schreit der - Danach kommt er im Normalfall 
immer an den Prozessor zum programmieren.

rgds

von Max 1. (max123)


Lesenswert?

6a66 schrieb:
> Max 123 schrieb:
>> Auch, wenn nach Entlöten des Prozessors und Einsetzen eines neuen in das
>> selbe Board das Board einwandfrei läuft? Was ist deine Vermutung hier?
>
> Nicht den Prozessor runter, sondern die umgebenden Funktionsblöcke. Klar
> - wenn Du 'nen neuen Prozessor einlötest ist der Fehler u.U. erstmal
> wech.
> Oder versuche die Stromversorgung der umgebenden Blöcke Stück für Stück
> zu unterbrechen.
>
>
> rgds

Damit unterstellst du, dass irgendein Teil der Schaltung von außen gegen 
den Prozessor arbeitet?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Bauteiltöter schrieb:
> Ich habe einen STM32F4 mal mit ähnlichen Verhalten entsorgen müssen
> (TQFP176 auslöten -> bah). Der hat kurzzeitig einen 12V-Spike gesehen,
> daraufhin genemigte sich das Teil über 2A (@3.3V) und wurde innerhalb
> von Sekunden kochend heiß, das Programm hat er aber weiterhin korrekt
> ausgeführt und auch programmiren ließ er sich noch.

 Passierte uns auch. Der Prozessor wird seitdem heiss, altes Programm
 wird ausgeführt, aber umprogrammieren läßt er sich nicht mehr.
 Prozessor war nicht verbunden, also ohne Peripherie aber D+, D- und GND
 von USB waren angeschlossen ( Vusb nicht). Netzteil war ausgeschaltet.
 Da leuchtete die LED für Spannung schon schwach.
 Irgendjemand hat dann eine Reverse-Diode ins Netzteil eingelötet
 und da wars passiert.
 Ist mir aber bis heute nicht ganz klar, was da überhaupt passiert ist
 und ob ein Zusammenhang mit der Diode besteht.

von Max 1. (max123)


Lesenswert?

Ich habe jetzt das komplette Board Stück für Stück ab-bestückt - es 
passiert garnichts am Stromverbrauch, der ist konstant hoch, bis am Ende 
nur noch der Prozessor dran hängt und weiter fröhlich Strom zieht.

Wenn man mal zusammenfasst, dann sollte doch eines der folgenden 
Szenarien dazu führen, oder?

---------------------
- der Prozessor wird aus irgendeinem Grund dauerhaft an der Grenze 
seiner Spezifikation betrieben - manche machen dabei schlapp
---------------------

* Versorgungspannungen sind zu hoch? -> Nein, die Regler arbeiten wie 
gewünscht
* Versorgungsspannungsreihenfolge nicht eingehalten? -> Eigentlich 
schon, der LDO für VDD_A kommt vor VDD_D hoch. Vielleicht ist das 
kritisch?
* 5V an bloß 3.3V kompatiblen Pins? -> nicht mehr - war vorhanden, alle 
Boards wurden aber vor der ersten Bestromung gepatcht.
* zu hoher Strom aus einem der Pins gezogen? -> höchster Strom ist ca. 
5mA zum treiben von LEDs


---------------------
- der Prozessor wird während des Testens zufällig ungünstigen 
Bedingungen ausgesetzt - er geht dabei kaputt
---------------------

* Vielleicht gibt es Probleme mit ESD? -> Bestückungsprozess ist 
zertifiziert, Testing findet mit ESD-Matte und Armband statt. Boards 
sind in ESD-Folie versandt worden
* Ggf. wird der Prozessor über den Programmer mit Strom versorgt bevor 
die Versorgungsspannung anliegt? -> SWDIO liefert 3V3 und es kann nicht 
ausgeschlossen werden, dass Versorgunggspannung immer vor dem Programmer 
angesteckt wurde.


Ich weiß nicht weiter wie ich hier systematisch eingrenzen soll. Ich 
kann nur erneut eine Probe von 30 Boards in Betrieb nehmen und dabei die 
Steckreihenfolge  von Power und Programmer beachten.

So ein Mist!

von Gebhard (Gast)


Lesenswert?

Ich verwende den STM32F103 und hab auch getrennte Verorgungen, die aber 
mit 2 antiparallelen Schottkys zwischen den Versorgungen niemals mehrt 
als 300mV voneinander abweichen, so sollte es laut Datenblatt auch sein. 
Da gab's bis jetzt noch nie Probleme. Wenn ich da weiters lies, dass die 
digitalen I/O's nur auf 2,8V bei 3,3V Nominal-Versorgung kommen, wird 
wohl auch die digital-Versorgung in die Knie gehen.Spricht schon 
irgendwie für ein internes Latch up der CPU. Probier das mal mit den 
Dioden, kostet ja nicht viel.
Grüsse

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> Ich weiß nicht weiter wie ich hier systematisch eingrenzen soll. Ich
> kann nur erneut eine Probe von 30 Boards in Betrieb nehmen und dabei die
> Steckreihenfolge  von Power und Programmer beachten.
>
> So ein Mist!

Yep - fällt mir jetzt auch Nichts Besseres ein.
Außer: Ist einzugrenzen WO der Prozessor GENAU seinen Defekt hat (welche 
Peripherie Auf dem Board kann den nicht mehr angesprochen werden)?

rgds

von Jay (Gast)


Lesenswert?

Du könntest, wenn er mit dir redet, den für dich zuständigen ST FAE 
fragen, ob das Problem und seine Ursache bekannt ist.

Bei besonders guten Kunden-Hersteller Beziehungen (hängt nicht zuletzt 
von einem Umsatz mit vielen Nullen vor dem Komma ab ...), analysieren 
Hersteller auch schon mal defekte ICs für den Kunden. Wobei das bei 150 
Stück eher nicht der Fall sein wird.

von Max 1. (max123)


Lesenswert?

6a66 schrieb:
> Max 123 schrieb:
>> Ich weiß nicht weiter wie ich hier systematisch eingrenzen soll. Ich
>> kann nur erneut eine Probe von 30 Boards in Betrieb nehmen und dabei die
>> Steckreihenfolge  von Power und Programmer beachten.
>>
>> So ein Mist!
>
> Yep - fällt mir jetzt auch Nichts Besseres ein.
> Außer: Ist einzugrenzen WO der Prozessor GENAU seinen Defekt hat (welche
> Peripherie Auf dem Board kann den nicht mehr angesprochen werden)?
>
> rgds


Alles kann angesprochen werden. Das Fehlerbild noch einmal 
zusammengefasst:

- LDOs werden heiß, Prozessor wird warm
- VDD_D zieht zu hohen Strom, ca. 30-40mA mehr als normal
- Eingangsstom der analogen Eingänge wird sehr hoch (ca. 40uA anstatt 
0.2uA)
- digitale IOs kommen nicht mehr ganz hoch, nur noch bis 2.9V
- Lege ich per Discovery als Programmer einen Pegel von 3.3V an SWDIO 
bei ausgeschaltetem Board, so bricht dieser bei kaputten Boards auf 2.0V 
ein. Bei intakten Boards bleibt er bei 3.3V. Schalte ich die 
Versorgungsspannung dazu, so geht der Pegel bei de defekten Boards hoch 
auf 3.3V. Beide lassen sich programmieren.
- Von außen sehen die internen Schutzdioden in beiden Fällen 'gleich 
aus'. Ich kann die Flussspannung mit meinem Multimeter messen.


Ich habe jetzt mal 25 weitere Boards programmiert und dabei akribisch 
auf die Ansteckreihenfolge geachtet. Bei den 25 Stk. war keins defekt. 
Eine weitere Probe von 25 Stk. morgen Vormittag wird zeigen, ob das die 
richtige Richtung ist.

von Max 1. (max123)


Lesenswert?

So,

jetzt sind weitere 25 Boards programmiert und getestet, alles ohne 
besondere Vorkommnisse.

Ich denke, es lag daran, dass der Programmer mit der Baugruppe verbunden 
war, bevor Betriebsspannung anlag.

Auf dem SWDIO-Pin des Programmer liegt im Auto-Modus von STLink eine 
Spannung von 3V an, die zusammen mit der Programmermasse die gesamte 
Baugruppe über die IO-Pin-Schutzdiode (laut Datenblatt 5mA Maximalstrom) 
versorgen wollte.

Das hat anscheinend ein paar Chips nicht so richtig geschmeckt.

Jetzt wird auf die Ansteckreihenfolge geachtet und im Programmierkabel 
werden Serienwiderstände zur Strombegrenzung vorgesehen. Mal schauen 
ob's dann weiterhin schief geht.

Danke für die Denkanstöße! Sollte es sich nochmal ändern, so werde ich 
berichten.

Max

von 6a66 (Gast)


Lesenswert?

Max 123 schrieb:
> Danke für die Denkanstöße! Sollte es sich nochmal ändern, so werde ich
> berichten.

Gerne, Grüße!

rgds

von Ben (Gast)


Angehängte Dateien:

Lesenswert?

Max 123 schrieb:
> SWDIO und SWCLK werden von einem Discovery stm32f4-board im
> Automatik-Modus von ST-Link zum Programmieren benutzt. Dafür wird das
> Discovery per Stiftleiste mit dem Board verbunden.

Max 123 schrieb:
> Ich denke, es lag daran, dass der Programmer mit der Baugruppe verbunden
> war, bevor Betriebsspannung anlag.
>
> Auf dem SWDIO-Pin des Programmer liegt im Auto-Modus von STLink eine
> Spannung von 3V an, die zusammen mit der Programmermasse die gesamte
> Baugruppe über die IO-Pin-Schutzdiode (laut Datenblatt 5mA Maximalstrom)
> versorgen wollte.

Hm also bei meinem "richtigen" standalone ST-Link/V2 Programmer steht im 
User Manual:
"The power supply from the application board is connected to the 
ST-LINK/V2 debugging and programming board to ensure signal 
compatibility between both boards."
Wenn das Board nicht versorgt ist, leuchtet die ST-LINK/V2 LED orange: 
"ST-LINK/V2 communication with the target has failed."

Im ST "UM1472 User manual" (Discovery kit for STM32F407/417 lines) 
steht:
"Features: [...] On-board ST-LINK/V2 with selection mode switch to use 
the kit as a standalone ST-LINK/V2 (with SWD connector for programming 
and debugging)". Also angeblich ein richtiger ST-LINK/V2 Programmer.

Aber anscheinend ist der "VDD_TARGET" Pin beim Discovery Board 
Programmer überhaupt nicht verbunden? Siehe UM1472 "R2 not fitted". Der 
Widerstand ist auch wirklich nicht bestückt.

von Max 1. (max123)


Angehängte Dateien:

Lesenswert?

Danke Ben für die Detektivarbeit!

Ich habe zwar das STM32F429 Board mit Display, da ist es aber R13 mit 
selber Funktion - nur dass sie dort sogar den Hinweis gespart haben und 
ihn kommentarlos nicht bestückt!

Ich werde ihn mal einlöten und schauen was passiert!

von ... (Gast)


Lesenswert?

> Also angeblich ein richtiger ST-LINK/V2 Programmer.

Wenn es ein "richtiger" waer, koennte er auch STM8 programmieren.

Wenn es ein "richtiger" waer, koennte er auch JTAG und nicht nur SWD.

Es ist also kein "richtiger".

von Ben (Gast)


Angehängte Dateien:

Lesenswert?

Max 123 schrieb:
> Ich werde ihn mal einlöten und schauen was passiert!

Vermutlich nichts? Die Firmware muss das ja unterstützen.

Habe mal meinen ST-LINK/V2 aufgeschraubt (die Schrauben waren sehr gut 
versteckt unter dem Aufkleber) und da sitzt auf der Platine noch ein Bus 
Transceiver IC.

Da der ST-LINK/V2 nur 25 Euro oder so kostet, würde ich den kaufen und 
nichts mit dem Discovery Board riskieren.

von Max 1. (max123)


Lesenswert?

Naja, es hätte ja implementiert sein können. Ist es aberr nicht. 
Außerdem liegt da noch ein Spannungsteiler dran (R18/19 bzw R19/20 beim 
anderen), irgendwie komisch. Vielleicht würde es klappen wenn man den 
entfernt, ich habe es jetzt aber mal bleiben lassen und mir einen 
Link/V2 bestellt.

Merci!

von PSU korrekt (Gast)


Lesenswert?

Wenn die Linearregler für 3V3_D und 3V3_A nicht absolut die selbe 
Ausgangsspannung erzeugen, treiben sie über die PowerPins der CPU
die unnötige Leistung.

Lösung:
LinReg für VDD_A ausbauen, ferritperle von VDD_D nach AusgangsPad vom
LinReg VDD_A legen.

wenn VDD_D > VDD_A gilt : VDD_D-VDD_A / R(uC) == Fehlerstrom

Eine rauschfreie Versorgung von VDD_A macht man nicht über getrennte 
LinRegs, sondern durch Filterung und gutes Layout.

von Max 1. (max123)


Lesenswert?

Das hat mir in der Tat auch schon den Kopf zerbrochen.

In der nächsten Revision wird das auf jeden Fall so geregelt - hälst du 
es für notwendig, dass bei max. 50mV Abweichung der Regler ein solcher 
Austausch getan werden muss?

Wie würdest du eine solche Perle selektieren? Nach Durchflussstrom und 
angenommenem/gemessenem Spektrum auf den Powerlines? Gibt es eine 
Erfahrungsperle?

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


Lesenswert?

Schau im Datenblatt nach!
6.2 Absolute maximum ratings
VDD­- VDDA Allowed voltage difference for VDD > VDDA  0.4 V

Wenn allerdings die Reger beim Einschalten ungleich hochfahren, kann 
dass Problematisch sein.

Als Ferrite verwende ich z.b. BLM18RK102. Mit dem Smart Tweezer messe 
ich schon bei 10 kHz 12 uH, aus dem Datenblattdiagramm lese ich bei 1 
MHZ schon ein Z von ueber 80 Ohm ab, was in etwa den 12 uH entspricht. 
Die Perle kann 200 mA, der STM32 selbst darf hat eine Grenze von 160 mA.

von Max 1. (max123)


Lesenswert?

Dann passt doch alles, oder?

Das Datenblatt gibt vor, dass VDDA vor VDD da sein muss. Das impliziert, 
dass der Chip das verträgt, wenn VDD < VDDA.

Außerdem darf VDD um 0.4V größer als VDDA sein. Auch das ist der Fall.

Die Einschaltreihenfolge ergibt sich korrekt aus den kapazitiven Lasten, 
VDDA ist schneller als VDD.

STM schlägt in ihrer APP Note zu Noise Reduction on ADCs einen seperaten 
LDO vor.

Daher meine Verwunderung  und die Frage, ob es geändert werden muss.

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


Lesenswert?

Max 123 schrieb:
> Dann passt doch alles, oder?
>
> Das Datenblatt gibt vor, dass VDDA vor VDD da sein muss. Das impliziert,
> dass der Chip das verträgt, wenn VDD < VDDA.
>
> Außerdem darf VDD um 0.4V größer als VDDA sein. Auch das ist der Fall.
>
> Die Einschaltreihenfolge ergibt sich korrekt aus den kapazitiven Lasten,
> VDDA ist schneller als VDD.
>
Dann ist aber beim Ausschalten VDD noch nach VDDA da...

von PSU korrekt (Gast)


Lesenswert?

statt zu theoretisieren einfach eine Drahtbrücke wie beschrieben auf 
einer Platine mit hohem Fehlerstrom einlöten und das Ergebnis 
begutachten.
Ein Ferrit 0603/0805 mit 600@100MHz oder 1000@100MHz ist ein gern 
genommener Wert.
Ein schlechtes Layout versaut aber jeden Analogpfad.  Aber erstmal den 
Fehlerstrom in den Griff kriegen ist Schritt 1.

von PSU korrekt (Gast)


Lesenswert?

>hälst du es für notwendig, dass bei max. 50mV Abweichung
>der Regler ein solcher Austausch getan werden muss?

mal sehen, U/I=R

0,05V/0,03A= 1,7 Ohm für den Widerstand der Strompfade in der CPU
Klingt erst mal plausibel.

von PSU korrekt (Gast)


Lesenswert?

ach ja, Ohmmeter zwischen 2 VDD_D Pins oder einem VDD_D und VDD_A Pin 
zum Prüfen der Theorie ...
uC natürlich nicht in einer Schaltung eingebaut ...

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.