mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 Cortex-Arm I2C Bug?


Autor: Gast (Gast)
Datum:

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

Autor: Star Keeper (starkeeper)
Datum:

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

Autor: Matthias (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt ein Bug. Der STM schickt nachdem man das Stop setzt nochmals 8 
Clock Signale, warum auch immer.
Bei mir gab es dadurch riesige Probleme.

Autor: domi_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe eine Lösung im STM32 Forum gefunden, hat bei mir geholfen, beim 
Initalisieren wird nochmal ein STOP über die I2C-Leitung gesendet, wenn 
der Bus "Busy" ist: http://www.st.com/mcu/forums-cat-8300-23.html

Autor: A. K. (prx)
Datum:

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

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.