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)?
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
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 ?
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.
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.
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!
Such hier im Forum mal nach "LDRD" - das ist in dem Zusammenhang auch noch wichtig zu wissen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.