Forum: Mikrocontroller und Digitale Elektronik stm32f4, libopencm3 remap des NJTRST


von Ralph S. (jjflash)


Lesenswert?

Peinlich, peinlich...

Jetzt werkel ich schon eine Weile mit STM32 und libopencm3, und weiß
wieder mal, dass ich nichts weiß.

Ich portiere gerade einiges von STM32F103 nach STM32F4xx und stehe da
gerade vor einem Problem, dass ich nicht herausbekomme, wie ich
Anschlüsse des JTAGS als GPIO umkonfiguriere

Beim STM32F103 war das bspw. mit

  gpio_primary_remap(0x00300200, AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_ON);
  gpio_primary_remap(0x00300200, AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_OFF);

möglich, die Function des JTAGS an-, bzw. auszuschalten.

Jetzt habe ich das Problem, dass ich Peripheriehardware der bisherigen
Elektronik weiternutzen möchte und zu meinem Unglück habe ich an PB4
etwas angeschlossen.

Beim STM32F4 ist dort gleichzeitig NJTRST aufgelegt und mit dem
Einschalten ist PB4 nicht verfügbar. Ich beschreibe den STM32F4 mittels
Bootloader und benötige die Funktion nicht.

  gpio_set_af(GPIOB, ...

Funktioniert natürlich nicht, weil ich hier ja nur die Alternated
Functions wählen kann, jedoch nicht den GPIO Anschluss.

Wie kann ich hier also mit libopencm3 NJTRST auf PB4 ummappen?

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Bei allen neueren STM32 als F1 musst Du bei libopencm3 mit 
gpio_mode_setup() und gpio_set_af() arbeiten. Falls Du Jtag benutzen 
willst, darfts Du NJTRST remappen. Das ist ein ewiger Fehler bei den 
STM32.

von Ralph S. (jjflash)


Lesenswert?

Uwe B. schrieb:
> alls Du Jtag benutzen
> willst, darfts Du NJTRST remappen. Das ist ein ewiger Fehler bei den
> STM32.

Wie ich bereits sagte: Ich arbeite mit dem DFU Bootloader und benötige 
JTAG nicht. Grundsätzlich habe ich jetzt die Hardware geändert, 
allerdings würde mich die Lösung des Ausgangsproblems schon 
interessieren.

Uwe B. schrieb:
> gpio_mode_setup() und gpio_set_af()

Das funktioniert nur, wenn du bspw. an einem Pin die Alternated Function 
für ein SPI Anschluß benötigst. Der Anschluß PB14 ist jedoch als Port 
nicht als AF aufgeführt und und kann somit auch nicht mittels 
gpio_set_af als GPIO gemappt werden... Leider.

Aber wie gesagt, ich hab meine Hardware geändert.

von Bauform B. (bauformb)


Lesenswert?

Ralph S. schrieb:
> Der Anschluß PB14 ist jedoch als Port
> nicht als AF aufgeführt und und kann somit auch nicht mittels
> gpio_set_af als GPIO gemappt werden

mit gpio_set_af() nicht, aber mit gpio_mode_setup(). Per MODE Register 
wählt man für jeden Pin GPIO-IN/GPIO-OUT/AF/ANALOG mit 0/1/2/3. Mit 
Mode=0 ist die AF-Einstellung egal, mit MODE=2 und AF=0 bekommt man 
JTRST und mit AF=5 z.B. SPI1_MISO.

Wieder ein schönes Beispiel, warum Programmierung auf Registerebene nach 
Reference Manual einfacher ist, als fremde Libs.

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.