STM32 Nucleo NRST deaktivert?

Gast #6853384
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)
Angehängte Dateien:
#6853418
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
#6853462
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.
Gast #6853538
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.
Gast #6853590
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).
#6853665
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.
Gast #6853971
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. :)

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