Forum: Mikrocontroller und Digitale Elektronik STM32G071KBT6 Reset Pin


von Gustav G. (gustavgggg)


Lesenswert?

Kann mir jemand sagen ob ich es richtig verstanden habe, dass man bei 
dem Prozessor NRST auch als GPIO nutzen kann? Ich würde das gerne 
machen, da ich fast alle Pins brauche. PA14 und PA13 habe ich mit SWD 
verbunden. Im Datenblatt steht, dass ich Reset state dieser Pin NRST 
ist. Der ist aber als Ausgang konfiguriert und floatet beim Start 
vermutlich. Kann ich nun per SWD initial flashen und danach ist der dann 
ein GPIO und der Prozessor startet weiterhin immer?

von Anton (antang)


Lesenswert?

Ja, das geht. Suche nach NRST_MODE im Reference Manual (RM0444).

von Stefan F. (Gast)


Lesenswert?

Gustav G. schrieb:
> danach ist der dann ein GPIO und der Prozessor startet weiterhin immer

Ja, er startet weiterhin. Aber...

Die Funktion des Pins wird per Option Byte NRST_MODE konfiguriert, siehe
https://www.mouser.com/datasheet/2/389/en.DM00371828-1620887.pdf

Wenn du ihn als GPIO (PF2) konfigurierst, ist das kein Reset Pin mehr. 
Je nach laufender Firmware kann es schwierig sein, den Debugger zu 
verbinden. Die Methode "Connect on Reset" entfällt dann nämlich.

Es gibt eine ganze Reihe zustände, in denen das Debugger-Interface 
inaktiv ist. Außerdem neigt Cube MX dazu, die Pins der SWD Schnittstelle 
per default als GPIO Pin fest zu legen. Damit sperrst du dich ganz 
schnell selbst aus.

Ich würde den Pin lieber nicht um konfigurieren.

von Bauform B. (bauformb)


Lesenswert?

Gustav G. schrieb:
> Im Datenblatt steht, dass ich Reset state dieser Pin NRST
> ist. Der ist aber als Ausgang konfiguriert und floatet beim Start
> vermutlich.

Direkt nach dem Einschalten ist er erstmal ganz kurz undefiniert und 
dann Open Drain Ausgang und Low. Dann wahrscheinlich Open Drain mit 
Pull-Up, also High. Dann werden die Option Bytes geladen und auf GPIO 
umgeschaltet. So verstehe ich jedenfalls diese Warnung:
1
Upon power reset or wakeup from shutdown mode, the NRST pin is configured
2
as Reset input/output and driven low by the system until it is reconfigured
3
to the expected mode when the option bytes are loaded, in the fourth clock
4
cycle after the end of trstempo.

Der Port F wird im GPIO-Kapitel nicht weiter erwähnt, also wenn STM 
nichts vergessen hat, ist der Pin anschließend ganz normal im Analog 
Mode, ohne Pull-Up.

Normalerweise bekommt der NRST ja einen 100nF. Den will man an einem 
GPIO-Ausgang nicht haben, aber der Pin ist nach dem Einschalten ja ein 
NRST-Pin. Wie man es macht, ist es verkehrt.

> ...ich fast alle Pins brauche.

Ich als Feigling würde den NRST wohl als letzten als GPIO benutzen und 
eher einen Quarz durch einen externen Oszillator ersetzen. Vor allem, 
weil ich dann die Option Bytes nicht anfassen muss.

: Bearbeitet durch User
von Anton (antang)


Lesenswert?

Ich verwende NRST als GPIO bei einem STM32G030J6M6 (8 Pins), da geht das 
offiziell gar nicht: NRST_MODE taucht nicht in der Doku auf. Geht aber 
genauso wie beim STM32G031. SWDIO und SWCLK verwende ich auch als GPIO. 
Dennoch bin ich nicht ausgesperrt.

von J. S. (jojos)


Lesenswert?

es gibt ja noch den BOOT0 Pin, über den kommt der µC nach dem Power On 
in das System Memory wenn der auf High Pegel liegt. Und dann funktieren 
SWD und Reset.

von Anton (antang)


Lesenswert?

Beim STM32G030J6M6 ist BOOT0=SWCLK, also bei mir GPIO.

: Bearbeitet durch User
von Anton (antang)


Lesenswert?

Bauform B. schrieb:
> Ich als Feigling würde den NRST wohl als letzten als GPIO benutzen und
> eher einen Quarz durch einen externen Oszillator ersetzen.

Der STM32G071KBT6 hat eh kein OSC_OUT, kann also selbst keinen Quarz 
schwingen lassen.

von Stefan F. (Gast)


Lesenswert?

Anton schrieb:
> Ich verwende NRST als GPIO bei einem STM32G030J6M6 (8 Pins), da geht das
> offiziell gar nicht: NRST_MODE taucht nicht in der Doku auf. Geht aber
> genauso wie beim STM32G031. SWDIO und SWCLK verwende ich auch als GPIO.
> Dennoch bin ich nicht ausgesperrt.

Wäre schön, wenn du erklären würdest, wie man/du in diesem Fall den 
Debugger verbindest.

von Anton (antang)


Lesenswert?

Wenn ich mich recht erinnere: connect under reset, mit NRST auf GND beim 
Einschalten.

von Stefan F. (Gast)


Lesenswert?

Anton schrieb:
> Wenn ich mich recht erinnere: connect under reset, mit NRST auf GND beim
> Einschalten.

Moment, dass würde ja bedeuten, dass der Pin trotz NRST_MODE Anfangs ein 
Reset-Pin ist und

a) einen Low-Impuls ausgibt und
b) zum normalen Start nicht auf Low gehalten werden darf.

Richtig?

von Anton (antang)


Lesenswert?

Aus der Erinnerung: Beim Einschalten wird NRST_MODE ignoriert, bis NRST 
nicht mehr auf low gehalten wird.

von Stefan F. (Gast)


Lesenswert?

Anton schrieb:
> Aus der Erinnerung: Beim Einschalten wird NRST_MODE ignoriert, bis NRST
> nicht mehr auf low gehalten wird.

Besten Dank.

Schade, dass das im Datenblatt/Reference Manual nicht deutlich 
geschrieben steht. Meine Fähigkeit, zwischen den Zeilen zu lesen, wurde 
von bekannten chinesischen Marken verbraucht. Mittlerweile glaube ich 
gar nichts mehr, was ich nicht selbst ausprobiert habe. Mir tun die 
Leute leid, die damit ihre Brötchen verdienen müssen.

von Gustav G. (gustavgggg)


Lesenswert?

Aus den Antworten zu urteilen überlege ich es mir den NRST Pin doch per 
RC Glied auf 3.3V zu legen. Ich dachte den kann ich mir komplett sparen 
aber als ich gerade mal ein anderes Design angesehen habe wird der 
ST-Link an NRST angeschlossen.

von Anton (antang)


Lesenswert?

Der ST-Link geht auch ohne NRST, wird nur für connect under reset 
benötigt und das geht notfalls auch per Taster oder Strippe, wird ja nur 
gebraucht, bis der Debugger die Kontrolle übernommen hat. Bei den 
billigen ST-Link-Nachbauten ist der Reset-Pin eh für den STM32 falsch 
angeschlossen und damit funktionslos (aber wohl richtig für den STM8 
angeschlossen).

von Bauform B. (bauformb)


Lesenswert?

Stefan F. schrieb:
> Anton schrieb:
>> Aus der Erinnerung: Beim Einschalten wird NRST_MODE ignoriert, bis NRST
>> nicht mehr auf low gehalten wird.
>
> Besten Dank.
>
> Schade, dass das im Datenblatt/Reference Manual nicht deutlich
> geschrieben steht.

Das RM0444 warnt im Kapitel Reset and clock control:
1
Upon power reset or wakeup from shutdown mode, the NRST pin is configured
2
as Reset input/output and driven low by the system until it is reconfigured
3
to the expected mode when the option bytes are loaded, in the fourth clock
4
cycle after the end of trstempo.

von Frank K. (fchk)


Lesenswert?

Gustav G. schrieb:
> Aus den Antworten zu urteilen überlege ich es mir den NRST Pin doch per
> RC Glied auf 3.3V zu legen. Ich dachte den kann ich mir komplett sparen
> aber als ich gerade mal ein anderes Design angesehen habe wird der
> ST-Link an NRST angeschlossen.

Ich verwende an dieser Stelle gerne einen MCP121, sofern meine 
Spannungsversorgung kein Power Good Signal liefert.

https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/DataSheets/20001906D.pdf

Und wenn Du knapp an Pins bist, würde ich einfach einen Chip mit mehr 
Pins nehmen. Gibts ja, ist ja kein Problem.

fchk

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.