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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.