STM32F4 Zustand der GPIO während Reset/PowerOn

Gast #6265279
Lesenswert?

Hallo,
ich habe folgende Problemstellung:
Bei Booten bzw. beim Reset der Spannungsversorung eines STM32F4 
Discovery gehen zwei meiner drei benutzen Pins auf einen Peglel von 2V 
(PB6 & PB9). Der  dritte (PB7) bleibt auf 0V wie es ein soll.
Ich habe an den Ausgängen einen ULA2803 -> GpioTreiber dran welcher dann 
wiederum Printrelais schaltet.
Die Spannungspegel sehe ich mit dem Oszi sowie ich den ResetButton 
drücke. ulkigerweise eben nur an PB6 & PB9.
Die Pins sind als PushPull & Pulldown konfiguriert.
1
 /*Configure GPIO pin Output Level */
2
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_9, GPIO_PIN_RESET);
3

4
/*Configure GPIO pins : PB6 PB7 PB9 */
5
  GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_9;
6
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
7
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
8
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
9
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

Was habe ich bisher gemacht:
1
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_9, GPIO_PIN_RESET);
direkt als erste Zeile in der Main-funktion.

Mein Problem ist aber, dass wenn ich in der Main bin ist es bereits zu 
spät.

Gibt es da noch andere Wege außer den Pin erst einemal als Input zu 
konfigurieren und in der Main wieder als Output umzustricken?


Danke,
ReinerZufall24
Moderator Persönliche Seite #6265283
Lesenswert?

ReinerZufall24 schrieb:
> Gibt es da noch andere Wege außer den Pin erst einemal als Input zu
> konfigurieren und in der Main wieder als Output umzustricken?

Während Reset interessiert dein Programm den Controller absolut nicht.

Du musst schon im Datenblatt schauen, was als Reset-Zustand für jeden 
Pin angegeben ist, und die Pins dann entsprechend benutzen.
(Firma: Raich Gerätebau & Entwicklung) #6265295
Lesenswert?

ReinerZufall24 schrieb:
> Gibt es da noch andere Wege außer den Pin erst einemal als Input zu
> konfigurieren und in der Main wieder als Output umzustricken?

Mach mal Pull down Widerstände an deine Pins. So etwa 1K, dann sollte 
auch im Reset kein unbeabsichtigter Schaltvorgang stattfinden. Im Reset 
sind die Pins Eingänge und ziehen etwas Strom nach Vdd. Ein 
angeschlossener Mosfet könnte da schon problemlos schalten.

Grüsse
Gast #6265356
Lesenswert?

Vielen Dank für die Antworten:
@Jörg (dl8dtl):
Hast du nochmal ein "Stichwort" für mich wo ich da suchen soll im 
Datenblatt?
Ich find's leider nicht und würde es aber gern für die Zukunft finden.

73, wünscht DM4AV


@ Gebhard R.:
Das klappt gut, unter 5k reichen schon. Etwas Spannung steht dann immer 
noch, aber die Relais schalten nicht mehr.

VG und nochmals besten Dank.
Moderator Persönliche Seite #6265387
Lesenswert?

ReinerZufall24 schrieb:

> Hast du nochmal ein "Stichwort" für mich wo ich da suchen soll im
> Datenblatt?
1
8.3.1
2
General-purpose I/O (GPIO)
3
During and just after reset, the alternate functions are not active and the I/O ports are
4
configured in input floating mode.

Hmm, das entsetzt mich jetzt etwas über STM. Hätte ich nicht erwartet. 
Kenne ich von den Atmel-ARMs anders.

Dann bleibt dir weiter nichts übrig als die Verwendung externer 
Pull-Widerstände.

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