STM32G4 PB8 (Boot0) als GPIO nutzen

OP #7440247
Lesenswert?

Hallo, ich möchte den PB8 (Boot0 pin) des STM32G4 als GPIO Output nutzen. Gem. Datenblatt kann er dies sofern nSWBOOT0 = 0. Dieses sei angeblich factory default auf 0 ist aber bei mier aktuell gem Debuger auf 1. Ich nutze den Cube/HAL.

Wie kann ich im Cube das einstellen, dass er dieses register korrekt setzt. Falls nicht möglich: Wie setze ich dieses Register möglichst fachgerecht auf den benötigten Wert im user code?

OP #7440465
Lesenswert?

Harry L. schrieb:

Einfach den Pin in CubeMX auf GPIOOutput setzen. Um den Rest kümmert sich CubeMX.

Habe ich von beginn an gemacht gehabt.

Wastl schrieb:

Gibt es nur einen G4? Wenn nein, dann bitte angeben welchen.

STM32G431C8Tx

Wastl schrieb:

Um nicht das Rad neu erfinden zu müssen: welche Bemühungen hast du den unternommen diesen GPIO zu konfigurieren?

Ich habe im Cube den Pin auf GPIO output. Ich nutze die HAL GPIO funktionen welche bei allen anderen pins funktionieren. Ich habe sichergestellt, dass auch der richtige port/pin beim Aufruf der Hal funktionen verwendet werden.

Ich habe den Zustand von nSWBOOT0 im debuger geprüft und diesen mit dem programmer auf 0 gesetzt (war auf 1). Nochmals getestet mit dem Ergebnis: Nachwievor kein GPIO Output am besagten pin. Im debuger ist nSWBOOT0 nun auf 0.

OP #7440487
Lesenswert?

Harry L. schrieb:

Dann wird da vermutl. irgend ein Jumper den Pin auf Pegel ziehen. Ein 10k Widerstand gegen GND tuts auch.

Bin nicht sicher ob ich dich korrekt verstehe. Der Pin soll als Output betrieben werden. Der uC läuft soweit und bootet nachwievor korrekt. Spannung ist wenige mV und der uC wird nicht warm etc. also nichts dass auf ein Hardware Problem hindeuten würde.

#7440488
Lesenswert?

Max schrieb:

Harry L. schrieb:

Dann wird da vermutl. irgend ein Jumper den Pin auf Pegel ziehen. Ein 10k Widerstand gegen GND tuts auch.

Bin nicht sicher ob ich dich korrekt verstehe. Der Pin soll als Output betrieben werden. Der uC läuft soweit und bootet nachwievor korrekt. Spannung ist wenige mV und der uC wird nicht warm etc. also nichts dass auf ein Hardware Problem hindeuten würde.

Damit der µC aus dem Flash startet, muß der Pin nach dem Einschalten LOW-Pegel haben. Das geht entweder mit einem Jumper (z.B. auf dem Bluepill-Board) oder eben mit einem Widerstand. Sobald der µC gestartet ist, kannst du den Pin überschreiben. Das geht natürlich nicht, wenn der via Jumper fest mit GND verbunden ist.

OP #7440516
Lesenswert?

Harry L. schrieb:

Damit der µC aus dem Flash startet, muß der Pin nach dem Einschalten LOW-Pegel haben.

ich habe nSWBOOT0 nun auf 0 damit er dies ignoriert und ich diesen Pin als GPIO benutzen kann (dies besagt zumindest die ST Doku, G4 ist anders als bluepill). Anyway Pin ist auf 0 und hat eine ohmische Last nach GND. (Er soll schlussendlich auch als Output diese last Treiben).

Wastl schrieb:

main.h zu deinem Code?

kein problem ich habe ein kleines BSP gemacht in welchem ich 2 Outputs setze. Davon funktioniert der PB8 nicht. Projekt komplett im Anhang.

Angehängte Dateien:
OP #7440571
Lesenswert?

Wastl schrieb:

Max schrieb:

PB8OutTest.7z (1,27 MB)

Kann nichts Fehlerhaftes oder Auffälliges entdecken. Allenfalls ist die Last an dem problematischen Pin zu stark oder es ist da ein Kurzschluss ....

Max schrieb:

Anyway Pin ist auf 0 und hat eine ohmische Last nach GND.

Ja welche denn nun? Muss das auch geheim bleiben?

Nei ist nicht geheim, habe dies nur als orthogonal zum Problem betrachtet und daher nicht weiter ausführlich aufgeführt:

Last am Pin: 10kOhm gegen GND + Eingang in ein Treiber (hochohmig). Ist identisch mit 7 weiteren GPIO Pins. Bis auf den besagten Pin funktionieren alle. Lötung des Pins scheint sauber, kein Kurzschluss gegen GND gemessen (mit Multimeter wenn uC ohne Versorgung).

Das einzige was auffällig ist: Gem. ST werden alle uC mit nSWBOOT0 = 0 ausgelieferet, meiner war bei meiner ersten beachtung auf 1 (wurde zuvor mehrfach CUBE/Debug benutzt).

  1. Schreibt der Cube dieses bit? (falls ja: bug im cube, denn er hat es gem ST Doku falsch gesetzt)
  2. Da dieses Bit bei mir 1 war: Hat sich in den revisionen der G4 etwas geändert? Hat jemand einen G4 (oder G0 habe irgendwo gelesen, dass die diesbez identisch sind) und könnte bitte testen ob er bei BOOT0 einen GPIO output machen kann und am pin dann auch eine 1 sieht?
#7440578
Lesenswert?

Max schrieb:

Das einzige was auffällig ist: Gem. ST werden alle uC mit nSWBOOT0 = 0 ausgelieferet, meiner war bei meiner ersten beachtung auf 1 (wurde zuvor mehrfach CUBE/Debug benutzt).

Aus dem Reference Manual:

1
The BOOT0 value may come from the PB8-BOOT0 pin or from an nBOOT0
2
option bit depending on the value of a user nBOOT_SEL option bit
3
to free the GPIO pad if needed.

Will heissen du musst das <nBOOT_SEL option bit> richtig setzen.

OP #7442455
Lesenswert?

Wastl schrieb:

Max schrieb:

Das einzige was auffällig ist: Gem. ST werden alle uC mit nSWBOOT0 = 0 ausgelieferet, meiner war bei meiner ersten beachtung auf 1 (wurde zuvor mehrfach CUBE/Debug benutzt).

Aus dem Reference Manual:The BOOT0 value may come from the PB8-BOOT0 pin or from an nBOOT0 option bit depending on the value of a user nBOOT_SEL option bit to free the GPIO pad if needed.

Will heissen du musst das <nBOOT_SEL option bit> richtig setzen.

Danke, nun gem. der Doku die ich gesehen habe wars nSWBOOT0 anyway dies hats auch nicht gebracht. Hab nun bereits über einen Tag verheizt, ich nehme einfach einen anderen GPIO. Evtl. löst ja ST da Problem mal in einigen Jahren damits direkt vom CUBE aus geht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren