Forum: Mikrocontroller und Digitale Elektronik stm32fx flashen mit st-link von nucleo oder discovery boards


von Thomas W. (ratos)


Lesenswert?

Hallo,

ich möchte stm32f3/4 Mikrocontroller mit einem st-link von einem Nucleo- 
oder Discoveryboard flashen.
Mit dem Nucleo-f446re funktioniert alles sehr gut: Ich habe die Jumper 
von CN2 geöffnet und GND, SWDIO und SWCLK mit den zu flashenden 
Mikrocontrollern verbunden und über die STM32 ST-LINK Utility Software 
programmiert.

Leider habe ich das Nucleo-f446re versehentlich zerstört und versuche es 
nun mit einem Nucleo-f401re und einem stm32f4discovery. Bei beiden gibt 
es nur die Fehlermeldung "Can not connect to target". Die STMs auf den 
jeweiligen Boards lassen sich aber ohne Fehlermeldung programmieren.

Kennt jemand das Problem und kann mir eine lange Fehlersuche ersparen? 
Oder weiß jemand, wieso es einen Unterschied zwischen den beiden 
Nucleoboards gibt? Der Aufbau der st-links ist eigentlich identisch...

von Uwe Bonnes (Gast)


Lesenswert?

Du willst also von Board 1 auf Board 2 debuggen:
- Beider Jumper CN4 gezoagen?
- Kurze Kabel?
- Schon mit zusaetzlicher Masseleitung probiert?
- Welches Programm genau?
- Welche anderen Ausgaben?

von Thomas W. (ratos)


Lesenswert?

Nur programmieren, nicht debuggen.

Uwe Bonnes schrieb:
> - Beider Jumper CN4 gezoagen?
Ja, aber bei den Nucleos heißt es CN2 und beim discovery CN3.

Uwe Bonnes schrieb:
> - Kurze Kabel?
20cm, hat bis jetzt ausnahmslos immer funktioniert. 5kHz Frequenz bringt 
auch nichts.

Uwe Bonnes schrieb:
> - Schon mit zusaetzlicher Masseleitung probiert?
Ja, ohne Erfolg.

Uwe Bonnes schrieb:
> - Welches Programm genau?
Unterschiedlichste selbst geschriebene Programme, immer ohne Benutzung 
der SWDIO und SWCLK pins, falls du darauf hinaus willst.

Uwe Bonnes schrieb:
> - Welche anderen Ausgaben?
14:20:46 : Can not connect to target!
                  Please select "Connect Under Reset" mode from 
Target->Settings menu and try again.
                  If you're trying to connect to a low frequency 
application , please select a lower SWD Frequency mode from 
Target->Settings menu.
14:20:48 : No target connected

Connect under reset hat auch nicht funktioniert und das habe ich sonst 
auch nie machen müssen.

edit: programmieren statt programieren

: Bearbeitet durch User
von pegel (Gast)


Lesenswert?

Thomas W. schrieb:
> immer ohne Benutzung der SWDIO und SWCLK pins

Der Ziel µC weiß aber schon, dass SWD und nicht JTAG gewählt ist?
Denn die Fehlerbeschreibung klingt so.

Hast Du auch ein Hardware Reset am Ziel während des Verbindens 
ausgeführt?

von Uwe Bonnes (Gast)


Lesenswert?

Ich habe es gerade ausprobiert Nucleo B mit Nucleo A zu debuggen. Erst 
mit einer Bruecke, die NRST der beiden 6-poliger Debugstecker verbindet, 
geht es.

von Thomas W. (ratos)


Lesenswert?

@pegel:
Ja, im STM32 ST-LINK Utility ist momentan SWD mit 100kHz ausgewählt.
Hardware reset habe ich auch ohne Erfolg probiert (mit verschiedenen 
Timings, wann ich Reset auf high bringe).

@Uwe Bonnes:
Danke für den Test, ich habe es auch gerade probiert: Mit dem discovery 
kann ich das Nucleo ebenfalls nur mit NRST programmieren. Bei meinem 
eigenen Board statt dem Nucleo funktioniert das aber trotzdem nicht. 
Bevor ich jetzt irgendwelche Hardwareanpassungen mache möchte ich aber 
gerne wissen, warum es dann mit dem Nucleo-f446re auch ohne NRST bei 
meinem eigenen Board immer funktioniert hat (und das nicht nur bei 
diesem, sondern auch noch mindestens 2 weiteren eigenen Boards, wo nur 
das Nucleo-f446re funktioniert hat, aber andere nicht).

von pegel (Gast)


Lesenswert?

Thomas W. schrieb:
> im STM32 ST-LINK Utility ist momentan SWD mit 100kHz ausgewählt

Ich meinte mehr, ob vielleicht dein vorheriges Programm im Ziel µC 
dessen SWD ausgeschaltet hat. Nur dann ist der ganze Reset Aufwand 
erforderlich.
2 MHz im ST-LINK Utility sollte problemlos funktionieren.

von pegel (Gast)


Lesenswert?

Reset Prozedur:

Ziel µC Reset Taster drücken, ST-Link verbinden, Reset Taster loslassen.

von pegel (Gast)


Lesenswert?

Ich habe eben die Geschwindigkeit zwischen meinem China ST-Link und dem 
Bluepill getestet.

SWD freq    : 4000 KHz

und das bei 40cm Kabel dazwischen.

von Thomas W. (ratos)


Lesenswert?

Ich weiß nicht mal auswendig, wie man SWD abschalten kann. Ich lasse 
PA13 und PA14 (SWDIO und SWCLK) komplett unberührt.
Genau diese Resetprozedur habe ich gemacht (mit Einstellung Connect 
Under Reset - Hardware Reset, ohne Erfolg.
Danke für den Test. Dass es an der Geschwindigkeit liegt hätte mich auch 
gewundert, da es bisher ja immer auch mit 4MHz funktioniert hat (mit dem 
Nucleo-f446re).

von pegel (Gast)


Lesenswert?

Hast Du CubeMX verwendet?
Das schaltet SWD für dich aus. ;)

von Thomas W. (ratos)


Lesenswert?

Achso, gut zu wissen.
Nein, ich benutze Eclipse mit der Ac6 STM32 MCU GCC toolchain und der 
STM32F4xx Standard Peripherals Library.

von pegel (Gast)


Lesenswert?

Dann würde mir nur noch einfallen, dass vielleicht ein Update des 
ST-Link auf dem Discovery oder Nucleo erforderlich ist.

von Thomas W. (ratos)


Lesenswert?

Die Version ist V2.J34.S0, das dürfte die neueste sein (habe ich vor 
kurzem geupdatet).

von Thomas W. (ratos)


Lesenswert?

Update:
Nach einem Verbindungsversuch des st-links bleibt der µC in einem 
Zustand, der auch durch 0V am NRST (danach wieder 3,3V) nicht wieder 
verlassen wird (Die bereits programmierte Software startet nicht).

von Thomas W. (ratos)


Lesenswert?

Ok, jetzt wird es komisch:
Wenn ich den Oszilloskoptastkopf oder 22pF zwischen SWCLK am 
Discoveryboard und GND an meinem Board einfüge funktioniert es... 
Allerdings müssen dafür auch die 3V vom Discovery mit den 3,3V von 
meinem Board verbunden sein.

von Carl D. (jcw2)


Lesenswert?

Thomas W. schrieb:
> Ok, jetzt wird es komisch:
> Wenn ich den Oszilloskoptastkopf oder 22pF zwischen SWCLK am
> Discoveryboard und GND an meinem Board einfüge funktioniert es...
> Allerdings müssen dafür auch die 3V vom Discovery mit den 3,3V von
> meinem Board verbunden sein.

Weniger Überschwingen am Takt-Eingang. Hilf manchmal ;-)

von Thomas W. (ratos)


Lesenswert?

Ich messe dann auch eine Flankensteilheit von weniger als 10ns. Dafür 
ist mein Board wohl nicht gemacht. Oder es liegt an den DCDC 
Schaltwandlern... Naja, jetzt funktioniert ja alles. Danke für die 
Antworten :)

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.