STM32 Cortex-Arm I2C Bug?

Gast #1479696
Lesenswert?

Hallo,

ich bin gerade dabei mehrere Platinen mit jeweils einem Cortex-M3 von ST 
(STM32F103RBT6) in Betrieb zu nehmen. Unteranderem ist auf der Platine 
ein 2k EEPROM verbaut welches über den ersten I2C-Bus des Cortex 
angeschlossen ist. Bei 2/3 der Platinen funktioniert dies auch 
Problemlos, das restliche 1/3 bleibt beim Starten der Schnittstelle mit 
I2C_GenerateSTART(I2C1, ENABLE); while(!I2C_CheckEvent(I2C1, 
I2C_EVENT_MASTER_MODE_SELECT)); hängen. Auf dem Oszi ist auch nichts zu 
erkennen. Daher die Frage ob euch evtl. einen Fehler im STM32 bezüglich 
I2C-Bus bekannt ist?
#1479727
Lesenswert?

Wenn dort ein Hardwarefehler bekannt wäre, dann würdest du den in einem 
Errata beschrieben finden. Das passendende Errata findest du auf der 
Webseite von STM.

Es ist sehr sehr unwahrscheinlich einen Bug zu finden, der dort noch 
nicht beschrieben ist. Wahrscheinlicher ist da ein Fehler deinerseits, 
sei es Software oder Hardware-seitig.
Gast #1479743
Lesenswert?

>Wenn dort ein Hardwarefehler bekannt wäre, dann würdest du den in einem
>Errata beschrieben finden.

Falls man icht mal wirklich das Glück hat, der ERSTE zu sein!

Die I2C EEProms stehen bei mir unter "mit Vorsicht genießen"!
So einen Effekt hatte ich auch mal, aber bei einem DSPIC32. Irgendwie
kann es wohl vorkommen, dass das EEPROM "hängen" bleibt. Dann wird
von I2C Modul eine "Kollision" erkannt. Meine Lösung war, dass ich kein
I2C Modul benutzt hab, sondern einen Software Algo. Denn wenn man 
einfach stur weitertaktet, läuft es komischerweise normal weiter...
#1487855
Lesenswert?

Wenn man den RCC-Takt vom I2C-Modul zu einem Zeitpunkt einschaltet, zu 
dem die betreffenden GPIO-Pins bereits dem I2C zugeordnet sind (AltOut), 
dann gibt es einen kurzen Low-Impuls auf beiden Leitungen.

Man sollte also darauf achten, erst das I2C-Modul mit Takt zu versorgen 
und dann die Pins zu programmieren.

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