ST-Link statt Serial-Adapter zum Flashen des STM32 benutzen

Von STMicroelectronics gibt es einen extra Adapter namens ST-Link/V2, den man z. B. über Amazon auch in Deutschland bekommt.

Wem die ca. 30 Euro zu viel sind und wer sich in Geduld üben kann, kann sich so wie ich, einen China-Klon für ein paar Euro aus Fernost bestellen (oder hier aus Deutschland mit schnellerer Lieferung) - Überraschung inklusive - aber dazu später mehr.

Wozu einen ST Link?


Warum sollte man sich einen anschaffen, wenn es doch auch der bisherige Serial-Adapter tat?

Vorteile: Nachteile:

ST Link Treiber installieren


Zu allererst, am besten hat man den Stick noch nicht eingesteckt, muss man den ST Link Treiber installieren, den findet man auf der entsprechenden Webseite von ST.


Erst wenn der Treiber installiert ist, wird Windows den Stick auch erkennen:

Ist das erledigt, kann man in der Arduino-IDE unter Werkzeuge "STLink" als "Upload-Methode" auswählen und einen Beispiel-Sketch zum Test hochladen.

Bei derjenigen, bei denen jetzt alles auf Anhieb geklappt hat. Glückwunsch! Ihr hattet Glück oder habt das Original ST Link gekauft.

China at it's "best"

Alle anderen, die vielleicht statt einer Erfolgsmeldung einen Fehler wie folgt erhalten haben ... STM32 ST-LINK CLI v3.2.0.0 STM32 ST-LINK Command Line Interface No target connected Unable to connect to ST-LINK! Beim Hochladen des Sketches ist ein Fehler aufgetreten sollten unbedingt weiterlesen.


Eigentlich gefällt mir ja das Design mit dem Alugehäuse und dem darauf gelaserten Pinout. Da weiß man gleich, wo man was einstecken muss. Ein vierpoliges Kabel liegt auch gleich bei. ST Link und STM32 müssen wie folgt verkabelt werden:

STLink STM32 GND GND 3.3V 3.3 SWCLK DCLK SWDIO DIO Doch ganz einfach, oder? Nur warum klappt die Übertragung nicht? Also die ST Link Utilities von der ST-Seite gezogen und damit getestet. Ebenfalls kein Connect zum Zielgerät. Habe ich ein kaputtes Board erwischt? Aber der Treiber ließ sich doch tadellos installieren und erkannte den ST Link? Was ist hier bloß los?

Apropos los: lose ist auch der USB-Stecker und wenn man den Stick an der falschen Stelle anpackt beim Herausziehen, dann zieht man das Innere heraus.

"Na toll!" höre ich jetzt viele rufen, nicht ohne einen gewissen sarkastischen Unterton. Aber im Grunde ist das gut so und es ist Glück, dass der Stick schnell auseinandergezogen werden kann. Denn sonst hätte ich nie die kleinen Silkscreen-Aufdrucke auf dem ST-Link-Board gesehen.

Und da steht doch glatt was ganz anderes als die Beschriftung außen angibt! Das ist mal wieder typisch für die Chinesen. Die scheinen mir ohne groß nachzudenken alles zusammenzulösten und zusammenzustecken und der Kunde muss es dann ausbaden.

Ich habe meinem ST Link erstmal das richtige Pinout per Aufkleber verpasst:



Richtig verkabelt (nämlich nach den Angaben im Inneren) funktioniert der ST Link dann auch: STM32 ST-LINK CLI v3.2.0.0 STM32 ST-LINK Command Line Interface ST-LINK SN : xxx ST-LINK Firmware version : V2J31S7 Connected via SWD. SWD Frequency = 4000K. Target voltage = 3.2 V. Connection mode : Normal. Device ID:0x410 Device flash Size : 64 Kbytes Device family :STM32F10xx Medium-density Loading file... Flash Programming: File : C:\Users\admin\AppData\Local\Temp\arduino_build_838903\SMT32-RTC.ino.bin Address : 0x08000000 Memory programming... ?????????????????????????????????????????????????? 0% 0%??????????????? 30%??????????????? 61%??????????????? 91%????? 100% Memory programmed in 2s and 0ms. Programming Complete. MCU Reset. run application to exit Application started. Den Boot-Jumper zu setzen oder den Reset-Taster zu drücken, kann ich mir bei der ST Link-Methode sparen. Ist schon ein wenig komfortabler so als mit dem Serial-Adapter.

Allerdings meint der ST Link jetzt nur noch 64 KiB erkannt zu haben, das waren doch vorher mal 128 KiB. Da bin ich mal gespannt, was sich bewahrheiten wird. Noch brauchte ich ja noch nicht so viel Speicher.