Nucleo ST-Link-Interface

In diesem Dokument wird beschrieben, wie ein Nucleo STM32L476RG-Board mit einer Target-STM-MCU für Firmware-Downloads, Debugging und serielle Terminalverbindungen verbunden werden kann. Das Nucleo-Board wird über USB mit einem Host (Mac, Windows oder Linux) verbunden, Debugging- sowie serielle Kabel sind mit dem Target verbunden. Dadurch können Firmware-Dateien (z.⁥ B. die Mbed „.bin“-Dateien) auf das Nucleo USB-Laufwerk kopiert werden, das dann vom Nucleo-Board in das Target geflasht wird. „Tera Term“ o.⁥ ä. kann als virtuelles COM-Terminal verwendet werden.

Nucleo-Board: Voraussetzungen

  • Empfohlene STM-Handbücher: UM1724, User manual, STM32 Nucleo boards
  • Vergewissern Sie sich, dass die Nucleo ST-Link-Firmwareversion V2J29M18 oder höher ist (andernfalls funktioniert die STML433-MCU nicht korrekt):
  • Verwenden Sie zum Aktualisieren der Nucleo-L4-ST-Link Firmware das Utility „STLinkUpgrade“

Nucleo-Board für eine Remote-Target-Verbindung vorbereiten

Verwenden Sie ein Standard Nucleo-Board, das über eine ST-Link-Schnittstelle verfügt. Gehen Sie wie folgt vor, um das Nucleo-Board mit dem Target zu verbinden (siehe Abbildung des Nucleo-Boards unten):

  • Öffnen Sie den Jumper JP6 (3,3 V für die Nucleo-MCU, zur Vermeidung von MCU-Signalen)
  • Löten Sie die Stiftleiste JP4 ein (werksseitig nicht montiert)
  • Setzen Sie den Jumper JP4 (ermöglicht RX/TX-Signale auf CN3)
  • Öffnen Sie die Jumper CN2 (2 x, dadurch wird Remote-Application-Debugging für ST-Link ermöglicht)

Adapterkabel vorbereiten und verbinden

Ein 8-poliges Adapterkabel fungiert als ST-Link-Kabel, welches das Nucleo-Board mit dem Target-Board verbindet:

SignalST-Link PinTarget PinKommentar
ConsoleCN3-1 (RX)J3-3 (PA15 TX)USB Virtual-COM-Terminal
ConsoleCN3-2 (TX)J3-1 (PA2 RX)USB Virtual-COM-Terminal
VDDCN4-1J3-6 (NICHT VERBINDEN)Verbindung zum Debuggen, VDD wird nicht benötigt und könnte Leckströme begünstigen, daher bitte offen lassen
SWCLKCN4-2J3-5 (PA14)Verbindung zum Debuggen
GNDCN4-3J3-8Verbindung zum Debuggen
SWDIOCN4-4J3-7Verbindung zum Debuggen
RSTCN4-5J3-4Verbindung zum Debuggen
SWOCN4-6J3-3Verbindung zum Debuggen

Um RX-/TX-/RST-/SWO-Verbindungen zwischen einem Remote-Target und der ST-Link-Schnittstelle des Nucleo-Boards nutzen zu können, müssen die 0-Ω-Brücken auf der Unterseite des Nucleo-Boards aufgetrennt werden (siehe Abb. unten). Alternativ kann die ST-Link-Schnittstelle der Platine abgetrennt werden (siehe weiß gepunktete Linie auf dem Nucleo-Board in der Abb. oben).

0 ΩSignal
SB12RST
SB13RX
SB14TX
SB15SWO

Wenn Sie das ST-Link-Kabel mit der Target-Anwendung verbunden haben, fahren Sie folgendermaßen fort:

  • Verbinden Sie den USB-Port mit der ST-Link-Schnittstelle

LD1 auf dem ST-Link-Board sollte aufleuchten, und das USB-Laufwerk „NODE_L476RG“  auf dem Schreibtisch gemountet werden.

Fertiger Aufbau

Nachdem alle Änderungen am Nucleo-Board gemäß der obigen Schritte vorgenommen wurden, kann das Target-Board über das 8-polige Adapterkabel angeschlossen werden:

Firmware auf Target laden

Ziehen Sie die Datei „.bin“, welche die Firmware enthält, auf das Nucleo USB-Laufwerk („NODE_L476RG“):

LD1 blinkt für einige Sekunden schnell und wechselt auf grün (verbunden). Falls LD1 rot leuchtet, konnte keine Verbindung zum Target hergestellt werden.

Seriellen UART des Targets mit dem Host-Terminal verbinden

Um eine Debug-Ausgabe über die serielle Schnittstelle zu ermöglichen, werden die seriellen Kabel des Targets (CN3, PA2+PA15) mit dem ST-Link-Debugger verbunden. Diese serielle Kommunikation wird vom ST-Link-Debugger über eine USB Virtual-COM-Verbindung an den Host weitergeleitet und kann mit einem Terminalprogramm genutzt werden.

Für die Nutzung der Virtual-COM-Verbindung auf dem Host werden zwei Parameter benötigt:

  • USB-Gerätename
  • Baudrate

Windows

Der korrekte COM-Port für das USB-Modem lässt sich über „Systemsteuerung“ > „Geräte-Manager“ aus dem Eintrag „Anschlüsse (COM & LPT)“ herausfinden:

Wenn Sie die Portnummer des seriellen Anschlusses herausgefunden haben, öffnen Sie „Tera Term“ und geben Sie Portnummer sowie Baudrate über „Einstellungen“ > „Serieller Port“ an:

„Tera Term“-Beispielausgabe (Windows):

Mac

Der korrekte USB-Gerätename lässt sich über die Eingabe des Befehls ls /dev/tty.usbmodem* in einer Shell herausfinden.

Terminal-Beispielausgabe (Mac/Linux), z.⁥ B.:
screen /dev/tty.usbmodemfa413 230400

Sample application output