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 :-)
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?
PA12 liegt direkt neben PA13. Vielleicht hast du versehentlich einen Kurzschluss zwischen diesen beiden Pins.
@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".
@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.
Hast du schon geprüft ob du Kurzschluss von VCC oder GND auf den PA12 hast?
Pepe schrieb: > Hier der Ausschnitt, der das Problem macht Mal im Source von GPIO_Init() umgeschaut und sowas wie Reset-Werte der beteiligten Register vergleichen? Du scheinst ja immerhin eine known-good Chip Revision zu haben. Ansonsten würde ich den Fehler woanders suchen...
Fehler gefunden. Der GPIO_OType der Init.Structur wurde aus Versehen überschrieben. Da stand dann 0x02 drin anstatt 0x00... und schon war PA13 nach dem Setzen weg. DANKE AN ALLE.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.