STM32 hängt sich auf

Gast #5487340
Lesenswert?

Hallo.
Ich hab mit einem STM32F405RGT7 ein Problem, dass ich nicht verstehe und 
gerade auch nicht eingrenzen kann.

Ich verwende SWD zum Flashen/Debuggen und möchte den PA12 für den 
CAN1_TX verwenden. SWDIO ist bei dem Controller auf PA13.
Ich kann flashen und debuggen und der Controller macht auch alles was 
ich möchte. Sollte also grundsätzlich funktionieren.

Sobald ich aber PA12 als OUT bzw. AF konfiguriere, bricht aber beim 
ST-LINK die Verbindung ab und der Controller steht. Dies passiert 
unabhängig von CAN1. Sobald in GPIO_INIT der OTYPER gesetzt wird, hängt 
der Controller.
Konfiguriere ich PA12 als Input läuft der Controller weiter.

Hab folgendes schon probiert:
- 2. LP geprüft; gleiches Verhalten
- Pins/Leiterbahnen durchgemessen; Mit bestückten Bauteilen > 25MOhm 
zwischen den Bahnen/Pins.

Die gleiche Anbindung an den CAN1 bzw die gleichen Pins verwende ich 
seit Jahren schon erfolgreich in anderen Schaltungen. Und hatte noch nie 
Probleme mit dem CAN bzw ST-Link.

Was mir aber aufgefallen ist: auf den nicht-funktionierenden Schaltungen 
ist jeweils ein STM32F405RGT7 drauf. Bei anderen Schaltungen (die 
funktionieren) ist anscheinend immer ein ...RGT6 drauf.

Ob dies Zufall ist oder nicht, kann ich nicht sagen.

Kann mir jemand helfen? Ich steh gerade im Wald :-)
#5487362
Lesenswert?

Pepe schrieb:
> Sobald ich aber PA12 als OUT bzw. AF konfiguriere,

Source Code, bitte. Dabei könnte man schnell ein Bit beim benachbarten 
Pin faslch setzen oder löschen.

Fies wäre beispielsweise wenn man beim Lesen des Registers einen 
falschen Wert bekommt (z.B. Bug in bestimmter Chip Revision).

Pepe schrieb:
> STM32F405RGT7 [vs.] RGT6

Dann mach Dich mal schlau was der Unterschied ist. Eventuell auch mal 
neuere Errata ziehen?
Gast #5487399
Lesenswert?

@Jim:
Hier der Ausschnitt, der das Problem macht. Aber der sollte es wohl eher 
weniger sein, da ich den gleichen Source auch in vielen anderen 
Schaltungen verwende.

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_Init(GPIOA, &GPIO_InitStructure);

@Stefanus
Aus Kurzschluss hab ich schon geprüft; zwischen PA12 und PA13 sind mehr 
als 25MOhm, also kein "Kurzer".
Gast #5487408
Lesenswert?

@Jim:
In den Errata von 2017 hab ich nichts passendes gefunden.
Und soweit ich dies sehe, ist der Unterschied zwischen RGT6 & RGT7 
eigentlich nur der Temperaturbereich. Wenigstens hab ich sonst keinen 
Unterschied gefunden.

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