Forum: Mikrocontroller und Digitale Elektronik STM32 swd probleme


von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

Ich habe mal ein neues Projekt mit einem STM32 designed, welchen ich 
schon mehrmals in dieser Konfiguration verwendet habe, jedoch macht mir 
diesmal das flashen probleme über swd. Auch der STLink scheint da 
manchmal die Verbindung zu verlieren, wenn ich über das ST-Link Utility 
connecte. Weiterhin habe ich einen komischen Effekt and den Pins PA15 
und PB5, welche bei einem neuen Chip direkt auf 3.3V sind statt 0V. ESD 
schaden kann ich ausschliessen und ich habe auch schon ein zweites PCB 
gelötet und den STM32 mehrmals ausgetauscht, leider immer noch dieser 
komische effekt.

Momentan habe ich nur die Spannungsregler sowie die Komponenten für den 
uC auf ein neues Board gelötet, immer noch mit den selben Problemen.

Die Boardspannung ist stabil und es konnten mit dem Oszi und dem Trigger 
keine Einbrüche registriert werden.

Die SWD Leitungen sind etwas lang, daher habe ich auch die Frequenz auf 
25khz gesetzt, trotzdem kann ich nur manchmal connecten und flashen geht 
nur selten. Weiter kann ich debuggen komplett vergessen.

Hat jemand eine Idee was genau da schief geht? Der STLink V2 scheint 
auch nicht kaputt zu sein, da ich mein altes Board mit gleichem Design 
für den STM32 sofort flashen kann.

Grüsse Bert

: Bearbeitet durch User
von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

Hier nochmal das Schema vom uC mit besserer Auflösung

: Bearbeitet durch User
von Dr. Sommer (Gast)


Angehängte Dateien:

Lesenswert?

Wo sind die 4,7µF und 1µF -Entkopplungs-Kondensatoren die das Datenblatt 
verlangt?

von Joe F. (easylife)


Lesenswert?

Das Layout ist unterirdisch.
Insbesondere der 24V->12V Stepdown.
Guck dir mal die Strompfade und GND an.

von Bert S. (kautschuck)


Lesenswert?

Joe F. schrieb:
> Das Layout ist unterirdisch.
> Insbesondere der 24V->12V Stepdown.

Das mag ja schon sein, ich bin noch nicht wirklich gewannt im Layout 
Design. Ich wäre auch froh wenn jemand erwähnen würde was nicht gut ist, 
statt nur zu sagen es ist nicht gut. Die Spannungen sind aber alle 
stabil, daher sollte dies nicht die Ursache des Problems sein.

Dr. Sommer schrieb:
> Wo sind die 4,7µF und 1µF -Entkopplungs-Kondensatoren die das Datenblatt
> verlangt?

Im Design habe ich mich am STM32F3 Discovery orientiert, wobei hier auch 
keine 4.7uF verwendet wurden, was aber wohl ein Fehler war. Jedoch hat 
bei mir genau das selbe Design auch schon auf einem anderen Board 
problemlos funktioniert.

von Dr. Sommer (Gast)


Lesenswert?

Halt vielleicht mal ein schnelles Oszilloskop an die Versorgungs-Pins 
vom Controller. Während des Flashens braucht der ja schon eine Menge 
Strom - wenn da die Versorgung strauchelt, könnte es schief gehen.

von Uhrmacher (Gast)


Lesenswert?

Bert S. schrieb:
> Ich wäre auch froh wenn jemand erwähnen würde was nicht gut ist

Wer meint dass es genügt einfach alle Leitungen im Layout
zu verbinden die der Schaltplan diktiert der muss noch viel
dazulernen. Das "Erwähnen" ist in wenigen Sätzen nicht getan.

Bert S. schrieb:
> ich bin noch nicht wirklich gewannt im Layout

--> gewandt!

Bert S. schrieb:
> voltageRegulator.png

(auch) ein Schaltregler braucht an seinem Eingang einen
dicken Elko damit er stabil ausregeln kann. Einfach mal
(ausnahmsweise) aus dem Datenblatt spicken.

von Dr. Sommer (Gast)


Lesenswert?

Uhrmacher schrieb:
> (auch) ein Schaltregler braucht an seinem Eingang einen
> dicken Elko

Er hat 680µF (CC3)... Sollte reichen oder?! Funkt bestimmt lustig beim 
Anschließen

von Uhrmacher (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Er hat 680µF (CC3)... Sollte reichen oder?

Ja reicht.
Ich habe durch den milchigen Schaltplan 680 Nanofarad gelesen.

Der zweite Regler hat nur 1uF.

von Gerd E. (robberknight)


Lesenswert?

Bert S. schrieb:
> Jedoch hat
> bei mir genau das selbe Design auch schon auf einem anderen Board
> problemlos funktioniert.

Wenn Du außerhalb der Spec bist, kann es durch glückliche Umstände 
natürlich dennoch funktionieren. Da reicht dann andere 
Temperatur/Luftfeuchtigkeit, oder minimal andere Bauteile aus einer 
anderen Charge und schon geht es nicht mehr.

Mit den Werten aus dem Datenblatt bist Du auf der sicheren Seite.

Alternativ kann man aufwendige Tests machen um sicherzustellen, daß ein 
Design zuverlässig funktioniert, auch wenn man andere Werte als im 
Datenblatt verwendet. Das ist aber definitiv viel viel mehr Arbeit als 
nur ein paar Testboards zu nehmen und sagen "dort geht es -> passt".

von fft (Gast)


Lesenswert?

Layout ist aber auch echt mies.

Fangen wir mal von der uC-Seite an:

http://www.st.com/resource/en/application_note/dm00089834.pdf

Nicht nur lesen, sondern auch VERSTEHEN und ANWENDEN :-)

Die schönen Bilder z.B. wie man die Abblockung anbindet sind nicht 
umsonst darin enthalten...

Das selbe dann bei allen anderen ICs.

von Bert S. (kautschuck)


Lesenswert?

Vom uC her ist mir schon klar, dass da noch einiges fehlt. Ich habe mich 
leider nicht am application note orientiert. Vor allem die Schottky 
Diode wäre sicher nicht schlecht gewesen. Bei den anderen IC's habe ich 
mich am Datenblatt orientiert, das sollte so schon passen.

Das Layout hier ist mir nicht wirklich gelungen, obwohl sicher die 
Anordnung der Teile nicht schlecht ist. Die Leistungskomponenten sind 
nahe bei der Quelle und GND geht in zwei Strängen von der Quelle weg, 
also ein sternförmiger Massenanschluss. Abblockkondensatoren sind nahe 
beim uC, jedoch fehlen hier die 1uF und die 4.7uF. Die Signalleitungen 
liegen fast alle parallel. Die Leitungen für die Spannungsregler sind 
mir zu dünn geraten. Was aber macht es sonst noch zu einem schlechten 
Design?

: Bearbeitet durch User
von Lama (Gast)


Angehängte Dateien:

Lesenswert?

Profis arbeiten halt nicht so...

Erst einlesen und wissen was man tut und dann erst anfangen zu zeichnen 
bzw. zu layouten.

Selbst unter Zeitdruck ist diese Vorgehensweise anzuraten, damit 
Hardware nicht nur manchmal funktioniert :-)

Anbei ein Beispiel wie man sowas machen könnte. Ist auch ein 
zweiseitiges Layout.

Abblockkondensatoren NAHE am IC, die Versorgung MUSS durch die 
Kondensatoren laufen.

Preisfrage(n): wie verhalten sich die Abblockkondensatoren bei dir im 
Layout (insbesondere C3)? MUSS da der hochfrequente Strom durch (wieder 
C3)? Wie wirksam sind die Kondensatoren in dieser Entfernung (beide)? 
Wie sehen deine Rücklaufpfade insgesamt aus (du baust halt mit deinem 
Layout riesige Schleifen, sowas sorgt für lustige Effekte während der 
EMV-Messung)?

Jetzt aber genug gemeckert. Mit einem AVR hätte dein Layout vermutlich 
problemlos funktioniert, aber ein Cortex-M ist halt ein anderes Kaliber 
wenn man es gescheit machen will.

von Lama (Gast)


Lesenswert?

Bert S. schrieb:
> Was aber macht es sonst noch zu einem schlechten
> Design?

In meinen Augen noch eine ganze Reihe, aber das ist sehr von 
persönlicher Vorprägung abhängig. Bei uns machen wir halt oft schnellere 
Sachen und für jedes Produkt eine komplette CE.

Solange es bei euch in der Firma OK ist, passt es doch.

von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

So, ich habe mal die Komponenten neu geordnet und die Kapazitäten für 
VDD1 und VDD2 unterhalb des Bordes gebracht. Weiter habe ich nun einen 
4.7uF und einen 1uF für VDD bzw VDDA hinzugefügt gemäß application note. 
Denkt ihr das wird so besser? Würdet ihr die Schottky hinzufügen 
zwischen VDD und VDDA? Ich verwende keinen ADC bei diesem System und mir 
ist auch schon auf dem Discovery aufgefallen, das die Schottky eher 
hinderlich ist, da sie temperaturabhängig ist.

Beim Routen werde ich diesmal mit Ground und VCC anfangen und auf eine 
sternförmige, schleifen-lose Masseverteilung achten.

von Cyblord -. (cyblord)


Lesenswert?

Bert S. schrieb:
> Das mag ja schon sein, ich bin noch nicht wirklich gewannt im Layout

Rechtschreibung scheint aber auch nicht gerade dein Steckenpferd zu 
sein.

von Joe F. (easylife)


Lesenswert?

Die Komponenten, die zum Step-Down gehören über das halbe Board zu 
verstreuen ist einfach ganz schlecht.
Guck mal ins Datenblatt vom LM2596.
Da wird das mit der Notwendigkeit von kurzen Power (und GND) Pfaden 
erklärt, und ein Beisspiellayout gibt es auch.
Vergleiche es mit deiner "Arbeit".
Die Wahl (Package -> Platzverbrauch, Stromstärke) von D2 solltest du 
auch nochmal überdenken.

Idealerweise routest du das Board so, dass du auf der Unterseite eine 
durchgängige GND Plane hast, und oben alle Signale sind.
Für Kreuzungen geht man mit einem möglichst kurzen Stück Leiterbahn auf 
die Unterseite, ohne die GND Plane dadurch wesentlich zu zerstückeln.

von Lama (Gast)


Lesenswert?

Joe F. schrieb:
> Die Komponenten, die zum Step-Down gehören über das halbe Board zu
> verstreuen ist einfach ganz schlecht.
> Guck mal ins Datenblatt vom LM2596.
> Da wird das mit der Notwendigkeit von kurzen Power (und GND) Pfaden
> erklärt, und ein Beisspiellayout gibt es auch.

Höre auf Joe, der Mann hat Recht! Kopiere einfach das Beispiellayout. 
Irgendwie Leitungen zu verbinden ohne einen Plan dahinter funktioniert 
bei einem Schaltregler nie.

Joe F. schrieb:
> Idealerweise routest du das Board so, dass du auf der Unterseite eine
> durchgängige GND Plane hast, und oben alle Signale sind.

Das wäre zwar ideal, aber praktisch oft nicht durchführbar bei zwei 
Lagen. Route daher so, dass du Vcc und GND immer schön nebeneinander 
ziehst und nach Abschluss der Arbeiten Top + Bot mit Masse flutest und 
ordentlich durchkontaktierst (via-stitching).

Joe F. schrieb:
> Für Kreuzungen geht man mit einem möglichst kurzen Stück Leiterbahn auf
> die Unterseite, ohne die GND Plane dadurch wesentlich zu zerstückeln.

Problem ist hierbei der zwangsläufig entstehende Schlitzstrahler, da der 
Rücklaufpfad an dieser Stelle unterbrochen wird und der Rückstrom eine 
Schleife aufbaut. Mit Erfahrung geht es, da hat man ein Aufge dafür ob 
es mit dem speziellen Signal OK ist oder nicht. Habe aber schon selber 
etliche Boards gesehen, die genau wegen dieser Routingstrategie 
durchgefallen sind. Also nichts für wenig erfahrene Layouter (da würde 
ich dich jetzt anhand des Boards grob einstufen)

Paar Tipps zum Routen:

1. einzelne Blöcke bilden (uC, Schaltregler, etc). Diese zuerst für sich 
platzieren und layouten und dann erst alles zusammenfügen.
2. beim uC zuerst die Abblockung platzieren, dann alle benötigten 
Leitungen erstmal als Dummy rausziehen. Leitungen so legen, dass die 
Abblockung möglichst nahe ans IC kommt. Jetzt als erstes Abblockung 
routen (mit Vcc + GND auf Bot zu den Vias an den Abblockkondensatoren). 
Abschließend diesen Block auf der Platine platzieren und mit dem Rest 
verbinden.
3. Zeit in die optimale Platzierung investieren, es zahlt sich IMMER 
aus!

Gutes Gelingen!

von Lama (Gast)


Lesenswert?

Wenn du schon beim Redesign bist: spendiere doch mal dem armen UART ein 
GND-Signal...

von Dr. Sommer (Gast)


Lesenswert?

Bau doch auch nen Quarz oder Keramik Oszillator ein, der UART wird sich 
bedanken. Genug Platz ist doch... wenn's dir zu teuer ist mach 
wenigstens ne Bestückungs Option.

von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

Hi Leute, danke für die vielen Tipps. Ich habe mal versucht so viel wie 
möglich umzusetzen, hoffentlich klappt es diesmal mit dem uC. Die 
Abblockkondensatoren sind diesmal direkt unter dem uC.

Den UART brauche ich nur zum debuggen oder zum flashen, daher verwende 
ich nicht noch zusätzlich einen Quarz.

von Dr. Sommer (Gast)


Lesenswert?

Bert S. schrieb:
> Den UART brauche ich nur zum debuggen oder zum flashen, daher verwende
> ich nicht noch zusätzlich einen Quarz.

Auch Debuggen geht ggf. nicht ohne Quarz. Immer diese falsche 
Sparsamkeit.

von Joe F. (easylife)


Lesenswert?

Bert S. schrieb:
> Ich habe mal versucht so viel wie
> möglich umzusetzen

:-)

Freut mich immer zu sehen, wenn Leute schnell lernen und die gegebenen 
Tipps gleich in so vorbildlicher Weise umsetzen.
Den Unterschied der 2 Layouts erkennst du ja selbst ;-)

von Lama (Gast)


Angehängte Dateien:

Lesenswert?

Hi Bert,

mach doch mal bitte einen Bildausschnitt vom uC bitte, in deinem Bild 
erkennt man nicht so viel.

Die drei TOP-Leitungen im Bild kannst du etwas weiter rechts ziehen, 
dann sparst du dir die Durchkontaktiererei und machst dein Groundplane 
robuster.

von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

Lama schrieb:
> Die drei TOP-Leitungen im Bild kannst du etwas weiter rechts ziehen,
> dann sparst du dir die Durchkontaktiererei und machst dein Groundplane
> robuster.

Da hast du natürlich recht :)

Ich habe mal eine neue Ansicht hochgeladen. Die Abblockkondensatoren für 
VDD und VDDA sind nun unter dem Board. Weiter habe ich noch einen Quartz 
Oszillator hinzugefügt.

von Johnny B. (johnnyb)


Lesenswert?

Bert S. schrieb:
> Quartz Oszillator

Unter diesem Begriff versteht man üblicherweise eine aktive Komponente, 
die gespiesen werden muss und dann das Taktsignal rauskommt.

Was Du verbaut hast ist einfach ein normaler Quarz, was auch gut so ist.

von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

Ich habe heute das neue Board bekommen, leider genau das gleiche Problem 
wie beim letzten Board - Keine Verbindung zum Board über SWD möglich. 
Die Spannungen sind stabil und es ist nur das nötigste angehängt. Am 
STLink V2 kann es nicht liegen, da dieser bei einem anderen Board mit 
dem gleichen Prozessor tiptop funktioniert. Was kann das sein? Ich bin 
da wirklich langsam am verzweifeln. Es ist ja momentan nur der 
Spannungsregler sowie der STM32 mit den wichtigsten Komponenten 
verschaltet.

von Curby23523 N. (Gast)


Lesenswert?

Wenn die Spannung am µC stimmt, dann löte doch einfach mal GND, SWDIO, 
SWCLK, NRST und VDD direkt an die Pins vom µC.

Ich hatte mal ein ähnliches Problem. Nach dem ersten mal Programmieren 
ging nichts mehr. Im Endeffekt hatte ich als Testprogramm einen UART 
Poll gemacht. Die hohe frequenz auf der UART hat die GND Leitung versaut 
und dashat dann den Programmer gestört - schlechte Masseführung. GND 
Leitung direkt an den Programmer und es lief wieder.

Man kann sich eben auch auf anderen Wegen ausschliessen.

von Bert S. (kautschuck)


Lesenswert?

Ok, ich habe das Problem gefunden, beim Labeln habe ich SWDIO und SWCLK 
vertauscht. Danke euch, es lag wirklich nur am Design, dass es beim 
letzten Mal nicht funktioniert hatte.

von Dr. Sommer (Gast)


Lesenswert?

Mal mit Oszilloskop an den SWD-Leitungen gemessen? Sicher dass der 
Controller richtig rum gelötet ist - manchmal ist nicht genau zu 
erkennen, welcher Kreis die Pin-1-Markierung ist und welcher von der 
Gehäuse Herstellung stammt... Mal nen anderen Debugger wie den J-Link 
probiert der detailliertere Fehler Meldungen ausgibt? Sicher dass der 
Controller intakt ist, nicht einfach von der alten Platine runter 
gelötet? Die gehen bei  manueller Behandlung erfahrungsgemäß gerne mal 
kaputt (ESD), auf manchen Platinen bei uns funktionierte erst das 3. 
Exemplar...

von Och nöö (Gast)


Lesenswert?

Bert S. schrieb:
> beim Labeln habe ich SWDIO und SWCLK
> vertauscht.

Och nöö!

Bert S. schrieb:
> Das mag ja schon sein, ich bin noch nicht wirklich gewannt im Layout
> Design.

Bestätigt mir wieder mal mein Vorurteil dass die Beherrschung
der Sprache immer ein Hinweis darauf ist welche Qualifikation
zu "erwarten" ist ....

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.