Forum: Mikrocontroller und Digitale Elektronik Stm32f407 flashen


von Mehmet Ali Colak (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen.

Ich habe bisher ausschließlich mit Arduino gearbeitet und stehe vor 
einen
für euch wahrscheinlich kleinen Problem.

Es geht um meinen neuen 3D Drucker. Es war bisher so: wenn ich zum 
flashen in den bootloader wollte, konnte ich kurz nach dem einschalten 
innerhalb von 3 Sekunden auf dem Touchscreen tippen, und ich war im 
flashmodus. Dass hat paar mal einwandfrei funktioniert. Jetzt geht gar 
nichts mehr. Wie schaffe ich es, beim einschalten in den flashmodus zu 
gelangen?

Danke vielmals!

von Stefan F. (Gast)


Lesenswert?

Schau zuerst ins "STM32F4 Reference Manual" Kapitel 2.4 "Boot 
configuration". Die Zuordnung der Pins findest du im "STM32F407 
Datasheet". Außerdem solltest du einen Blick ins "STM32F40x Errata 
Sheet" werfen, um böse Überraschungen zu vermeiden.

Diese drei Dokumente sollten ohnehin Pflichtlektüre sein.

Um es kurz zu machen: Der Pin Boot0 muss auf HIGH und der Pin Boot1 muss 
auf LOW. Dann den Reset Knopf drücken.

Hast du einen konkreten Grund, warum du keinen ST-Link Adapter 
verwendest? Ich frage, weil du mit dem auch debuggen könntest. Als 
ehemaliger Arduino Nutzer könnte das ein sehr angenehmes Erlebnis 
werden.

von Mehmet Ali Ç. (mehmetali)


Lesenswert?

Danke für die schnelle Anwort Stefanus.

Ich bin gestern zum ersten mal in die Verlegenheit gekommen einen STM32 
zu flashen. Hab heute gelernt, dass man dafür einen ST-Link braucht, um 
den Chip zu flashen. Werd mir auf jeden Fall 2 Stück anschaffen.

Hab mit dem Gedanken gespielt komplett auf STM32 umzusteigen, aber das 
ist halt Neuland für mich und wahrscheinlich auch etwas schwieriger als 
Arduino...

Die Vorteile liegen aber eigentlich auf der Hand: Schneller, Sparsamer 
im Stromverbrauch.

Viele Grüße und Danke nochmal!

von Marc (Gast)


Lesenswert?

>Hab mit dem Gedanken gespielt komplett auf STM32 umzusteigen, aber das
>ist halt Neuland für mich und wahrscheinlich auch etwas schwieriger als
>Arduino...
Beitrag "Re: STM32 Core Arduino Framework"

von Mehmet Ali Ç. (mehmetali)


Lesenswert?

Danke f.d. Link Marc!

von Stefan F. (Gast)


Lesenswert?

Mehmet Ali Ç. schrieb:
> Hab heute gelernt, dass man dafür einen ST-Link braucht, um
> den Chip zu flashen.

Es geht auch über den seriellen Bootloader. Dann muss man wie gesagt die 
Boot Pins entsprechend einstellen.

> Die Vorteile liegen aber eigentlich auf der Hand: Schneller, Sparsamer
> im Stromverbrauch.

Sparsamer? Eher nicht und wenn schon, dann nur bei den L Modellen. 
Schneller ist nur von Vorteil, wenn man die Geschwindigkeit benötigt.

Als Arduino Nutzer kannst du schon aus den "kleinen" AVR 
Mikrocontrollern eine Menge mehr heraus holen, indem du auf das Arduino 
Framework verzichtest. Insbesondere auf digitalWrite() und 
digitalRead().

von Johnny B. (johnnyb)


Lesenswert?

Mehmet Ali Ç. schrieb:
> Verlegenheit gekommen einen STM32
> zu flashen. Hab heute gelernt, dass man dafür einen ST-Link braucht

Das ist so nicht korrekt. Willst Du nur flashen, dann kannst Du den 
integrierten Bootloader verwenden, welcher je nach Typ von STM32 viele 
Schnittstellen unterstützt wie z.B. UART, USB, CAN.
https://www.st.com/content/ccc/resource/technical/document/application_note/b9/9b/16/3a/12/1e/40/0c/CD00167594.pdf/files/CD00167594.pdf/jcr:content/translations/en.CD00167594.pdf

Aber natürlich ist ein ST-Link nie eine verkehrte Investition. Kann die 
Clones von Aliexpress empfehlen für ca. $ 1.90:
https://de.aliexpress.com/item/1PCS-ST-LINK-Stlink-ST-Link-V2-Mini-STM8-STM32-Simulator-Download-Programmer-Programming-With-Cover/32792513237.html

: Bearbeitet durch User
von Mehmet C. (mehmetalicolak)


Angehängte Dateien:

Lesenswert?

Hallo,

hab heute meinen StLink bekommen, gleich angeschlossen und Treiber 
installiert. Zu meinem erstaunen wurde kein COM - Port erzeugt, den ich 
für das jp-Firmware-Update der Platine schon bräuchte. Was muss ich 
machen, damit ein COM-Port erzeugt wird?

Der ST-LINK Utility kommt aber auch nicht ganz klar, obwohl ich alles 
ordentlich angeschlossen habe.

Reicht es denn nicht die 4 Pins so anzuschließen:

3.3V->3.3V
GND->GND
SWDIO->SWDIO
SWCLK->SWCLK

Muss ich außerdem BOOT0:HIGH und BOOT1:LOW setzen oder ist das mit dem 
StLink überflüssig. Habs zwar probiert, hat aber nichts gebracht.

Wie gesagt in STM32 bin ich absoluter Beginner, sorry!

Kann mir einer bitte sagen, was ich falsch mache, oder ist vielleicht 
der chip hin?

Danke vielmals!

von Harry L. (mysth)


Lesenswert?

"Connect under Reset" und "Reset Mode" dürften dein Problem sein.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

ST-Link Adapter haben keinen virtuellen COM-Port.

Die Option "Hardware Reset" funktioniert nicht mit den billigen China 
ST-Link clones, weil deren Reset-Ausgang nur bei STM8 funktioniert.

Wie Harry schrieb, kannst du die Option "Connect under Reset" verwenden 
und dann während der Verbindungsaufbaus den Reset-Knopf manuell drücken. 
Aber nicht zu lange, ist ein bisschen Fummelei, das richtige Timing 
herauszufinden.

Wenn dein Target nicht in den sleep modus geht und die SWJ Schnittstelle 
nicht deaktiviert, kannst du auch "Software Reset" (oder so ähnlich) 
nutzen. Dann brauchst du nicht auf den Reset Knopf zu drücken.

Die Boot Jumper muss man nicht umsetzen, wenn man per SWJ Schnittstelle 
programmiert. Aber: Es kann sein, dass das alte Programm sich so 
gründlich aufhängt, das gar nichts mehr geht. In diesem Fall kann es 
hilfreich sein, den Bootloader über die beiden Jumper zu aktivieren. 
Denn der Bootloader lässt die SWJ Schnittstelle aktiv und hängt sich 
auch nicht auf.

von A. B. (Gast)


Lesenswert?

Die STLinkV2 (und Klone) haben alle auch den NRST-Anschluss drauf, nur 
ist bei den Klonen nur das RESET des SWIM-Interfaces über die Stifleiste 
zugänglich. Für das NRST von SWD-Interface müsste man ggf. die 
Leiterbahn fürs SWIM-Reset trennen und per Fädeldraht das vom 
SWD-Interface anschließen. Ähnlich ist's mit dem SWO-Pin. Etwas fummelig 
...

Wenn's schnell, einfach und güstig sein soll, würde ich den STLink von 
irgendeinem Nucleo-64 nehmen. Diese Boards sind leicht erhältlich, so 
etwa ab 12€, und der integrierte STLink hat den COM-Port mit drin.

Den "Haupt"-STM32 auf dem Nucleo kann man (inkl. UART) über Lötbrücken 
vom STLink abtrennen, dann hat man SWD inkl. NRST, SWO und den COM-Port 
frei zugänglich über Stiftleisten auf dem STLink-Teil der Platine. 
Welche Lötbrücken zu entfernen sind, steht im UM:
https://www.st.com/resource/en/user_manual/dm00105823.pdf

Ansonsten lohnt sich auch mal ein Blick auf STLinkV3, leider noch etwas 
rar und teurer, so um die 35€.

von Johannes S. (Gast)


Lesenswert?

Mehmet C. schrieb:
> Zu meinem erstaunen wurde kein COM - Port erzeugt

vom ST-Link gibt es verschiedene Versionen, der COM Port ist in den 
V2-1, -A oder -B drin. Das geht bei den STLinks die an den NUCLEO oder 
neueren DISCO boards dran sind.
Eine Übersicht gibt es hier:
https://www.st.com/resource/en/technical_note/dm00290229.pdf
Die Firmware braucht den Controller mit 128 kB Flash, für die kleineren 
bietet das Firmware Updatetool die Versionen mit VCOM nicht an.
Alternativ kann man die BlackMagicProbe Firmware verwenden, die kann man 
auch auf die kleineren F103C8 flashen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.