www.mikrocontroller.net

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


Autor: STM32newb (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: STM32newb (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: STM32newb (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: ich (Gast)
Datum:

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

Autor: STM32newb (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.