Forum: Mikrocontroller und Digitale Elektronik STM32f030F4 eigene PCB


von Andreas L. (drewle)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mir eine kleine Platine für einen STM32f030f4 gemacht.
Leider funktioniert sie nicht. Ich habe jetzt schon die 2. aufgebaut, 
kann aber nicht mit meinem Debugger drauf zugreifen. (STLink V2, 
China-Klon)

* Was ist das mindeste, was man braucht, damit der Controller 
funktioniert?
* Habe ich was übersehen? (Schaltplan im Anhang.)
* Muss ich noch irgendwas mit den Chips machen, befor ich darauf 
zugreifen kann?

Aktuell habe ich folgendes bestückt:
* R3: 0 Ohm (Anders als im Schaltplan)
* C4: 100 nF
* R6: 0 Ohm
* R5: 10 kOhm
* C1: 100 nF
* Quarz mit C's ist nicht bestückt.

Die Chips habe ich neu bei Reichelt gekauft. Die sind also nicht mit 
ergendwas bespielt und sollten zumindest funktioniert haben, bevor ich 
sie aufgelötet habe. ;-)

Debugger geht auch. Ich habe noch eine Platine mit dem STM32F030 von 
Ebay die mit dem Debugger gehen.

Danke schon mal,
Drewle

von Teo D. (teoderix)


Lesenswert?

Sowas verträgt kein krudes Layout. Zeig mal.

von Oliver R. (orb)


Lesenswert?


von Vanye R. (vanye_rijan)


Lesenswert?

Es fehlt ein Pulldown an Boot0. Ausserdem kann es sein das deine 100nF
an Reset viel zu gross sind. Dein Debugger muss mit der Leitung 
rumwedeln
koennen und da gibt es Grenzen. Ich hab da 1.8nF und kein Pullup.

Vanye

von Max (max_u)


Lesenswert?

Boot0 ist doch mit 10k am Connector direkt neben gnd und 3.3V. Das ist 
sicherlich für nen Jumper gedacht.

von Bauform B. (bauformb)


Lesenswert?

Vanye R. schrieb:
> Ausserdem kann es sein das deine 100nF an Reset viel zu gross sind.
> Dein Debugger muss mit der Leitung rumwedeln koennen

Naja, ST empfiehlt 100nF. Wenn der Debugger das nicht schafft, ist der 
schuld. Außerdem ist ein Pull-Up eingebaut, also würde ich R5 weg 
lassen.

Aber hier ist das egal, weil NRST sowieso nicht am Debug-Stecker 
angeschlossen ist :) Das würde ich ändern, irgendwann braucht man die 
Funktion doch mal. Es gibt so einen schönen, quasi genormten 
Debug-Stecker. Warum benutzt den niemand?

Teo D. schrieb:
> Sowas verträgt kein krudes Layout. Zeig mal.

Und den Rest der Schaltung. Wer weiß, was an PA13 un PA14 dran hängt.

von Ralph S. (jjflash)


Lesenswert?

Max schrieb:
> Boot0 ist doch mit 10k am Connector direkt neben gnd und 3.3V. Das ist
> sicherlich für nen Jumper gedacht.

... und dieser Jumper muß dann auf GND gesteckt sein. Die 100nF am Reset 
sind wirklich etwas groß, sollten aber nicht wirklich das Problem sein. 
Zur Ursachenforschung kann der auch mal entfernt werden.

Ich werkel hier momentan gerade selbst an einem F030F4 und habe das 
gerade eben ausprobiert. Kein Quarz, Vdd und Vdda beide auf +3.3V, Boot0 
mit 20k gegen GND (10k sollten aber eher besser sein) und China-Clone 
angesteckt: funktioniert.

Unter Linux mit st-flash (opensource)

https://github.com/stlink-org/stlink

und mit STM32_Programmer_CLI (aus CubeProgrammer).

(und wie ich das schreibe habe ich auch noch meinen J-Link von Segger 
angestöpsel und funktioniert auch).

Zeig mal dein Layout!

(und auch wenn ich das nicht gerne sage -in der Hoffnung dass du das 
schon 1000 mal geprüft hast: Kurzschluß an SWDIO und SWCLK ist 
auszuschließen? Verbindung zum Controller vorhanden?)

von Ralph S. (jjflash)


Lesenswert?

Bauform B. schrieb:
> Wer weiß, was an PA13 un PA14 dran hängt.

na ja, da darf zum Testen erst einmal gar nichts ausser dem ST-Link 
dranhängen

von Bauform B. (bauformb)


Lesenswert?

Ralph S. schrieb:
> Die 100nF am Reset sind wirklich etwas groß, sollten aber nicht
> wirklich das Problem sein. Zur Ursachenforschung kann der auch
> mal entfernt werden.

Nein. Sinnloser Aktionismus. Es ist sogar denkbar, dass es wegen R5 
trotz 100n nicht funktioniert. Der 100n erzeugt zusammen mit dem 
internen Pull-Up (typ. 40k) eine Einschaltverzögerung. Mit 10k parallel 
wird die im Extremfall zu kurz. Und ohne 100n natürlich sowieso.

von Gerd E. (robberknight)


Lesenswert?

Die 100nF am Reset sind vollkommen normal und von ST extra empfohlen. 
Die setze ich immer.

Was man noch mal testen könnte: die Stromaufnahme anschauen. Einmal mit 
Boot0 auf Bootloader und dann mit Boot0 auf Flash. Dann vergleichen. Da 
sollte bei leerem Flash eine unterschiedliche Stromaufnahme zwischen den 
beiden Fällen zu messen sein. Größenordnung um die 10 mA.

von Vanye R. (vanye_rijan)


Lesenswert?

> Es gibt so einen schönen, quasi genormten
> Debug-Stecker. Warum benutzt den niemand?

Es gibt viele "genormte" Debugstecker. Der beste ist wohl der hier:

https://developer.arm.com/documentation/101416/0100/Hardware-Description/Target-Interfaces/Cortex-Debug--10-pin-

Dann jammern aber hier wieder alle, uih...so klein..das mag ich nicht...

Vanye

von Andreas L. (drewle)


Angehängte Dateien:

Lesenswert?

Hallo,
danke für die schnellen Antworten! :-)

Ich habe mal die Gerber Daten angehängt. An den Pins ist nirgendwo was 
angeschlossen. Nur die Brücke von Boot0 auf GND ist drin.

Ich habe auch mal den Pullup am RST weggelasen. Das ergab das gleiche.

Weiß jemand, ob VDD und VDDA verbunden sein muss? (Ich glaube beim 
STM32F103 / Bluepill geht der Debugger nicht, wenn analog Versorgung 
nicht angeschlossen ist.)

Stromaufnahme muss ich nochmal testen.

Gruß,
Drewle

von Bauform B. (bauformb)


Lesenswert?

Bei den (fast?) allen STM32 muss VDDA immer angeschlossen sein. Und bis 
auf wenige Sonderfälle muss VDDA = VDD ±50mV sein. Damit werden z.B. die 
Oszillatoren oder die Reset-Logik versorgt.

von Vanye R. (vanye_rijan)


Lesenswert?

> Ich habe mal die Gerber Daten angehängt.

Weisst du, DU willst das andere dir helfen. Es gehoert also zu deiner 
Bringschuld es diesen anderen relativ leicht zu machen. Also waere es 
ein Anschein von Klugkeit das du Bilder bereitstellst die einfach so 
aufploppen wenn einer drauf klickt. Keiner MUSS dir helfen oder?

> Weiß jemand, ob VDD und VDDA verbunden sein muss? (Ich glaube

Ich glaube du muesste auch mal Datenblaetter lesen. Und zwar zuerst, am 
Anfang eines Projektes!

Vanye

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Angehängte Dateien:

Lesenswert?

Andreas L. schrieb:
> Stromaufnahme muss ich nochmal testen.

Du solltest nicht nur Strom, sondern auch die Spannungen an den 
relevanten Pins des µControllers messen. Irgendwo hast Du einen Wurm 
drin, denn es muss laufen. 10k und 100nF am Resetpin sind Standard, so 
konzipiere ich das bei jedem STM32-Entwurf, ganz egal, ob F030, F303, 
F411, F446, G431/441 oder H7. Boot0 sollte auf Low und VDDA sollte man 
auf den Spannungspegel von VDD bringen, also VDDA=VDD. Ferner sollte man 
nicht an Abblockkondensatoren sparen – nur einmal 100nF für ein µC-Board 
ist Dünnschiss. Normalerweise verwendet man Paare 100nF+4,7µ (ich 
verwende 100nF+10µF) an den Spannungsversorgungspins des µC und am VDDA 
sollten auch welche verbaut sein (10nF+1µF) – das ganze macht man 
kupfermäßig in Low-Impedance, Dein Layout mit diesen dünnen Leiterbahnen 
an den Stromversorgungsschienen ist nicht besonders gut – eigentlich 
gibt es hier keine Stromversorgungsschienen, aber das ist nicht die 
Ursache für Dein jetziges Problem. Datenblatt studieren! Eigentlich 
Datenblätter, denn beim STM32 sind es so einige, die man für jede Serie 
immer griffbereit haben muss. Bei den AVRs hat man quasi alles in einem 
Dokument, hier ist das anders und auch viel umfangreicher.

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

Chip richtig herum eingelötet? Auch so einen trivialen Fehler gab es 
hier schon.

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

J. S. schrieb:
> Chip richtig herum eingelötet? Auch so einen trivialen Fehler gab es
> hier schon.

Möglich wäre auch ein Dreher von SWDIO und SWCLK mit Dupontkabeln oder 
fehlende Masseverbindung oder doch Probleme mit dem ST-Link-Klon. 
Eigentlich sollte jeder in der Lage sein, sein Layout vollständig auf 
Richtigkeit überprüfen zu können, notfalls muss man alle Leiterbahnen 
und Verbindungen nochmal durchgehen, durchmessen und vor allem mit dem 
Pinout aus dem Datenblatt vergleichen, denn fremde CAD-Bibliotheken 
können auch mal Fehler enthalten.

: Bearbeitet durch User
von Zino (zinn)


Lesenswert?

Bauform B. schrieb:
> Und bis
> auf wenige Sonderfälle muss VDDA = VDD ±50mV sein. Damit werden z.B. die
> Oszillatoren oder die Reset-Logik versorgt.

Zufällig lese ich gerade das STM32L433-Datenblatt, das ist so ein 
Sonderfall: Dort ist VDDA von VDD unabhängig, wenn VDD ≥ 1 V ist.

von Gregor J. (Firma: Jasinski) (gregor_jasinski)



Lesenswert?

Zino schrieb:
> Zufällig lese ich gerade das STM32L433-Datenblatt, das ist so ein
> Sonderfall: Dort ist VDDA von VDD unabhängig, wenn VDD ≥ 1 V ist.

Mit einem Konzept unterschiedlicher Spannungen an VDD und VDDA (also VDD 
ungleich VDDA) schafft man sich zusätzliche Probleme beim Design, denn 
es müssen dann in der Regel gewisse zeitkritischen Bedingungen/Zustände 
eingehalten/vermieden werden, damit es nicht zu einem Schaden kommt. Das 
gilt insbesondere beim Netzteilstart und Abschaltung aller Spannungen – 
die Schaltung wird deutlich komplexer und fehleranfälliger, denn man 
muss dann gewisse Spannungsrampen bzw. es muss dann eine bestimmte 
Sequenz beim Ein- und Abschalten dieser Spannungen eingehalten werden - 
in der Regel trapezförmig. Mit der harten Verbindung VDD=VDDA 
unterbindet man von vornherein so eine Spannungsakrobatik beim Ein- und 
Ausschalten und ist somit aus der Nummer fein raus. Wenn man für den ADC 
eine separate Spannung benötigt, sollte man lieber zu einem STM32 
greifen, wo z.B. VREF+ und VREF- nach außen herausgeführt und nicht wie 
sonst üblich intern direkt mit VDDA und VSSA verbunden sind – damit geht 
es etwas leichter und man hat dann auch gleichzeitig die Störeinflüsse 
der VDDA-Schiene nicht mehr auf der Referenzspannung des ADCs oder 
sonstiger Peripherie, die damit auch angetrieben wird. Gut gemacht wird 
es aber nur dann, wenn man das Leiterplattendesign adäquat beherrscht 
und wie bereits erwähnt – die nötigen, unterschiedlichen 
Abblockkondensatoren verwendet, denn nur so kann man das 
Frequenzspektrum besser abdecken; hier spielt auch die Größe der 
Bauteile eine wichtige Rolle, also ob z.B. 0402, 0603, 0805 oder 1206 
bei den MLCC-Kondensatoren gewählt wird; auch das Dielektrikum spielt 
eine gewisse Rolle.

Aber wird sind hier erstmal bei der Erstinbetriebnahme eines F030F4, um 
von ihm überhaupt ein Lebenszeichen zu bekommen, und nicht bei der L4- 
oder H7-Serie etc.

von Vanye R. (vanye_rijan)


Lesenswert?

Ich stimme dem was Gregor da oben schreibt zu 100% zu! VIelleicht 
nochmal etwas zu praktischen Einordnung.

Wenn man nur irgendwas so lalla messen will, sagen wir mal die 
Batteriespannung seines AKkus oder so, einfach beides Vccs verbinden und 
fertig.

Sind die Ansprueche etwas hoeher, oder auch einfach nur aus Prinzip weil 
es nix kostet, an jedem Anschluss das an Kapazitaet was der Hersteller 
vorschlaegt. Also 100nF oder vielleicht auch 1uF. Dies in 0603 oder 
kleiner. Beide Spannungen dann entweder ueber eine 100MHz Induktivitaet 
oder einen Widerstand (1R, 10R) zusammenfuehren.

Will man noch mehr erreichen dann sollte man sich irgendwann auch mal 
die Frage stellen wieso es ueberhaubt externe ADCs gibt. .-) Die benutzt 
man ja nicht aus Spass, sondern weil sie besser sind. Und sie 
entschaerfen auch die Layoutproblematic weil man analog und digital auf 
der Platine besser trennen kann.

Vanye

von Gregor J. (Firma: Jasinski) (gregor_jasinski)



Lesenswert?

Hier noch ein Schaltplan mit einem F030CC – ich verwende oft eine mit 
einem SMD-Jumper optional überbrückbare Ferritperle als SMD-Chip im 
VDDA-Pfad eines STM32, um hier eine Verbindung zwischen VDD und VDDA zu 
schaffen, aus Designgründen geht es aber nicht immer in den Entwürfen, 
da muss man dann irgendeinen Kompromiss machen – das ist aber überall 
so, dass man Kompromisse eingehen muss. Platinen für LQFP32 und LQFP64 
für diverse µC gibt es auch, offiziell für die in TSSOP20 wird es die 
auch bald geben – sowohl für die alte F-Serie als auch für die neuere 
Serien. Für ein gutes Platinendesign braucht man natürlich eine 
ordentliche Portion Wissen und einige Jahre Erfahrung beim Entwerfen, 
das kann man sich nicht einfach so in zwei Stunden aus den Ärmeln 
schütteln, aber irgendetwas auf die Schnelle machen sollte machbar sein, 
vor allem mit einem TSSOP20 oder LQFP32. Wer einen Autorouter in der 
üblichen, zivilen Form für sein Layout einsetzt und quasi alles von dem 
machen lässt, ist selber schuld und was dieser dann anrichtet, wird man 
spätestens im richtigen Betrieb mit entsprechenden Frequenzen zu spüren 
bekommen. Für das Blinken mit einer LED und ein bisschen Herumspielen 
reicht so ein Design vom Autorouter in der Regel auch aus, wenn quasi 
alle Leiterbahnen mit einer Breite kreuz, quer, über Vias und unter den 
Teilen vom Computer gemacht werden. Ich mache allerding alles von Hand, 
das Kupferbild wird quasi wie ein Kunststück bis ins Detail modelliert – 
was natürlich sehr viel Zeit und Arbeit erfordert, aber man macht es in 
der Regel nur einmal, insofern lohnt es sich und macht am Ende mehr 
Sinn.

: Bearbeitet durch User
von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Gregor J. schrieb:
> Für ein gutes Platinendesign braucht man natürlich eine
> ordentliche Portion Wissen und einige Jahre Erfahrung beim Entwerfen

Wobei die Mitglieder des Forums sehr gut mit helfen, wenn man nur 
höflich fragt und keine Staatsgeheimnisse hütet.

von Vanye R. (vanye_rijan)


Lesenswert?

> Für ein gutes Platinendesign braucht man natürlich eine
> ordentliche Portion Wissen und einige Jahre Erfahrung beim Entwerfen,
> das kann man sich nicht einfach so in zwei Stunden aus den Ärmeln
> schütteln,

Stimmt, aber STM32F030 hat bei mir auch mit Autorouter funktioniert. :-D

Vanye

von Ralph S. (jjflash)


Lesenswert?

So, ich habe mir das jetzt einmal komplett in mein Routingprogramm 
gezogen (und natürlich etwas geflucht gehabt, aber nur etwas),

An den TO: Der Schaltplan stimmt mit dem Layout nicht überein, auch wenn 
die Abweichungen nicht kriegsentscheidend sind.

Du hast an die Anschlüsse PF0 und PF1 über Widerstände mit einem 
Pfostenverbinder angeschlossen. Du weißt, dass du dir hierüber gewaltige 
Antennen einfängst, wenn du das mit Quarz betreiben willst?

Die Beschriftung der Buchsenleiste links oben ist schon mehr als nur 
verwirrend aber irgendwann bin ich hinter deine Gedankengänge gekommen. 
Du beschriftest etwas mit RST hast deb Pin aber gar nicht angeschlossen.

Bei der Umschaltung von Boot0 hast du im Gegensatz zum Schaltplan 2 
(statt einem Widerstand) verbaut. Das hatte mich zuerst irrietiert, weil 
du die Buchsenleiste mit GND und VCC beschriftest, dort aber kein VCC 
und GND liegt.

Eigentlich ... summa summarum, wenn der Entwurf nicht wirklich toll ist, 
hätte das funktionieren sollen / können. Einen größeren Kondensator über 
der Betriebsspannung wäre auch nicht übel gewesen (und das sage ich 
jetzt höchst ungern, weil hier fast immer die erste Reaktion ist: 
Kondensatoren).

Also: 47µFn über die Betriebsspannung hängen, ST-Link anschließen, Boot0 
einen low-Pegel geben. Reset aktiviert halte (High-Pegel) und mit 
Cubeprogrammer mittels "connect under reset" verbinden und sehen was 
geschieht (Connect under Reset, weil es ja evtl. - glaube ich nicht . 
ein Programm im Controller gibt, der ST-Link abgeschaltet hat).

von Ralph S. (jjflash)


Lesenswert?

Ralph S. schrieb:
> Reset aktiviert halte (High-Pegel)

muß natürlich LOW-Pegel sein!

von Andreas L. (drewle)


Lesenswert?

Hallo,
erst mal noch vielen Dank für die vielen Tipps. Vorallem das Layout 
sollte ich mir wohl nochmal genauer anschauen.

@Ralph S: Ja, ich habe den Schaltplan im Nachhinein noch bei dem Boot 
leicht angepasst. Wieso 2 Widerstände, wo es auch einer tut. Sorry, das 
hätte ich erwähnen sollen. Da ich den Widerstand eh mit 0 Ohm bestückt 
habe sollte es gar kein Unterschied machen.

Ich werde jetzt noch mal meine Lötarbeit genauer unter die Lupe nehmen. 
Ich hofe, dass ich das Ding nicht kaputtgelötet habe. :-(

Ich bin aber schon mal froh, dass ich nichts ganz prinzipielles falsch 
gemacht habe. :-)

Vielen, vielen Danke noch einmal,

Drewle

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.