Ich habe mein eigenes Board mit STM32F7-45VGT6 gebaut. Ich habe es erfolgreich mit ST-LINK v2 programmiert (allerdings nicht mit dem Original) und kann jetzt nicht einmal eine Verbindung mit der MCU herstellen.
Ich verwende das ST-Link-Dienstprogramm von der ST- und SWD-Schnittstelle. Es kann vorkommen, dass ich SWD-Pins als Ausgabe verwende und sie in meinem Code als GPIO-Ausgabe einstelle. Kann es der Fall sein?
Trotzdem verbinde ich meinen Reset-Pin mit GND und setze im ST-Link-Dienstprogramm die Option "Unter Reset verbinden", aber es funktioniert nicht ... Was kann ich tun?
Im Internet habe ich etwas über die Verwendung von BOOT0 Pin gefunden, aber ich weiß nicht genau ...
stm32
programming
flash
st-link
zupazt3
quelle
quelle
Antworten:
Ich habe es geschafft, dieses Problem zu lösen. Wenn jemand auf ein ähnliches Problem stößt, habe ich Folgendes getan:
Ich habe ST-Link v2 und ST-Link Utility verwendet. In der Einstellung stelle ich "Connect under Reset" und die SWD-Schnittstelle ein (ich bin mir über die Frequenz nicht sicher).
Dann drücke ich die Reset-Taste auf meinem Board und klicke auf "Ziel" -> "Chip löschen". Kurz nach dem Klicken habe ich die Taste losgelassen. Der Chip wurde gelöscht, sodass ich meine MCU jetzt neu programmieren kann.
Wenn Sie SWD-Pins als Ausgang verwenden müssen, fügen Sie zu Beginn des Programms eine Verzögerung hinzu oder verwenden Sie einen Jumper, um das Setzen dieser Pins als Ausgänge zu deaktivieren / aktivieren.
quelle
Damit die Verbindung unter Reset funktioniert, muss der ST-Link die Kontrolle über den Reset-Pin haben. Wenn Sie ihn mit Masse verbinden, hat der ST-Link keine Chance, das Ziel zum Laufen zu bringen und Zugriff darauf zu erhalten.
Wenn Sie den BOOT0-Pin beim Einschalten hochziehen, startet die MCU im internen Bootloader und Sie können über mehrere serielle Protokolle darauf zugreifen (weitere Informationen finden Sie im Referenzhandbuch).
Im Bootloader sollten die SWD-Pins verfügbar sein, um Zugriff zu erhalten, aber ich bin mir nicht 100% sicher.
Der ST Flash Loader Demonstrator ist ein Tool, mit dem Sie das Mikro über die UART-Schnittstelle löschen / programmieren können. Wenn Sie auf keinen der UARTs Ihres Mikros zugreifen können, funktioniert diese Lösung nicht für Sie.
quelle
Wenn Sie stmcubemx verwenden, müssen Sie das serielle Kabel auf der Registerkarte stmcube pinout konfigurieren. Klicken Sie auf der Registerkarte Pinbelegung auf SYS und ändern Sie die Debug-Option in serielles Kabel. Es behebt mein Problem und vielleicht auch Ihr Problem.
quelle
Ich habe Code auf mein eigenes STM32F427-Board heruntergeladen. Dann kann ich mit dem ST-LINK-Dienstprogramm keine Verbindung mehr zu meinem Board herstellen. Ich denke mein Code vermasselt die Debug-Port-Pin-Konfigurationen (? Kann nicht bestätigen). Was ich getan habe, ist Folgendes, um die Verbindung herzustellen und mein Board neu zu programmieren:
Mit diesem Trick habe ich 2 Bretter restauriert. Hoffe das hilft. --Bob
quelle
Wie Dili sagte:
STM32CubeMx konfiguriert den Debug-Port nicht standardmäßig, daher funktioniert ST-Link nicht mehr, sobald Sie Ihren Code flashen. Sie müssen den Chip beispielsweise mit dem ST-Link-Dienstprogramm löschen. Um mich mit der MCU zu verbinden, musste ich beim Einschalten den BOOT0-Pin hochziehen, um den Bootloader zu aktivieren. Gehen Sie dann zum Tarjet-Menü und löschen Sie den Chip .
quelle
Um die MCU neu zu programmieren, halten Sie die Reset-Taste gedrückt und wählen Sie im ST-Link-Dienstprogramm die Option „Mit Gerät verbinden“ oder drücken Sie in Ihrer IDE (z. B. Keil) auf „Download“ und lassen Sie die Reset-Taste los.
quelle
Die Boot-Pins (in einigen Versionen Bits) können den Start des Debuggers verhindern. Stellen Sie sicher, dass Sie das Startmuster beim Start nicht implementieren (bestimmtes Binärmuster an den Pins boot0 und boot1), da sonst Ihre MCU in den Startzustand versetzt wird.
quelle