Eine benutzerdefinierte STM32-Karte kann nicht programmiert werden

9

Ich habe eine einfache STM32-Karte entworfen. Unten sehen Sie die schematischen und Leiterplattenlayoutbilder:

Schema:
Geben Sie hier die Bildbeschreibung ein

Leiterplattenlayout: Geben Sie hier die Bildbeschreibung ein

Leiterplattenlayout mit beleuchtetem VDD: Geben Sie hier die Bildbeschreibung ein

Leiterplattenlayout mit hervorgehobenem GND: Geben Sie hier die Bildbeschreibung ein

In den obigen Bildern sind nur die Teile dieses Entwurfs gezeigt, die für meine Frage relevant sind.

Mein Problem ist: Ich habe versucht, den integrierten ST-Link eines STM32 Discovery Boards zu verwenden, um dieses benutzerdefinierte Board zu programmieren, aber es gelang mir noch nicht. Die ST-Link Utility-Anwendung auf dem PC kann den Programmierer erkennen, die Ziel-MCU jedoch nicht erkennen. Die Fehlermeldungen, die ich erhielt, waren: "Ziel nicht verbunden" und "ST-Link USB-Kommunikationsfehler".

Hier sind einige verwandte Fakten zu meinem Problem:

  • Das STM32 Discovery Board funktioniert einwandfrei: Ich kann den integrierten ST-Link verwenden, um die integrierte STM32-MCU zu programmieren. Das ist in Ordnung.
  • Die STM32-MCU wurde mit der richtigen Ausrichtung auf die benutzerdefinierte Platine gelötet. Ich habe das zweimal überprüft.
  • Ich habe VDD- und SWD-Spuren überprüft. Sie sind gut angeschlossen (kein Lötproblem). Pin Boot0 liegt bei 0V. Pin NRST liegt bei 3,3V.
  • Das SWD-Kabel ist kurz und nur 7-8 cm lang.
  • Der STM32 auf meinem benutzerdefinierten Board ist vom selben Typ wie der auf dem Discovery Board.
  • Ich habe die Anweisungen im Handbuch des STM32 Discovery Board befolgt, wie das Discovery Board zum Programmieren einer externen STM32-MCU verwendet wird. Um genauer zu sein, habe ich die 2 CN3-Jumper entfernt und dann die Karten wie in dieser Tabelle verbunden: Geben Sie hier die Bildbeschreibung ein

  • Ich habe auch die Lötbrücke SB11 auf der Discovery-Platine entfernt (damit Pin NRST ordnungsgemäß funktioniert).

  • Ich habe sowohl die ST-Link Utility App als auch Keil ausprobiert. Die Fehlermeldungen, die ich erhalten habe, sind die gleichen.
  • Zuerst habe ich Pin 6 in der obigen Tabelle (SWO) nicht angeschlossen, da dies meines Wissens nicht erforderlich ist. Danach habe ich es aber auch angeschlossen, aber es hat immer noch nicht geklappt.
  • Ich habe auch eine 100nF-Kappe von Pin NRST zu GND und dann einen 100k-Pull-up-Widerstand von diesem Pin zu VDD hinzugefügt. Das Problem bleibt weiterhin bestehen.
  • Ich habe auch versucht, den Modus "Connect under Reset" des ST-Link Utility-Programms zu verwenden. Auch kein Glück.

Ich vermute, dass etwas mit dem Design nicht stimmt, bin mir aber nicht sicher. Bitte helfen Sie mir, das Problem zu lösen.

Vielen Dank :)

user3286500
quelle
Soweit ich mich erinnere, müssen Sie sowohl den st-link als auch Ihr benutzerdefiniertes Board mit Strom versorgen. Die 3,3 V im SWD-Anschluss Ihrer benutzerdefinierten Karte müssen die 3,3 V bereitstellen, damit der st-Link erkannt werden kann.
Davidrojas
@davidrojas: Danke für deine Antwort. Nun, derzeit versorge ich den ST-Link über den USB-Anschluss von meinem PC aus. Die benutzerdefinierte STM32-Karte wird von einer externen, separaten 3,3-V-Karte gespeist. Die Masse dieser beiden Karten ist jedoch bereits verbunden (wie in der obigen Tabelle). Außerdem sind die 3,3 V von meiner benutzerdefinierten Karte auch auf dem ST-Link mit VDD_TARGET verbunden. Glaubst du, das ist genug?
user3286500
Es sollte reichen, ja. Ein weiteres Problem könnte die Länge und Anordnung der Leitungen SWDIO und SWCLK sein. Aus diesem Grund hatte ich in der Vergangenheit Probleme mit der intermittierenden Verbindung. Sie müssen so kurz wie möglich sein. Versuchen Sie auch, die Geschwindigkeit des SWD zu verringern.
Davidrojas
Ich habe die SWD-Geschwindigkeit von standardmäßig 1,8 MHz auf unter 400 kHz gesenkt, bin aber immer noch nicht erfolgreich. In Bezug auf die Kabellänge beträgt in meinem Setup die Gesamtlänge der SWD-Verbindung (von ST-Link zum Ziel-STM32) ca. 12-13 cm. Ist das noch in Grenzen?
user3286500
1
Haben Sie bemerkt, dass die Erdung unter dem Chip physisch isoliert und nicht mit einem der Erdungsstifte verbunden ist? Die tatsächlichen Verbindungen zwischen den Erdungsstiften folgen gewundenen Pfaden außerhalb des Chips, und einige von ihnen können tatsächlich isoliert sein. Sie müssen Ihre Abstände so einstellen, dass der Bodenguss keine isolierten Inseln aufweist. Dadurch wird sichergestellt, dass alle Erdungsstifte des Chips viel näher am gleichen Potenzial liegen.
Dave Tweed

Antworten:

5

Vielen Dank für Ihre tollen Kommentare. Aufgrund dessen war ich zuversichtlich, dass mein Design fehlerfrei ist. Deshalb habe ich mich darauf konzentriert, nach Fehlern in der Hardware zu suchen. Und ich habe den Fehler gefunden! Dies ist ein Lötfehler.

Ich habe diesen Fehler gefunden, nachdem ich diese Anweisung befolgt habe: "Verwenden Sie ein Multimeter und testen Sie alle Verbindungen auf Kurzschlüsse oder fehlende Verbindung. Denken Sie daran, die Stifte / Pads / was auch immer wirklich leicht zu berühren, denn wenn Sie die Sonde fest drücken, können Sie dies beheben." "Die Verbindung wird vorübergehend hergestellt (zum Beispiel drücken Sie den Pin des IC auf die Leiterplatte auf der Leiterplatte und der Test ist in Ordnung, aber sobald Sie loslassen, biegt sich der Pin wieder nach oben)." Der ursprüngliche Beitrag ist hier .

user3286500
quelle