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...
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?
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
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?
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.
@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).
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.
Reset Prozedur: Ziel µC Reset Taster drücken, ST-Link verbinden, Reset Taster loslassen.
Ich habe eben die Geschwindigkeit zwischen meinem China ST-Link und dem Bluepill getestet. SWD freq : 4000 KHz und das bei 40cm Kabel dazwischen.
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).
Hast Du CubeMX verwendet? Das schaltet SWD für dich aus. ;)
Achso, gut zu wissen. Nein, ich benutze Eclipse mit der Ac6 STM32 MCU GCC toolchain und der STM32F4xx Standard Peripherals Library.
Dann würde mir nur noch einfallen, dass vielleicht ein Update des ST-Link auf dem Discovery oder Nucleo erforderlich ist.
Die Version ist V2.J34.S0, das dürfte die neueste sein (habe ich vor kurzem geupdatet).
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).
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.
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 ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.