Forum: Mikrocontroller und Digitale Elektronik STM32 - JTAG Alternate function


von Tim L. (lighttec)


Lesenswert?

Guten Abend,

ich beschäftige mich zur Zeit mit dem STM32F103RBT6 (Nucleo-Board) und 
habe ein Problem mit der JTAG-Schnittstelle: Laut Datenblatt und 
Reference Manual sind PB3 und PB4 nach dem Reset auf JTDO und NJTRST 
gemapped. Des Weiteren soll laut RM das CRL-Register vom GPIOB nach dem 
Reset 0x4444 4444 beinhalten.

Nach dem Reset gibt der Controller jedoch 3.3V auf PB4 (JNTRST) aus, PB4 
ist in den Registern als AF_Output_PP initialisiert und das ODR von 
GPIOB enthält eine 1. Warum ist das so? Das seltsame ist, dass der Takt 
für GPIOB und AFIO nicht angeschaltet ist.

Muss ich tatsächlich jedesmal den Takt für AFIO und GPIOB anschalten und 
das auf PB3 und PB4 remappen und zusätzlich noch die 1 aus dem ODR 
löschen?

Viele Grüße,
Tim

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Wenn du diese Pins als normale I/O Pins verwenden willst, musst du den 
Takt für Port B und AFIO einschalten, dann JTAG abschalten.

http://stefanfrings.de/stm32/index.html#swjdisable

> Muss ich tatsächlich jedesmal den Takt für AFIO und GPIOB
> anschalten und das auf PB3 und PB4 remappen

Ja.

> und zusätzlich noch die 1 aus dem ODR löschen?

Da bin ich überfragt, hab ich nicht ausprobiert. Ich hatte diese Pins 
bisher nur als Ausgang verwendet.

> Warum ist das so?

Mit Sicherheit, weil der Chip-Designer von ST Microelectronics es so 
wollte.

Ich denke:
Es hängt damit zusammen, das die SWJ Schnittstelle per default aktiv 
sein soll und sowohl SWD als auch JTAG Protokoll unterstützen soll. Wenn 
das nicht so vorgegeben wäre, könnte man den Chip nicht über die JTAG 
Schnittstelle programmieren.

Da JTAG eine Zeit lang total in Mode war, hätten einige Leute vielleicht 
andere µC bevorzugt, wenn bei STM32 das JTAG Interface nicht per default 
aktiv gewesen wäre.

von Tim L. (lighttec)


Lesenswert?

Okay, vielen Dank für die Antwort.

Eine Frage habe ich aber noch: Im reference manual steht folgendes:
"9.1.1 General-purpose I/O (GPIO)
During and just after reset, the alternate functions are not active and 
the I/O ports are
configured in Input Floating mode (CNFx[1:0]=01b, MODEx[1:0]=00b).
The JTAG pins are in input PU/PD after reset:
PA15: JTDI in PU
PA14: JTCK in PD
PA13: JTMS in PU
PB4: NJTRST in PU"

Habe ich etwas übersehen? Bei mir ist nach dem Reset PB4 als 
AF-Output-PP konfiguriert.

EDIT: Okay, alles hat seine Richtigkeit. Ich bin bei dem Auslesen der 
Register in der Zeile verrutscht.

: Bearbeitet durch User
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.