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 die 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
  • Vergeweissern 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:

Signal ST-Link Pin Target Pin Kommentar
Console CN3-1 (RX) J3-3 (PA15 TX) USB Virtual-COM-Terminal
Console CN3-2 (TX) J3-1 (PA2 RX) USB Virtual-COM-Terminal
VDD CN4-1 J3-6 (NICHT VERBINDEN) Verbindung zum Debuggen, VDD wird nicht benötigt und könnte Leckströme begünstigen, daher bitte offen lassen
SWCLK CN4-2 J3-5 (PA14) Verbindung zum Debuggen
GND CN4-3 J3-8 Verbindung zum Debuggen
SWDIO CN4-4 J3-7 Verbindung zum Debuggen
RST CN4-5 J3-4 Verbindung zum Debuggen
SWO CN4-6 J3-3 Verbindung 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
SB12 RST
SB13 RX
SB14 TX
SB15 SWO

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 serielles Druck-Debugging 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