RS41 Firmware flashen

Material und Software

Programmierkabel bauen

Um die RS41 zu Programmieren, bietet es sich an, ein Breakout-Kabel zu bauen, dass den 2×5 2 mm Minitek Header des XDATA-Anschlusses auf besser kompatible 2,54 mm Dupont-Stecker herausführt. Ich habe für mein Kabel Einzeladern im passenden Leitermittenabstand aus der Bastelkiste an eine Pfostenbuchse gecrimpt. An das andere Ende kommen dann die Dupont-Kontakte in 1er- oder 2er-Gehäusen. Die XDATA-Buchse führt einen UART, SWD zum Programmieren und Debuggen und verschiedene Stromschienen.

Belegung der XDATA-Buchse und eines angeschlossenen Flachbandkabels

Ich habe bei meinem Kabel folgende Leiter in gemeinsame Gehäuse geführt:

PinsNameFunktion
2/3 UART RX/TX Zum Debuggen mithilfe von seriellen Nachrichten, zur Verbindung mit einem PC oder zum Einspeisen externer Daten (über diese zwei Pins werden normalerweise externe Sensoren angeschlossen
8/9 SWD SWCLK/
SWDIO
Zum Programmieren und Debuggen des STM32-Mikrocontrollers über SWD
7 MCU_RST Zum Reset des STM32-Mikrocontrollers fürs Programmieren und Debuggen oder einfach nur so
1/5 V_Boost/
GND
Wenn die Sonde über Batterien versorgt wird, liegt hier die Ausgangsspannung des Boost-Converters von 3,8 V an, aus der Anbauteile höherer Leistung versorgt werden können. Ansonsten kann die Sonde durch Anlegen einer 3,3 V Spannungsquelle an diesen Anschluss fremdgespeist werden. Die Sonde schaltet sich dann mit der Stromversorgung ein und aus, Taster und NFC-Einschalten sind funktionslos.
6/10 V_Bat/GND Wenn die Sonde über Batterien versorgt wird, liegt hier die Batteriespannung direkt nach der Sicherung an. Durch Anlegen von 1,5 – 3 V an diesen Anschluss kann die Sonde fremdgespeist werden, Taster und NFC-Einschalten funktionieren wie gewohnt (Das Ausschalten durch Gedrückthalten ist eine softwareseitige Funktion und hängt von der Firmware ab.
4 +3V_MCU Ausgang des LDO, der den STM32 mit Strom versorgt. Im Betrieb liegen 3 V an, der Anschluss sollte aber allenfalls marginal belastet werden. Durch ANlegen einer Spannung kann (nur) der Controller und ein kleiner Teil der Sonde fremdgespeist werden.

Das Programmierkabel kann nun an den PC angeschlossen werden. Dazu werden SWDIO, SWCLK, MCU_RST und GND mit dem ST-Link verbunden. Am CP2102 wird RX mit TX und TX mit RX über Kreuz (nullmodem) verbunden. V_Boost und GND werden mit +3V3 und GND verbunden, so wird die Sonde mit Strom verbunden.

Entwicklungssetup mit ST-Link und CP2102

Wer kein CP2102 hat, kann natürlich auch eine Batterie an V_Bat und GND anschließen, allerdings wird dann ein zusätzliches GND-Kabel benötigt, da es ein wenig hacky ist, die Massereferenz über den USB-Hub zu führen.

Entwicklungssetup mit Batterie (Das Launchpad steht für ein beliebiges UART-Interface wie einen Arduino Uno etc.)

Firmware-Datei flashen

Zuerst wird die Software STM32CubeProgrammer benötigt, die nach Registrierung von der ST-Website heruntergeladen werden kann. Nach der Software- und Treiberinstallation kann die Sonde angeschlossen und ggf. eingeschaltet werden. Die Software sollte sich nun mit der Sonde verbinden, wenn man den grünen „Connect“-Button rechts oben drückt. Die Fehlermeldung „Data read failed“ können wir im Moment ignorieren, weil der Ausleseschutz im Mikrocontroller noch aktiviert ist.

Wir können den Ausleseschutz löschen, indem wir auf der linken Seiten zunächst in den Reiter „Option bytes“ gehen. Hier darf unter „Read Out Protection“ kein Häkchen gesetzt sein. Unter „Write Protection“ hingegen müssen alle Häkchen gesetzt sein. Mit einem Klick auf „Apply“ übernehmen wir die Konfiguration auf den Mikrocontroller.

Nun können wir im Reiter „Erasing & Programming“ durch Klick auf „Full chip erase“ den gesamten Speicherinhalt löschen. Anschließend können wir unter „Download“ den Dateipfad zu unserem Firmware-Image bestimmen und mit „Start Programming“ den Controller flashen.