STM32-Prototyp kann keine Verbindung zum PC über ST-Link/V2 SWD herstellen

Schaltplan

Schaltplan

Hintergrund & Was ich ausprobiert habe.

  • Ich habe dieses Setup selbst mit einer neuen STM32F411RC-MCU von digikey (auf einem proto-advant LQFP-64-zu-DIP-64-Breakout-Board) verdrahtet.
  • Ich habe SWCLK, SWDIO, NRST, GND, MCU_VDD verdrahtet, wie im ST-LINK/V2 Benutzerhandbuch (UM1075) beschrieben.
  • Ich versorge meinen Prototyp über USB mit Strom, ein Multimeter bestätigt, dass 3,3 V an jedem der VSS/VDD-Paare und dem VBAT-Pin ankommen.
  • Ich habe die verschiedenen Frequenzen für SWD sowie die verschiedenen Reset-Modi und Modi in der Windows-GUI ausprobiert.
  • Meine Verkabelung ist so minimal wie bei diesem Typ, der den STM32F030 verwendet, daher bin ich mir nicht sicher, was das Problem ist: https://www.newbiehack.com/categories/newbiehack-tutorial-ARM-Video6-GPIOCreatingTheCircuit-nomenu
  • Ich kann eine Verbindung mit UART herstellen, aber es scheint, als ob das STM Flash Loader-Programm nur die Möglichkeit bietet, in die 512-KB-Version zu laden, aber ich habe die 256-KB-Version.

Fehlermeldung

arch:~$ st-util -v99
2016-05-18T12:50:58 DEBUG src/stlink-common.c: stlink current mode: debug (jtag or swd)
2016-05-18T12:50:58 DEBUG src/stlink-common.c: stlink current mode: debug (jtag or swd)
2016-05-18T12:50:58 DEBUG src/stlink-common.c: *** looking up stlink version
2016-05-18T12:50:58 DEBUG src/stlink-common.c: st vid         = 0x0483 (expect 0x0483)
2016-05-18T12:50:58 DEBUG src/stlink-common.c: stlink pid     = 0x3748
2016-05-18T12:50:58 DEBUG src/stlink-common.c: stlink version = 0x2
2016-05-18T12:50:58 DEBUG src/stlink-common.c: jtag version   = 0x19
2016-05-18T12:50:58 DEBUG src/stlink-common.c: swim version   = 0x4
2016-05-18T12:50:58 INFO src/stlink-common.c: Loading device parameters....
2016-05-18T12:50:58 DEBUG src/stlink-common.c: *** stlink_core_id ***
2016-05-18T12:50:58 DEBUG src/stlink-common.c: core_id = 0x00000000
2016-05-18T12:50:58 DEBUG src/stlink-common.c: *** stlink_read_debug32 0 is 0xe0042000
2016-05-18T12:50:58 DEBUG src/stlink-common.c: *** stlink_read_debug32 0 is 0x40015800
2016-05-18T12:50:58 WARN src/stlink-common.c: unknown chip id! 0
2016-05-18T12:50:58 DEBUG src/stlink-common.c: *** stlink_close ***

Unter Linux wird ST-LINK/V2 erkannt, die MCU jedoch nicht.

Windows STM ST-LINK Utility trace.log:
Error (0x16) after target cmd F2 36 04 20 04 E0 00 00 00 00
W at 0xe0042004: 0x00000000
Error (0x12) after target cmd F2 35 04 20 04 E0 00 00 00 00
W at 0xe000edf0: 0xa05f0000
Error (0x12) after target cmd F2 35 F0 ED 00 E0 00 00 5F A0
cErrLog::SetLogTraceOn
STLinkUSBDriver.dll loaded
ST-Link/V2 device detected
Target voltage detected: 3.222947
Driving NRST low
Error getting target IDCODE: if SWD, check SWD connection
Error (4) while initializing ST-Link in SWD mode
ST-Link/V2 device detected
Target voltage detected: 3.221382
Driving NRST low
Error getting target IDCODE: if SWD, check SWD connection
Error (4) while initializing ST-Link in SWD mode
ST-Link/V2 device detected
Target voltage detected: 3.221382
Driving NRST low
Error getting target IDCODE: if SWD, check SWD connection
Error (4) while initializing ST-Link in SWD mode

Die Windows-GUI zeigt „Detection Failed“ für „Target“ & „Target Voltage“ und liefert die Fehlermeldung „Can not connect to target.“

Fragen

  1. Irgendwelche Ideen, was ich als nächstes versuchen sollte, oder was den Betrieb von SWD verhindern könnte?
  2. Ich kann eine Verbindung mit UART herstellen, aber das STM Flash Loader-Programm erkennt das Chipmodell, wenn auch etwas falsch, ich habe nur die 512K-Version in der Dropdown-Liste http://i.imgur.com/Zu2c57K.png , aber mein Chip ist die 256K-Version , also scheint es, als ob ich den Flash Loader nicht zum Laden eines Programms verwenden kann. Gibt es andere Tools, die die Speicherkarte des 256K-Chips kennen und in der Lage sind, eine Binärdatei zu flashen?

Was ich noch ausprobieren muss

  1. Setzen Sie einen 22-Ohm-Widerstand auf die NRST-Leitung zwischen ST-LINK/V2 und der Platine. (AN4488 S. 42)
  2. Verdrahten und erden Sie alle anderen ST-LINK/V2-Header-Pins vollständig, wie in AN4488 pg42 gezeigt, obwohl ich es nicht für notwendig halte.

Datenblätter

Stellen Sie sicher, dass Sie sich im SWD-Modus und nicht im JTAG-Modus befinden? Im Grunde reagiert der Prozessor einfach nicht. Sie könnten wahrscheinlich die gleiche Meldung erhalten, wenn Ihr Debugger vom Ziel getrennt wäre!
Hallo. Das Linux-Dienstprogramm scheint keine Auswahl zwischen JTAG und SWD zu ermöglichen, aber wie Sie der Ausgabe entnehmen können, versucht es möglicherweise beides? Ich habe das Windows-Dienstprogramm erneut ausprobiert und sichergestellt, dass der Port auf den SWD-Modus eingestellt ist. Ich habe auch die verschiedenen Frequenzen ausprobiert. Ich habe das Windows-Dienstprogramm trace.log hinzugefügt, wenn dies bei der Diagnose des Problems hilft.
Hast du UART verkabelt? Sie können es mit der seriellen Bootloader-GUI-Demo von ST versuchen.
Versuchen Sie, die SWD-Frequenz zu reduzieren. Es sieht so aus, als ob es keine Verbindung mit der Zielhardware herstellt - IDCODE ist das erste, was gelesen werden muss, um die Verbindung herzustellen, alles davor zeigt, dass die Sondenhardware gut zu sprechen scheint. Überprüfen Sie auch die Takt- und Datenaktivität auf den SWD-Leitungen. Die Daten sind bidirektional, beginnen aber immer mit einigen Bits, die von der Sonde gesendet werden.
Schau mal ins Datenblatt, die swd Pins benötigen einen Pull-Up oder Pull-Down Widerstand.
Danke für die Idee, Sean, ich habe alle anderen Frequenzen ausprobiert und sie helfen nicht, eine Verbindung herzustellen. Welche Hardware würde ich benötigen, um zu testen, ob Daten auf den Leitungen gesendet werden? Danke für die Idee, rfkortekaas, aber die SWD-Pins werden nach Bedarf intern nach unten / oben gezogen. Ich frage mich, ob es ein Problem verursachen könnte, wenn alle anderen Pins schwebend bleiben. Danke für die Idee Marko, ich werde versuchen, UART zu verdrahten und zu sehen, wie das geht.
Ist Ihr Gerät mit Strom versorgt? Ich sehe, dass Sie die Abschirmung und nicht Pin 5 des USB im Schaltplan verwendet haben, ist das richtig?
Ja ist es. Ich habe das Massesymbol verwendet, um auf alles zu verweisen, das auf Masse geht, und auf den USB-Pin 5 habe ich das Label "GND_OUT" gesetzt. Ich habe eine LED nach meinem Spannungsregler, um festzustellen, ob der Strom durchkommt, und ich habe die Pins auf der MCU mit einem Multimeter gemessen und sie werden tatsächlich mit Strom versorgt. Danke.
Probieren Sie einen Pull-up-Widerstand auf der NRST-Leitung zusammen mit einem 100-nF-Kondensator gegen Masse aus, um zu vermeiden, dass verrauschte Signale den Chip zurücksetzen.
Schließen Sie außerdem einen 100-M-Widerstand und einen 1-uF-Kondensator zwischen Abschirmung und USB-Pin 5 an. Normalerweise ist die Abschirmung schwebend und der Pin ist geerdet. Viele Geräte lassen den Schild komplett schweben.
Haben Sie versucht, sich das RM0383-Referenzhandbuch anzusehen? Abschnitt 23.3.1 Dort heißt es, dass Sie mit Jtag beginnen und dann zu SWD wechseln müssen. Könntest du das mal ausprobieren und dich nochmal melden, ob das funktioniert?
@ Dave - das ist eine Fehlinterpretation. Es muss nicht „mit JTAG gestartet“ werden, es werden lediglich die SWD-Signale und ein Massebezug benötigt. Wahrscheinlich macht die erste gesendete Sequenz das verwendete Verfahren für die Zustandsmaschine klar.
Ich hatte erst letzte Woche ein Problem mit dem ST Link und einem STM32F4. Sehr intermittierende Verbindungen, die sich bei meiner Seriell-zu-USB-Verbindung als Masseschleife herausstellten. Wenn Sie sowohl UART als auch SWD an Ihren Computer angeschlossen haben, versuchen Sie, die UART-Leitungen zu entfernen.

Antworten (1)

Sie müssen den Pin VDDA (analog) von den Pins VDD (digital) trennen. Sie müssen L (Induktor oder SMD-Ferritperle) und C (Kondensator) zwischen VDDA- und VDD-Pins verwenden. Der Kondensator muss so nah wie möglich am Pin VDDA sein. Oder verwenden Sie den zweiten LDO nur für VDDA- und VSSA-Pins.

Das ist falsch und irreführend . Eine solche Trennung ist nur erforderlich , wenn man ein geringes Rauschen auf den analogen Teilen wünscht. Es hat nichts damit zu tun, dass die SWD-Schnittstelle nicht funktioniert.