STM32F401 (Blackpill) lässt sich nur 1x per SWD flashen

Gast #6655983
Lesenswert?

Peter K. schrieb:
> Wieso geht es mit der originalen Firmware, aber danach nur noch mit
> reset Pin?

Weil du vermutlich mit dem Programm das du reinschreibst die
SWD-Schnittstelle verwendest/disablest und dadurch der
Controller nur noch unter "Reset-aktiv" wieder angesprochen
werden kann.
Gast #6655987
Lesenswert?

Vermutlich deaktiviert deine eigene Firmware den SWD Anschluss oder legt 
den µC schlafen (dann geht SWD nämlich auch nicht mehr).

Auf den Bluepill Boards ist die übliche Vorgehensweise, dass das eigene 
Programm nach dem Reset erstmal 1-2 Sekunden wartet, bevor es SWD 
deaktiviert (wenn überhaupt). Dann kann man zum Verbindungsaufbau den 
Reset Taster drücken.

Es geht auch ohne dieses Delay, aber das Timing ist kniffelig.

Alternativ kannst du den Boot0 Jumper auf HIGH umstecken, dann startet 
deine Firmware nicht.

> Und wieso legen die den Reset PIN nie mit auf den SWD Anschluss?

Weil das Board für Arduino gemacht wurde. Weder Arduino noch dessen 
Bootloader deaktivieren die SWD Schnittstelle. Außerdem enthält der 
Bootloader das oben genannte Delay.

Die China ST-Link Sticks haben dementsprechend auch keinen Reset 
Ausgang.

Ja, das ist außerhalb von Arduino suboptimal.

Die Möglichkeit, während des Reset connecten zu können, ist zwar bei 
allen STM32 gegeben, bei anderen ARM Controllern jedoch nicht 
selbstverständlich.
Gast #6656070
Lesenswert?

Diese Boards haben einen Reset und einen Boot0 Taster. Wenn der uC im 
WFI hängt: Boot0 gedrückt halten und dann einmal Reset, danach kommt der 
Debugger auch wieder dran.
Wenn das Board im Gehäuse steckt, dann ist das natürlich schwieriger.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren