ST-Link kann meine STM32-MCUs nicht per Software über SWD zurücksetzen

Ich habe an einem Problem mit zwei verschiedenen Boards gearbeitet (eines mit STM32F7 und das andere mit STM32F3). Beim Versuch, die Boards zu programmieren (mit einem ST-Link, der auf Nucleo/Discovery-Boards bereitgestellt wird), erhalte ich verschiedene Fehler, die sich auf das Zurücksetzen beziehen.

Grundsätzlich, wenn ich versuche, ein Programm von STM32CubeIDE aus zu "ausführen", wobei "Softwaresystem zurücksetzen" ausgewählt ist, erhalte ich je nach verwendetem Debugger Folgendes:

  • für ST-Link GDB:

    STM32_AppReset(), Fehlerrücksetzungsziel.

  • für OpenOCD:

    Undefinierter Debug-Grund 8 – Ziel muss zurückgesetzt werden
    Info: Akzeptieren der „gdb“-Verbindung auf TCP/3333
    Undefinierter Debug-Grund 8 – Ziel muss zurückgesetzt werden
    Fehler: Zeitüberschreitung beim Warten auf Ziel angehalten
    Fehler beim Ausführen des gdb-flash-erase-start-Ereignisses auf dem Ziel STM32F373CCTx. CPU:
    ZIEL: STM32F373CCTx.cpu - Nicht angehalten
    Fehler: Ziel nicht angehalten
    Fehler: Löschen der Sektoren 0 bis 10 fehlgeschlagen
    Fehler: flash_erase hat -304 zurückgegeben

Die einzige Möglichkeit, die MCUs zu programmieren, besteht darin, das ST-Link-Dienstprogramm zu verwenden, es auf Hardware-Reset einzustellen (da es bei Verwendung des Software-System-Resets nicht einmal eine Verbindung zur MCU herstellt), die MCU zu programmieren und sie dann manuell aus- und wieder einzuschalten. Wenn sich bereits ein Programm im MCU-Speicher befindet, schlägt das ST-Link-Dienstprogramm fehl. Die Fehler sind bei F3 und F7 unterschiedlich. Auf F7 wird nur gesagt, dass das Ziel nicht zurückgesetzt werden kann, und auf F3 ist die Ausgabe:

13:06:09 : Geräte-ID: 0x432
13:06:09 : Geräte-Flash-Größe: 256KBytes
13:06:09 : Gerätefamilie :STM32F37xx
13:06:26 : Die Elf-Loader-Programmfunktion schlägt fehl.
13:06:28 : Die Elf-Loader-Programmfunktion schlägt fehl.
13:06:28 : Memory-Loader Fehler
13:06:28 : Fehler beim Programmablauf aufgetreten!
13:06:28 : Programmierfehler @ 0x08000188!

Ich bin mir nicht sicher, ob es ein Softwareproblem oder ein Hardwareproblem ist. In Bezug auf meine Verbindungen verwende ich auf beiden Boards nur SWDIO, SWCLK und GND. Die MCU erhält auf beiden Platinen stabile 3,3 V. Es gibt keinen Reset-Taster, bei beiden Platinen ist der NRST-Pin direkt mit 3,3V verbunden. Ich habe versucht, einen 100-nF-Kondensator zwischen NRST und GND hinzuzufügen, um sicherzustellen, dass es keinen Abfall von 3,3 V gibt, aber das hat nichts geändert.

Als Eingangsschutz gibt es 100-Ohm-Widerstände auf SWDIO- und SWCLK-Leitungen, es gab auch TVS-Dioden, aber ich habe sie entfernt, als ich versuchte, eine Lösung zu finden (und es hat nichts geändert). Ich habe auch mehrere verschiedene ST-Link-Geräte ausprobiert, aber es hatte keine Auswirkungen.

Ich hoffe, ich habe alle notwendigen Details bereitgestellt, da ich mir seit Stunden die Haare darüber raufe und keine Lösung finden konnte. Ich habe mehrere andere Boards mit genau demselben Verbindungsschema entworfen (nur SWDIO und SWCLK, 100-Ohm-Widerstände usw.) und hatte keine Probleme, sie zu programmieren und zu debuggen. Zuerst dachte ich, dass eine F7-Platine defekt sei, aber das gleiche Problem besteht auf einer anderen Platine mit einer anderen MCU, was darauf hindeutet, dass ich möglicherweise einen größeren Fehler mache.

Vielen Dank im Voraus.

Antworten (1)

Der direkte Anschluss von NRST an 3,3 V VCC ist falsch. Trennen Sie es.

Vielen Dank! Ich wusste, dass es ein dummer Fehler war ;)