stm32f4, libopencm3 remap des NJTRST

OP #7559459
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?

OP #7562091
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.

#7562101
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.