Forum: Mikrocontroller und Digitale Elektronik STM32F0 Discovery und ST-Link V2


von Matthias H. (streno)


Lesenswert?

Hallo zusammen,

ich habe ein STM32F=-Discovery mit dem onboard st-linkv2 programmiert 
und das hat super geklappt. Nun Habe ich es mit einem ST-Link V2 
versucht.

Der Treiber ist aktuell und der ST-Link wird mir im Geräte Manager 
angezeigt.

Die Jumper auf dem Board wurden entfernt.

Die SWD_Leiste wurde wie folgt verbunden

Pin 1-> Pin 19 VDD
Pin 2-> Pin 9 SWDCLK
Pin 3-> Pin 20 GND
Pin 4-> Pin 7 SWDIO
Pin 5-> Pin 15 Reset

Wenn ich das Programm starten möchte bekomme ich immer die Meldung: Can 
not connect to target.

Allerdings leuchtet auch keine LED am Board, obwohl ich zwischen Pin 1 
und Pin 3 3,3V messe.

Habe ich irgendwas vergessen?

von Chris K. (Gast)


Lesenswert?

Spannung angelegt? Der VDD Pin ist nur für die Referenzspannung und 
versorgt nicht deine Schaltung ansich.

von Matthias H. (streno)


Lesenswert?

Ja mittlerweile leuchtet die PWR Led und die COM LED blinkt

von Matthias H. (streno)


Lesenswert?

Okay ich konnte den Fehler eingrenzen.

Meine CLK und SWDIO Leitung senden daten und sehen laut oszi gut aus.

Einzig der Reset ist immer Low... Ich denke hier liegt das Problem.

Hat jemand jetzt eine Idee oder das selbe Problem?

von Harry L. (mysth)


Lesenswert?

Bei dem ST-Link V2.1 auf den Discovery- und Nucleo-Boards sorgt der 
ST-Link auch für den Reset der MCU - bei den ST-Link V2 nicht.

In SW4STM32 kann man das in der Debug-Konfiguration entsprechend 
umschalten.
In der default-Einstellung steht da "Connect under Reset"
Das muss man auf "Software system Reset" wechseln.

von Streno (Gast)


Lesenswert?

Harry L. schrieb:
> Bei dem ST-Link V2.1 auf den Discovery- und Nucleo-Boards sorgt
> der ST-Link auch für den Reset der MCU - bei den ST-Link V2 nicht.
>
> In SW4STM32 kann man das in der Debug-Konfiguration entsprechend
> umschalten.
> In der default-Einstellung steht da "Connect under Reset"
> Das muss man auf "Software system Reset" wechseln.

Und wie bekommt das Board dann ein Reset Signal?

Wenn ich die Reset Leitung weglasse, kann ich es trotzdem nicht 
verbinden

von Harry L. (mysth)


Lesenswert?

Streno schrieb:
> Und wie bekommt das Board dann ein Reset Signal?
>
> Wenn ich die Reset Leitung weglasse, kann ich es trotzdem nicht
> verbinden

Das musst du in der Debug-Configuration passend umstellen.

Run->Debug Configurrations>Debugger
Da auf "Show Generator Options" klicken und in dem DropDown für Reset 
Mode entsprechenden Eintrag wählen.

von Mike J. (linuxmint_user)


Lesenswert?

In meiner board.cfg (für OpenOCD) steht drin:
1
# This is a board with a single STM32F103C8T6 chip.
2
source [find interface/stlink-v2.cfg]
3
set WORKAREASIZE 0x4000
4
5
#transport select swd # fuer J-Link
6
source [find target/stm32f1x.cfg]
7
# use software reset
8
reset_config srst_only srst_nogate

von Matthias H. (streno)


Lesenswert?

Harry L. schrieb:
> Streno schrieb:
>> Und wie bekommt das Board dann ein Reset Signal?
>>
>> Wenn ich die Reset Leitung weglasse, kann ich es trotzdem nicht
>> verbinden
>
> Das musst du in der Debug-Configuration passend umstellen.
>
> Run->Debug Configurrations>Debugger
> Da auf "Show Generator Options" klicken und in dem DropDown für Reset
> Mode entsprechenden Eintrag wählen.

Ja ich versuche ihn ja gerade mit ST-Link utility zum laufen zu bringen. 
Da gibt es die modi: normal, hot plug und hardeware reset. habe alles 
schon ausprobiert und immernoch keinen erfolg

von klausr (Gast)


Lesenswert?


von pegel (Gast)


Lesenswert?

Matthias H. schrieb:
> Ja ich versuche ihn ja gerade mit ST-Link utility zum laufen zu bringen.

Das geht immer wenn alles richtig angeschlossen ist.

Sonst bei Openocd das übliche:

Mike J. schrieb:
> # use software reset
> reset_config srst_only srst_nogate

das srst_only muss raus. Kommt auch noch in der stm32f1x.cfg vor, da 
auch löschen.
Reset Leitung nicht angeschlossen.

von pegel (Gast)


Lesenswert?

pegel schrieb:
> Reset Leitung nicht angeschlossen.

Reset Leitung wird nicht angeschlossen.

von pegel (Gast)


Lesenswert?

Oh, habe jetzt die cfg von Mike angenommen.
Ob das bei F0 auch so ist weiß ich nicht.

von Mike J. (Gast)


Lesenswert?

pegel schrieb:
> das srst_only muss raus. Kommt auch noch in der stm32f1x.cfg vor, da
> auch löschen.
> Reset Leitung nicht angeschlossen

Okay, danke. Habe auch erst vor zwei Wochen damit angefangen.
Das flashen und Debugen über Eclipse ging bei mir so eigentlich, aber 
ich werde das so ändern.

Es war schon komisch dass die STM32 boards so schnell da waren, hat nur 
eine Woche gebraucht.
Die Buchse habe ich nachgelötet und den 10k Widerstand durch 1.5k 
ersetzt.
Die Chinesen scheinen ein einfach eine sehr große Menge von den Platinen 
zu produzieren und die Anlage danach komplett umzustellen.

von pegel (Gast)


Lesenswert?

Mike J. schrieb:
> Das flashen und Debugen über Eclipse ging bei mir so eigentlich, aber
> ich werde das so ändern.

Brauchst du dann ja nicht ändern.
Das Problem trat allerdings öfter auf, auch bei mir.
Beim nächsten Update werden die Dateien wieder überschrieben.

von Jim M. (turboj)


Lesenswert?

pegel schrieb:
>> reset_config srst_only srst_nogate
>
> das srst_only muss raus. Kommt auch noch in der stm32f1x.cfg vor, da
> auch löschen.
> Reset Leitung nicht angeschlossen.

Nicht einfach löschen:
1
reset_config none

überschreibt eine eventuell vorhandene andere Einstellung und gehört in 
die board.cfg die man sich normalerweise selbst erstellt.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Bei klappt es mit einem China-STLinkV2-Clon nur, wenn ich folgendes 
verwende:
1
source [find interface/stlink-v2.cfg]
2
set WORKAREASIZE 0x4000
3
source [find target/stm32f1x_stlink.cfg]
4
reset_config none separate

Besonders wichtig die "Reset"-Zeile ... Alles andere hat bei mir nie 
funktioniert.

von Christopher J. (christopher_j23)


Lesenswert?

Matthias H. schrieb:
> ich habe ein STM32F=-Discovery mit dem onboard st-linkv2 programmiert
> und das hat super geklappt. Nun Habe ich es mit einem ST-Link V2
> versucht.
>
> Der Treiber ist aktuell und der ST-Link wird mir im Geräte Manager
> angezeigt.
>
> Die Jumper auf dem Board wurden entfernt.
>
> Die SWD_Leiste wurde wie folgt verbunden
>
> Pin 1-> Pin 19 VDD
> Pin 2-> Pin 9 SWDCLK
> Pin 3-> Pin 20 GND
> Pin 4-> Pin 7 SWDIO
> Pin 5-> Pin 15 Reset

Sorry wenn ich so dumm frage aber was hast du denn mit was verbunden? 
Für mich klingt das so als hättest du einen externen ST-Link V2 (mit 
20-Pin Header) mit der SWD-Leiste des Disco-Boards verbunden.

Falls es so sein sollte, dann kann das nicht funktionieren. Die 
SWD-Leiste ist nicht als Input, sondern als Output gedacht, d.h. mit 
diesen Pins kannst du einen externen Controller über den ST-Link des 
Disco-Boards debuggen (wenn die Jumper gezogen sind) aber nicht anders 
herum den Controller des Disco-Boards mit einem externen ST-Link.


Jim M. schrieb:
> pegel schrieb:
>>> reset_config srst_only srst_nogate
>>
>> das srst_only muss raus. Kommt auch noch in der stm32f1x.cfg vor, da
>> auch löschen.
>> Reset Leitung nicht angeschlossen.
>
> Nicht einfach löschen:
> reset_config none

Davon habe ich noch nie gehört und hatte damit auch noch nie Probleme. 
Der ST-Link V2 auf meinem Disco-Board hat die Reset-Leitung auch ganz 
regulär angeschlossen und mit
1
openocd -f interface/stlink-v2-1.cfg -f target/stm32f0x.cfg -c "reset_config srst_only srst_nogate connect_assert_srst" -c init -c "reset halt"

kann ich einen "connect under reset" durchführen, z.B. wenn die SWD-Pins 
fälschlicherweise umkonfiguriert wurden und man sich ausgesperrt hat. 
Ich habe hier auch noch einen "normalen" ST-Link V2 (auch ein 
China-Klon), bei dem ist die Reset-Leitung ebenfalls korrekt 
angeschlossen. Aber ich habe es auch gerade mal bei einem ST-Link V2 
"mini" probiert und bei dem scheint die Leitung nicht angeschlossen zu 
sein und OpenOCD schlägt fehl, wegen eines Timeouts. Habe mal kurz 
nachgeforscht und es scheint so, als hätten die Chinesen die 
Reset-Leitung für den STM8 herausgeführt, also SWIM-RST. Das passt 
zumindest bei meinem "Mini" zum Pinout, d.h. STM8 obere Pin-Reihe, STM32 
unten.

Jedenfalls habe ich bisher mit dem ST-Link V2 mini mit dem ganz 
einfachen
1
openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg
gearbeitet (bzw. stm32f0x.cfg für F0) und hatte bisher nie Probleme 
damit. Wenn ich da irgendetwas von "reset_config" mit hinein packe, dann 
kommt bei dem ST-Link mini allerdings besagtes Timeout-Problem.

Harry L. schrieb:
> In der default-Einstellung steht da "Connect under Reset"
> Das muss man auf "Software system Reset" wechseln.

Wenn SW4STM32 nicht sonst noch irgendwo hinter dem Rücken irgendetwas zu 
"reset_config" hinzufügt sollte das eigentlich als Lösung reichen. An 
den .cfg-Dateien in OpenOCD musste ich jedenfalls bisher noch nichts 
ändern.

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.