STM32 mit USB Bootloader - AZ-Delivery

Hallo und willkommen bei unserem heutigen Beitrag.

 

Das STM32 Modul ist vielen ein Begriff. Bestückt mit einem 32-bit Arm Cortex spielt es in einer anderen Liga als z.B. der Nano V3.

Ich selbst muss jedoch eingestehen, dass ich in der Regel zum Nano V3 greife wenn ich ein Projekt beginne, und erst zum STM32 wechsele wenn ich feststelle, dass der Nano nicht mehr ausreicht. Hauptgrund ist die Tatsache, dass ich für den STM32 immer einen FTDI Adapter anschließen muss, während ich einen Nano V3 einfach per USB anschließen kann.

Der STM32 hat zwar auch einen USB Anschluss, aber dieser wird nur dazu verwendet das Modul mit Strom zu versorgen.

Eines der Gründe dafür ist, dass der STM32 nicht mit einem USB Bootloader ausgeliefert wird. Dieser Bootloader belegt etwa 20k Speicherplatz. Da ich jedoch noch nie absichtlich an die Grenze von 64k gestoßen bin, versuchen wir heute den USB Bootloader zu flashen.

Dazu benötigen wir:

1x STM32 Mikrocontroller + MicroUSB Kabel
1x USB FTDI Adapter + MiniUSB Kabel
Jumperkabel
Geduld und starke Nerven

Im ersten Schritt stellen wir sicher, dass der Jumper des FTDI-Adapters auf 3,3V eingestellt ist, und verbinden wir die Bauteile wie folgt:

 STM32 FTDI Adapter
G GND
A10 TX
A9 RX

 

Wer sich sicher ist, dass sein FTDI Adapter auf VCC saubere 3,3V ausgibt (lieber zuerst nachmessen) kann seinen STM32 darüber mit Strom versorgen. Ich habe damit jedoch in der Vergangenheit schlechte Erfahrungen gemacht, und versorge meinen STM32 lieber über USB mit Strom. Wir schließen den FTDI Adapter an den PC an, und wählen das Richtige Modul in der Arduino IDE aus:

 

Wenn im Boardverwalter kein STM32 auftaucht, müssen die entsprechenden Treiber noch installiert werden.

Dafür müssen Sie als erstes die "Arduino SAM" Unterstützung über den Boardverwalter installieren. Dies ist notwendig um die arm-none-eabi-g++ Toolchain zu installieren.

 

Als nächstes benötigen wir die Dateien für den STM32 welche wir bei GitHub herunterladen können: https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip 

Diese entpacken wir im Arduino Verzeichnis C:\Users\<Benutzer>\Documents\Arduino\hardware\Arduino_STM32.

Falls der Ordner "hardware" noch nicht existiert können wir diesen einfach anlegen.

Nun müsen wir noch die Treiber für den Seriellen Upload installieren, indem wir im Arduino_STM32 Ordner unter "drivers" -> "win" die Datei "install_drivers.bat" als Administrator ausführen.

Falls irgendwann in der Zukunft (typischerweise nach einem automatischen Windows Update) der STM32 nicht mehr programmieren lässt, hilft es in der Regel die oben gezeigte Treiberinstallation nochmals durchzuführen.

Nun sollte nach einem Neustart der Arduino IDE das Board zur Auswahl stehen.

Über "Datei"  -> "Beispiele" -> "A_STM32_Examples" -> "Digital" -> "Blink" öffnen wir nun den Blink Beispielsketch und ändern den Pin an 3 Stellen von PB1 auch PC13.

 Zum schluß setzen wir noch den BOOT0 Jumper auf dem STM32 auf 1, und laden das Blink Programm hoch.

 

Falls an dieser Stelle Probleme auftauchen sollten, überprüfen Sie bitte die Verkabelung, und stellen Sie sicher, dass die Einstellungen zu Ihrem STM32 Board passen.

 

Als nächstes benötigen wir das Programm "STM32 Flash loader demonstrator (UM0462)" welches wir auf der Herstellerseite herunterladen können. Nach der Registrierung auf der Herstellerseite können wir das Programm herunterladen und installieren.

Als letztes benötigen wir noch die Binaries mit dem USB Bootloader. Diese finden Sie auch auf GitHub unter https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries.

Wir benötigen für unser Modul die Datei "generic_boot20_pc13.bin". 

Wir starten den Flash Loader Demonstrator, wählen den für uns richtigen Port aus, und klicken auf "Next".

Wenn das Programm an dieser Stelle einfriert, kann es ein Paar Minuten dauern bis eine Fehlermeldung erscheint. In dem Fall einfach sicherstellen das der Jumper BOOT0 auf 1 steht, und den STM32 mit der Reset-Taste neu starten, dann sollte es gehen.

Die nächsten beiden Fenster zeigen uns Informationen zur Flash Größe an. Diese können wir mittels "Next" überspringen.

Im letzten Fenster müssen wir "Download to device" auswählen, und die .bin Datei auswählen. 

Wenn die .bin Datei nicht angezeigt wird, ändern Sie bitte die Dateiendung von "s19 Files (*.s10)" auf "Bin Files (*.bin)".

Nun laden wir die Firmware auf unseren STM32. Nach wenigen Sekunden sollte folgende Meldung erscheinen:

Bevor wir nun etwas machen, sollten wir den BOOT0 Jumper von 1 auf 0 setzen, da ansonsten nach einem Neustart der Bootloader wieder weg ist. Wir können nun den FTDI Adapter trennen, und unseren STM direkt per USB anschließen.

Im Gerätemanager (Win+R drücken und devmgmt.msc eingeben) sollte nun ein neuer Eintrag unter "Anschlüsse (COM & LPT)" erscheinen:

 

 

Um zu testen ob es jetzt funktioniert, versuchen wir unseren Blink Sketch nochmals hoch zu laden. Dafür ändern wir bei den Board Einstellungen die Upload Methode auf "STM32duino bootloader".

 

Der Upload sollte nach wenigen Sekunden abgeschlossen sein, und unsere onboard LED fängt wieder an zu blinken. Die Fehlermeldung zum usb_reset können wir ignorieren.

Geschafft! Ab sofort zählt bei mir Faulheit nicht mehr als Ausrede um den STM32 in der Schublade liegen zu lassen.

Ich hoffe unser Heutiger Beitrag hat Ihnen gefallen, und hilft Ihnen den Schritt in die Welt der 32-Bit Mikrocontroller zu wagen.

 

Ich wünsche allen ein schönes Wochenende und viel Spaß beim Basteln.

Ihr Markus Neumann

 

 

Projekte für anfänger

8 Kommentare

Rudolf Schenke

Rudolf Schenke

Wir geht es genau wie den anderen Kommentatoren: Es funktioniert nicht! Windows erkennt den STM32 nicht. Was aber erstaunt und mich ein wenig ärgert: Es gibt keine Antworten!!

Rudolf Schenke

Rudolf Schenke

Ich muss mich den enttäuschten Nutzern dieses Blogs anschließen:
“Windows hat das Gerät nicht erkannt.”
Ich sehe aber keine Antwort. Darf man die nicht erwarten?

Ricardo

Ricardo

Ich habe bei Amazon AZDelivery 3 x STM32 STM32F103C8T6 gekauft.
Es ist für mich unmöglich, dass Windows 10 64 das Gerät über USB erkennt.
Ich habe Ihr Tutorium und andere im Internet verfolgt.
Irgendeine Lösung?
Danke

Gholiamirza

Gholiamirza

Es geht viel einfacher mit dem STM32F103C.
Schaut am besten hier https://youtu.be/MLEQk73zJoU

Matthias 2

Matthias 2

Scheint kein Einzelfall zu sein. Auch bei mir funktioniert der Anschluß über USB nicht (Win10Pro). Bis dahin lief alles nach Anleitung genauso ab wie beschrieben. Jumper umgesteckt. Stecke ich nun USB an, dann bekomme ich die Meldung “USB-Gerät unbekannt” – mit den entsprechenden Folgen.
Irgendwie passen Bootloader und Treiber nicht zusammen.

Peter Mauß

Peter Mauß

Hallo Markus,
auch bei mir wars wie bei Johannes, Windows 10 erkennt den STM32, trotz installierter Treiber nicht
und zeigt einfach keinen Comport und keine Maple-Devices an.

Johannes

Johannes

Hallo Markus,

leider funktioniert das nicht bei mir. Ich habe alles nach Deiner Anleitung gemacht, alle Treiber installiert und konnte den Bootloader problemlos auf den STM32 laden. Den Jumper habe ich auch entsprechen Deiner Anweisung zurueckgesetzt. Auch habe ich den R10 auf dem Blue Pill Board auf 1,5kOhm geaendert. Leider wird dann nur im Devicemanager nichts angezeigt. Woran kann das liegen? Wuerde mich ueber eine Antwort & Tips freuen.

Viele Gruesse
Johannes

Matthias

Matthias

Wow, hab ich lange versucht aber nie hinbekommen, vielen Dank :-)

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft

Empfohlene Blogbeiträge

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery