Forum: Mikrocontroller und Digitale Elektronik STM32 Nucleo NRST deaktivert?


von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Hi! Ich habe eine STM32 Nucleo G0 Board. Auf dem Board befindet sich ein 
Taster, der als Reset-Taster dienen soll. Jetzt liegt der NRST aber auf 
dem Board schon permanent auf 0V, der Taster hat somit keine Funktion, 
der Controller läuft jedoch. Kann der NRST deaktiviert werden? Bzw wie 
kann ich ihn aktivieren. In CubeMX ist er als EXTI parametriert.

(Meine Frage ist nicht, warum der Pin permanent auf 0V liegt, sondern 
warum der Controller läuft, wenn der Pin auf 0V liegt)

von Klaus W. (mfgkw)


Lesenswert?

Wenn du den Pin als GPIO konfigurierst, führt ein low-Pegel nicht mehr 
zu einem Reset.

Sonst wäre es ja kein Eingang mehr, wenn du nur noch high-Pegel abfragen 
könntest...

Wenn du ihn nicht als GPIO konfigurierst, führt ein low an NRST zum 
Reset.

PS: Siehe z.B. RM0444 Abschnitt 5

: Bearbeitet durch User
von Bauform B. (bauformb)


Lesenswert?

Christian schrieb:
> warum der Controller läuft, wenn der Pin auf 0V liegt

Weil (mindestens die neueren) STM32 ihren Reset intern erzeugen. Die 
haben keinen primitiven Power-On-Reset, sondern einen echten Komparator 
für VDD. Das NRST-Signal ist nur rausgeführt, weil viele Leute einen 
Reset-Taster haben wollen.

Das Signal ist bidirektional/open drain und kann als Reset für die 
restliche Hardware benutzt werden, z.B. um bei einem Hard Fault die 
PWM-gesteuerte Heizung abzuschalten. Das geht aber auch mit einem GPIO 
und bei den meisten Timern sogar intern. Also wirklich nötig ist der Pin 
nicht.

von Christian (Gast)


Lesenswert?

Ahh, ok, Danke schon mal.

Also würde es bedeuten, dass mit der Auswahl Reset_State die 
ursprüngliche Reset-Funktionalität gegeben ist? Inkl eingeschaltetem 
PullUp?

von A. B. (Gast)


Lesenswert?

"Reset state" heißt bei ST i. A. analoger Eingang, dass ist nicht das, 
was man hier will. Was CubeMX in diesem speziellen Fall darunter 
versteht ... Da muss man im erzeugten Code nachschauen. Ich würde aber 
vermuten, dass das GPIO im analog-In, aber eben nicht NRST heißt. Bei 
dieser Auswahlbox werden zwei logisch getrennte Einstellungen vermischt: 
Einmal die Option Bytes (NRST_MODE), wo zwischen uni-/bidir. 
Reset-Funktionalität und GPIO-Modus umgeschaltet wird, zum anderen die 
(davon völlig unabhängige) GPIO-Konfiguration.

"NRST" ist vermutlich die sinnvolle Wahl. Das sollte man nur ändern, 
wenn man sich über die Konsequenzen klar ist und wirklich unbedingt 
absolut keinen anderen Pin mehr übrig hat.

von Christian (Gast)


Lesenswert?

A. B. schrieb:
> "NRST" ist vermutlich die sinnvolle Wahl. Das sollte man nur ändern,
> wenn man sich über die Konsequenzen klar ist und wirklich unbedingt
> absolut keinen anderen Pin mehr übrig hat.

Das dachte ich mir auch zuerst, nur ist "PF2 - NRST" kein auswählbarer 
Parameter, sondern schlicht der Name des Pins. Dann hilft wohl wirklich 
nur noch Code-Analyse. Der Default ist übrigens EXTI (wie oben 
ausgewählt).

von Bauform B. (bauformb)


Lesenswert?

A. B. schrieb:
> "Reset state" heißt bei ST i. A. analoger Eingang, dass ist nicht das,
> was man hier will. Was CubeMX in diesem speziellen Fall darunter
> versteht ...

Nach dem Screenshot geht es vermutlich um einen STM32G031KxT. Dann 
vermute ich mal weiter...
Man muss zwischen normalen GPIO-Pins und etwas spezielleren 
unterscheiden. Die JTAG/SWD-Pins sind z.B. speziell, aber NRST ist noch 
viel spezieller. STM32G031KxT. Der Pin funktioniert da unmittelbar nach 
einem Reset wie früher, bidirektionaler Reset. Dann werden die Option 
Bytes geladen und ab da gelten die beiden NRST_MODE Bits. Die sind bei 
fabrikneuen Chip 0b11, also gilt immer noch klassisches NRST. Das 
Programm kann dann im FLASH_OPTR die kopierten Bits ändern.
0b00 = reserviert
0b01 = NRST, aber nur Input
0b10 = PF2, Reset rein intern
0b11 = NRST klassisch
Vermutlich erzeugt CubeMX Code, der daran rumspielt. Insofern würde ich 
"Reset_State" so interpretieren, dass dann die Option Bits gelten.

von Christian (Gast)


Lesenswert?

Bauform B. schrieb:
> Nach dem Screenshot geht es vermutlich um einen STM32G031KxT. Dann
> vermute ich mal weiter...
> Man muss zwischen normalen GPIO-Pins und etwas spezielleren
> unterscheiden. Die JTAG/SWD-Pins sind z.B. speziell, aber NRST ist noch
> viel spezieller. STM32G031KxT. Der Pin funktioniert da unmittelbar nach
> einem Reset wie früher, bidirektionaler Reset. Dann werden die Option
> Bytes geladen und ab da gelten die beiden NRST_MODE Bits. Die sind bei
> fabrikneuen Chip 0b11, also gilt immer noch klassisches NRST. Das
> Programm kann dann im FLASH_OPTR die kopierten Bits ändern.
> 0b00 = reserviert
> 0b01 = NRST, aber nur Input
> 0b10 = PF2, Reset rein intern
> 0b11 = NRST klassisch
> Vermutlich erzeugt CubeMX Code, der daran rumspielt. Insofern würde ich
> "Reset_State" so interpretieren, dass dann die Option Bits gelten.

Danke vielmals. :)

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.