STM32F4 Custom Board, Niederspannung am Reset-Pin

Ich habe das folgende benutzerdefinierte STM32F407vgt6-Board für ein Projekt entworfen.

Geben Sie hier die Bildbeschreibung einGeben Sie hier die Bildbeschreibung einGeben Sie hier die Bildbeschreibung ein

Ich habe kürzlich die Teile gelötet und die Platine eingeschaltet. Ich habe versucht, das Board über ein STM32F429-Discovery-Board über die SWD-Schnittstelle zu programmieren, und es wurden zahlreiche Fehler angezeigt, die darauf hindeuteten, dass die MCU zurückgesetzt wurde. Dann habe ich den NRST-Pin sondiert und einen Wert von 0,40 Volt gelesen.

Die MCU ist brandneu. Alle Entkopplungskondensatoren scheinen genug Spannung zu bekommen (2,9 Volt). Regler funktioniert auch gut. Ich bin mir nicht sicher, warum der NRST-Pin auf niedriger Spannung liegt. Hier ist der relevante Teil des Board-Layouts.Geben Sie hier die Bildbeschreibung ein

edit1: Dies ist eine zweischichtige Platine, wobei die obere Schicht GND + Signal und die untere VDD + Signal ist. Ich denke, es ist erwähnenswert, dass der NRST manchmal auf 0,20 Volt abfällt. Es variiert nur um 0,20 - 0,40.

Ich kann ein Bild der Platine hinzufügen, wenn Sie sehen möchten, ob beim Löten etwas nicht stimmt. Hier sind die Bilder der Platine. Beachten Sie, dass ich versucht habe, die VCAP-Linie zu schneiden, aber es hat nicht geholfen, vorausgesetzt, ich habe die Linie erfolgreich geschnitten.

Geben Sie hier die Bildbeschreibung einGeben Sie hier die Bildbeschreibung einGeben Sie hier die Bildbeschreibung ein

aktualisieren

Ich zog den NRST-Pin hoch. Danach konnte ich die MCU über das STM32F429-Board über das ST-Link-Dienstprogramm verbinden und programmieren. Das Dienstprogramm ST-Link gibt an, dass der Speicher programmiert und verifiziert ist. Ich habe ein kleines Programm geschrieben, das ein paar GPIO-Pins umschaltet, aber wenn ich die Spannung an diesen Pins messe, sehe ich nicht, dass sie hoch (3 V) oder niedrig (0 V) werden. Sie variieren nur um irrelevante Werte (1,2 V, 0,4 V, 0,9 V usw.).

Wenn Sie feststellen, dass das Hinzufügen eines zusätzlichen Widerstands nicht hochzieht, müssen Sie möglicherweise die Folgen einer Beschädigung durch elektrostatische Entladung berücksichtigen.
@TonyStewartolderthandirt Ich sage nicht, dass das Hinzufügen eines zusätzlichen Widerstands nicht helfen würde. Ich sage nur, dass es in erster Linie nicht benötigt werden sollte.
Wenn Sie meinen Vorschlägen folgen, finden Sie die Ursache
@TonyStewartolderthandirt Ihr Vorschlag ist eine "Lösung" für das Problem. Ich sehe nicht, wie es uns helfen soll, die Ursache zu finden
Wenn nicht verwendete Eingänge oszillieren, können Sie beheben, wenn NRST einen Erdschluss hat, der von diesen Eingängen beeinflusst wird, können Sie beheben, wenn nicht, dann kann es sich um destruktive Leckage (ESD) handeln, dann schützen Sie den Eingang. Also bin ich anderer Meinung. Es sollte Ihnen die Ursache und nicht die Lösung durch forensische Untersuchung dieser potenziellen Probleme und zukünftige Fehlerbehebungen im Design mitteilen.
Wie groß ist der Widerstand zwischen NRST und dem Erdungsstift der MCU? Wie hoch ist der MCU-Verbrauchsstrom jetzt?
Ist der Schalter in Ordnung?
Ihre Energieebene ist nicht in Ihr Bild gegossen; hoffentlich ist es tatsächlich auf Ihrem Board. Stellen Sie außerdem sicher, dass Ihr IC nicht um 90 Grad auf der Grundfläche gedreht ist; es ist ein leichter Fehler (Hinweis, die Schrift auf dem Chip stimmt nicht mit der Ausrichtung auf dem Datenblatt überein, Sie müssen die Stift-1-Markierung und nicht die Schrift verwenden)
(a) „ Ich kann ein Bild des Boards hinzufügen “ Ja, bitte – scharfe Nahaufnahmen von der Ober- und Unterseite des Boards. (b) " Es schwimmt nur um 0,20 - 0,40. " Ich würde vorsichtig sein, das Wort "Schwimmer" zu verwenden, da dies eine bestimmte Art von Situation impliziert, die noch nicht auf Ihrem Board bestätigt wurde (soweit ich sehen kann). . Wenn Sie nicht wissen, dass der Stift schwebt, könnte ein besseres Wort "variiert" sein. (c) Wenn Sie Zugang zu einem Oszilloskop haben, schlage ich vor, es mit einer angemessenen Empfindlichkeit (z. B. 0,1 V/div, nicht 1 V/div) zu betrachten NRSTund zu sehen, wie stabil es ist. (d) Haben Sie Vdd auch mit einem Scope überprüft?
Nebenbei finde ich, dass der Monsterteil mit 100 Verbindungen ziemlich schwer zu bewältigen ist. Ich ziehe es wirklich vor, den Chip in Eagle in funktionale Gates zu zerlegen.
@ChrisStratton Ja, die obere Ebene ist geschliffen und die untere Ebene ist VDD. Ich habe auch die Ausrichtung des Chips überprüft und sie scheint korrekt zu sein, wie Sie auf den Bildern sehen können.
@SamGibson Ich habe leider keinen Zugriff auf ein Oszilloskop. Ich habe den NRST-Pin mit einem Multimeter untersucht und er scheint weiter auf 0,05 Volt abgefallen zu sein. Seltsam.
Danke. Wenn Sie kein Oszilloskop haben, können Sie leider nicht sehen, ob ein Multimeterwert von X wirklich eine konstante Spannung von X ist oder sich tatsächlich zwischen den Spannungen A und B mit einem Durchschnitt von X ändert. Dieser Unterschied kann bei der Fehlersuche wichtig sein dieser Komplexität. " Ich habe den NRST-Stift hochgezogen " Wie? Direkt an Vdd mit einem Draht oder mit einem Widerstand? Sie sagten, dass die GPIO-Pins " um irrelevante Werte (1,2 V, 0,4 V, 0,9 V usw.) variieren ". Abhängig von Ihrem Programm könnten diese Messungen mit einem Multimeter korrekt sein, da Sie gesagt haben, dass Ihr Programm diese GPIO-Pins umschaltet .
@SamGibson Ich habe den Pin direkt an eine 3,3-V-Quelle angeschlossen. Bedeutet Umschalten nicht Umschalten zwischen High und Low? Warum würden in diesem Fall die Werte je nach meinem Code variieren? Sind hohe und niedrige Werte nicht eindeutig?
" Ich habe den [NRST]-Pin direkt mit einer 3,3-V-Quelle verbunden " Yikes! Dies überschreibt jeden möglichen Versuch der MCU, sie herunterzuziehen, und könnte die MCU beschädigen. Ich vermute, dass die MCU immer noch versucht hat, es herunterzuziehen, dh es ist immer noch nicht glücklich. " Bedeutet Umschalten nicht Umschalten zwischen Hoch und Niedrig? " Ja, aber abhängig vom Arbeitszyklus des Umschaltens in Ihrem Code ist die durchschnittliche Spannung (die alles ist, was ein Multimeter anzeigen kann) nicht die Spannung von beiden logisch "hoch" oder logisch "niedrig". Das ist ein Grund, warum die gemessene Spannung von Ihrem Code abhängt. Ich vermute, Sie haben immer noch ein Problem mit der Stromversorgung.
@SamGibson Der Code schaltet die Pins dann alle 3 Sekunden um. So haben die Stifte genug Zeit, um auf und ab zu gehen. Ich werde jetzt versuchen, einen Widerstand in Reihe mit NRST hinzuzufügen. Ich stimme der Idee zu, ein Machtproblem zu haben. Aber was ist da außer der falschen VCAP-Verbindung, die ich versucht habe zu trennen?
" Der Code schaltet die Pins dann alle 3 Sekunden um " Das ist das erste Mal, dass erwähnt wurde - das Wort "umschalten" könnte ein Umschalten bei 100 MHz oder 0,0001 Hz usw. bedeuten :-) Stimmt, dass mit dieser neuen Info Spannungen um Vdd (2.9 V?) und ~0 V auf einem DMM werden erwartet. Leider sind die Bilder nicht scharf genug (Bewegungsunschärfe?), um die Lötstellen im Detail zu sehen. Wenn Sie NRSTdirekt an 3,3 V angeschlossen sind, Vdd jedoch nur 2,9 V beträgt, muss dies speziell überprüft werden, um festzustellen, ob dies zulässig ist. Ich kann hier nicht alle Vorschläge zur Fehlerbehebung in einen Kommentar einfügen. Wenn Sie den Chat hier auf SE nutzen möchten, lassen Sie es mich wissen.
@SamGibson Wir können im SE-Chat weiter diskutieren. Obwohl ich nicht sicher bin, wie ich eine Chat-Sitzung einleite.
Wie besprochen: Chatroom-Link

Antworten (2)

Eine mögliche Erklärung dafür, NRSTdass es niedrig ist, ist, dass es von der MCU niedrig getrieben wird . Das ist möglich, weil die STM32-Familie diesen externen Pin ansteuert NRST, wenn eines der internen Reset-Module die MCU zurücksetzen möchte. Der offensichtliche Kandidat in diesem Fall ist das Zurücksetzen der Stromversorgung, wenn ein Problem mit der Stromversorgung vorliegt. Dieses Diagramm stammt aus dem Anwendungshinweis ST AN4488, auf den unten verwiesen wird:

STM32F4 Reset-Schaltung

Da Sie berichten, dass dies NRSTbei 0,4 V und nicht bei einer noch niedrigeren Spannung liegt, ist es unwahrscheinlich, dass der Reset-Schalter selbst die Ursache ist, aber es lohnt sich, dies zu überprüfen.

Bei einer kurzen ersten Überprüfung Ihres Designs sehe ich zwei Hauptprobleme:

  • BOOT1schwimmt

    Obwohl BOOT0der tatsächliche Logikpegel von geerdet BOOT1den Startmodus nicht beeinflusst (wie in Tabelle 6 von ST AN4488 gezeigt, auf die unten verwiesen wird), habe ich kein Design gesehen, bei dem der BOOT1Pin schwebend gelassen wird. Obwohl ich bezweifle, dass es das von Ihnen gemeldete spezifische Symptom verursachen würde, würde ich es auf einer gültigen Logikebene beheben. Zu Ihrer Information: Die STM32F4-Referenzdesigns haben 10k-Widerstände in Reihe mit beiden BOOTPins, bevor sie dann je nach Bedarf extern hoch oder niedrig gezogen werden.

  • VCAP1und VCAP2verbunden sind

    Das ist mein Hauptanliegen. Ich habe die interne MCU-Architektur nicht gesehen, um den Unterschied zwischen diesen beiden Pins zu zeigen (die die interne 1,2-V-Leistungsdomäne des MCU-Kerns entkoppeln), aber beachten Sie dies im ST-Dokument „AN4488: Erste Schritte mit der STM32F4xxxx-MCU-Hardwareentwicklung “ . , diese beiden Pins sind jeweils separat mit einem 2,2-uF-Kondensator verbunden - und nicht, wie in Ihrem Schaltplan und Ihrer Leiterplatte gezeigt, miteinander verbunden und dann gemeinsam mit zwei 2,2-uF-Kondensatoren verbunden.

    Ein Teil des Textes dazu im obigen Dokument ist etwas zweideutig, aber das Referenzschema auf PDF-Seite 34 zeigt deutlich, wie diese Pins verwendet werden sollten:

    VCAP-Verbindungen aus dem STM32F4-Referenzschema

    Wenn Sie sich Ihr PCB-Layout ansehen, können Sie anscheinend einfach die Leiterbahn abschneiden, die Ihre Kondensatoren verbindet, C11und C13die erforderliche Trennung durchführen. Stellen Sie außerdem sicher, dass Sie den angegebenen Kondensatortyp verwenden, falls Sie dies nicht bereits tun.

    Meine Hypothese ist, dass diese falsche Verbindung zwischen den beiden VCAPPins dazu führen könnte, dass die MCU ihren internen Power-Reset aufrechterhält, was Sie als logisch niedrig (0,4 V) am NRSTPin messen.


Ich empfehle, das gesamte Dokument zu lesen, einschließlich Abschnitt 9.3 mit dem Titel „MCU funktioniert nicht richtig“, der Ihnen möglicherweise weitere Ideen für zu untersuchende Bereiche gibt.

Ich weiß nicht, wie ich diesen VCAP-Verbindungsteil beim Entwerfen der Platine übersehen habe. Das ist ein offensichtlicher Designfehler meines Boards. Danke für den Hinweis. Ich werde versuchen, die Linie zwischen den Kappen zu schneiden und sehen, ob es hilft. Für das, was es wert ist, habe ich das obige Dokument während der Entwurfsphase durchgesehen, aber irgendwie einige Details übersehen.

Sie benötigen wahrscheinlich einen Pull-up-Widerstand - etwa 10 K vom Reset-Pin zu Vcc - um sicherzustellen, dass der Reset-Pin High ist, wenn die Reset-Taste nicht gedrückt wird.

Dies ist nicht wirklich erforderlich, da der NRST-Pin intern hochgezogen wird. Das Referenzdesign enthält auch keinen Pull-up-Widerstand für den Pin.
Wenn unbenutzte Eingänge initialisiert werden, sollten sie nicht floaten.