Wie verwende ich externen ST-Link zum Debuggen / Programmieren der STM32F103-MCU?

16

Ich verwende die STM32F103-MCU für mein eigenes Projekt und möchte den ST-Link der STM32F411-Nucleo-Karte für externe Debugging- / Programmierzwecke verwenden.

Ich habe die CN2-Jumper auf OFF gesetzt und meine eigentliche Frage steht in den Pinbelegungen von SWO (CN2). Wie ich das mache ist wie folgt:

  • PIN 1 (von SWO) ist VDD_Target
  • PIN 2 ist SWCLK
  • PIN 3 ist GND
  • PIN 4 ist SWDIO
  • PIN 5 ist NRST
  • PIN 6 ist SWO

Nach meinem besten Wissen sollte ich nicht alle oben genannten Stifte verwenden. Wie in, ich habe verbunden

  • PIN 2 bis PIN 37 (oder PA14) in der MCU
  • PIN 3 auf GND
  • PIN 4 bis PIN 34 (oder PA13)
  • PIN 5 bis PIN 7 oder (RESET) in der Ziel-MCU.

Ich bin mir nicht sicher, ob ich den SWO-Pin anschließen soll, da dieser als "reserviert" eingestellt ist (Warum?). Außerdem gebe ich dem VIN-Pin der MCU 3,3 V, was bedeutet, dass ich kein VDD (PIN 1 von stlink) anschließen muss.

Bitte beziehen Sie sich auf diese Tabelle, die ich aus dem offiziellen Datenblatt entnommen habe:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Hier ist die allgemeine Pinbelegung der MCU:

Bildbeschreibung hier eingeben

Ich habe "fast" alles mit Oszilloskop und Tester getestet und alles scheint in Ordnung zu sein. Was fehlt mir hier noch? Sollte ich irgendetwas mit den Pins BOOT0 oder BOOT1 machen?

baqx0r
quelle

Antworten:

11

Erstens haben Sie Recht, wenn Ihre Platine bereits über eine Versorgungsspannungsquelle verfügt, müssen Sie den VDD-Pin von ST-Link nicht anschließen.

Als zweites empfehle ich Ihnen, das Referenzhandbuch für das STM32F411-Nucleo-Board zu öffnen und sich die Schaltpläne anzusehen. Insbesondere der Teil, an dem der ST-Link mit dem Controller auf der Platine verbunden ist.

Bildbeschreibung hier eingeben

Über ST Microelectronics sind SWCLK, SWDIO, NRST und SWO (und natürlich GND) mit der Ziel-MCU verbunden. Der zusätzliche SWO-Pin wird für Debug-Zwecke verwendet. printfÜber diesen Pin können Sie mit dem ST-Link-Dienstprogramm auf gedruckte Daten zugreifen .

Der Printf via SWO Viewer zeigt die Printf-Daten an, die vom Ziel über SWO gesendet wurden.

Daher kann ich Ihnen empfehlen, auch SWO anzuschließen, was später nützlich sein kann. Verbinden Sie Ihre MCU mit ST-Link, so wie Sie die MCU des Nucleo mit dem ST-Link verbunden haben.

In Bezug auf die Boot-Konfigurationen gibt es drei wählbare Optionen. Am einfachsten ist es, sich an den Main Flash zu halten und Boot0 an GND zu binden, aber ich kenne Ihre Anforderungen nicht, sodass Sie die Wahl haben.

Bildbeschreibung hier eingeben

Bence Kaulics
quelle
3
Während Sie „mit wegkommen“ kann nicht die Pin VDD verbindet, ist es nicht , dass es ein Angebot zu sein, sondern es zu erkennen , das Ziel der Versorgungsspannung (sehen , wie es an einen Analogeingang angeschlossen ist). Eine anspruchsvollere Debug-Schnittstelle könnte ihre Leitungen ohne dies niedrig halten und sie nur auf den entsprechenden Versorgungspegel anheben, wobei mehrere Zielspannungen unterstützt werden. Die Reset-Leitung wird normalerweise nicht benötigt (im Gegensatz zu vielen anderen SWD-Implementierungen). Dies ist der Schlüssel zur Wiederherstellung nach schlechten Lasten und Firmwares, die die SWD-Pins deaktivieren, aber auch manuell manipuliert werden können.
Chris Stratton
Auf einer STM32F1xx-Karte wäre der Hauptgrund für die externe Auswahl von BOOT0 die Verwendung des werkseitigen ROM-UART-Bootloaders (usw.). Auf dem '103 unterstützt dies nicht USB, wie es auf vielen späteren ST-Teilen der Fall ist. Wenn man einen USB-Bootloader auf der '103 wünscht, muss er sich im Haupt-Flash-Speicher befinden, daher ist der BOOT0-Pin dafür nicht nützlich.
Chris Stratton
Mein boot0 und boot0 wird auf Null gesetzt, um sicherzustellen, dass das Programm in den Flash-Speicher geschrieben wird. Abgesehen davon werde ich versuchen, das St-Link-Dienstprogramm auf einem Windows-Computer zu verwenden. Ich verwende derzeit Mac OS, bin mir jedoch nicht sicher, ob mein Problem mit dem Betriebssystem zusammenhängt.
Baqx0r
Ich habe den ST-Link eines STM32F407 Discovery Kits verwendet, um einen STM32F303 zu programmieren. Ich habe einfach den SWD-Anschluss des (2-5-poligen) Kits mit meinem Board SWCLK, GND, SWDIO, NRST, SWO verbunden (genau wie bei Discovery und Nucleo) und es hat mit dem ST-Link-Dienstprogramm funktioniert. Der boot0-Pin ist über einen 10k-Widerstand mit GND verbunden, basierend auf dem STM32F303- Hardware-Referenzhandbuch .
Bence Kaulics
6

Zunächst einmal vielen Dank an alle für ihren Beitrag.

Nach zwei schlaflosen Nächten und Mühen konnte ich das Problem herausfinden. Das Problem lag in der Pin-Verbindung meiner benutzerdefinierten Karte: Ich dachte, dass Pin 9 (VDDA) in meiner MCU mit den PINs 24-36-48 und Pin 8 (VSSA) mit den PINs 23-35-47 kurzgeschlossen ist. aber es ist nicht so.

Ich brauchte ein anderes zu geben 3.3V und GND zu VDDA und VSSA und st-Link zu arbeiten begann.

Lösungsmethode : Früher habe ich Maple Mini Pläne die Verbindungen von STM32F103 zu verstehen. Es stellte sich heraus, dass sie VDDA mit VDD1, VDD2 & VDD3 und VSSA mit VSS1, VSS2 und VSS3 kurzgeschlossen haben. Ich denke, ich hätte das von der Benennung von VSSA verstehen sollen, da es nicht VSS0 oder VSS4 ist.

baqx0r
quelle