Forum: Mikrocontroller und Digitale Elektronik STM32: I2C Busy immer gesetzt


von STM32newb (Gast)


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)?

von ich (Gast)


Lesenswert?

ich hatte auch so ein Problem und habe es mit Clock Impulsen die ich 
separat generiere gelöst. 64 Impulse beim Booten... clock them out

von Thomas (Gast)


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 ?

von ich (Gast)


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.

von STM32newb (Gast)


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.

von STM32newb (Gast)


Lesenswert?

Aus unerklärlichen Gründen kann ich den Fehler nicht mehr reproduzieren 
- ich sehe es einfach mal als gelöst an. Danke für eure Hinweise!

von ich (Gast)


Lesenswert?

Such hier im Forum mal nach "LDRD" - das ist in dem Zusammenhang auch 
noch wichtig zu wissen.

von STM32newb (Gast)


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.

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
Noch kein Account? Hier anmelden.