STM32: I2C Busy immer gesetzt

Gast #2065224
Lesenswert?

Hallo,

ich habe dasselbe Problem wie im Topic 
Beitrag "STM32 I2C Bus bleibt hängen" .
Das Busy-Flag des I2C-Bus ist immer gesetzt und blockiert alle 
Kommunikation. Das geschieht nur manchmal, vermutl. wenn der µC resettet 
und dabei die I2C-Peripherie noch sendet, ansonsten funktioniert alles 
einwandfrei. Ich habe deshalb wie im alten Thread vorgeschlagen I2C 
Deinitialisiert und manuell einige Takte und eine Stop-Cond. generiert. 
Das schafft aber keine Abhilfe, die Kommunikation funktioniert erst nach 
Unterbrechung der Stromversorgung wieder.

Gibt es da eine Lösung, ohne einen JFET in die Versorgungsspannung zu 
integrieren (was mir extrem wiederstreben würde)?
Gast #2065612
Lesenswert?

Beutze den STM32 sehr häufig mit I2c Bus und kenne solche Probleme 
nicht. Interessant dürfte sein, in welchem Mode Du den I2C betreibst 
(Polling, Interrupt DMA) ? Benutzt Du die Firmware Library und/oder 
einen fertigen Treiber von ST ?
Gast #2065672
Lesenswert?

bei mir trat das im Polling Mode auf, mit den ST Libs (die neueren von 
06/2010...) und dem Baustein DS2482-800, Onewire Busmaster, kann sein 
das das Problem nur mit bestimmten I2C Slave Bausteinen auftritt, denn 
das Problem liegt ja auf der Slave Seite.
Gast #2066506
Lesenswert?

Das Problem tritt immer im Initialisierursteil, also noch polling mode, 
auf und zwar nach dem Senden der ersten Start-Condition.

Momentan toggle ich CLK manuell, wenn eine gewisse Wartezeit 
überschritten ist, und generiere eine Stop condition. Komischerweise ist 
an den Signalen überhaupt nichts komisch - SDA liegt wg. Pullup auf 
High. Ich verstehe kein bisschen, warum das Busy-Flag gesetzt wird. Es 
ist nur BSY auf 1, also SR2 = 2 und SR1 = 0.
Gast #2067479
Lesenswert?

Danke für den Hinweis, da wäre ich wenn es das Problem gewesen wäre 
iemals draufgekommen! Das kann bei mir aber nicht das Problem sein, da 
ich eine kostante Adresse sende, die direkt in DR geschrieben wird.

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