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
Ich vermisse den Pulldown an Boot0, ansonsten empfielt sich ein Blick in https://www.st.com/resource/en/application_note/dm00089834-getting-started-with-stm32f030xx-and-stm32f070xx-series-hardware-development-stmicroelectronics.pdf
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
Boot0 ist doch mit 10k am Connector direkt neben gnd und 3.3V. Das ist sicherlich für nen Jumper gedacht.
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.
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?)
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
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.
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.
> 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
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
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.
> 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
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
Chip richtig herum eingelötet? Auch so einen trivialen Fehler gab es hier schon.
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
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.
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.
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
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
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.
> 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
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.