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!
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.
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!
>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"
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().
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!
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.
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€.
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.