I2C Kommunikationsproblem

Gast #6250686
Guten Tag zusammen,

aktuell versuche ich die I2C-Kommunikation zwischen einem STM32-F103 
(Nucleo Board) und mehreren I2C Slaves ans laufen zu bekommen. Jeder 
Slave ist dabei einzeln über einen PCA9517 entkoppelt. Die einzelnen 
Slaves sollen über kurze Leitung an die Platine angesteckt werden.

Zuerst habe ich einen Temperatursensor (MCP9808) an den ersten PCA9517 
angeschlossen, was soweit auch einwandfrei funktioniert. Ich kann 
problemlos die Temperatur auslesen sowie auch andere Register lesen und 
schreiben. Auch die Buskapazität scheint laut den Oszilloskop Bildern in 
Ordnung zu sein. Die aufgenommene Bilder dazu: "SlaveSide_OK" und 
"MasterSide_OK"

Wenn ich jedoch eine weitere Leitung an den zweiten Ausgang anschließe 
(Ohne Slave, NUR die Leitung) bricht meine I2C Kommunikation zusammen. 
Der zweite Ausgang beeinflusst also in irgendeiner Weise den ersten. 
Merkwürdigerweise scheint das Problem aber nicht direkt die erhöhte 
Buskapazität zu sein, da die Oszilloskop nahezu unverändert aussehen. 
Aufgenommene Bilder: "SlaveSide_ERROR" und "MasterSide_ERROR"
Hier ist ersichtlich, das bei Auslesen des vorletzten Bytes die SDA 
Leitung einen undefinierten Zustand erfährt. Die Kommunikation schlägt 
immer an diesem Punkt fehl. Warum passiert das? Liegt dies 
möglicherweise am Ground Offset des PCA9517 beim ACK? Wie könnte ich das 
Problem beheben?
Leider habe ich nur ein analoges Hameg Oszlloskop, sodass ich keine 
genaueren Bilder der Kommunikation aufnehmen kann.

MCP9808: http://ww1.microchip.com/downloads/en/DeviceDoc/25095A.pdf
Timing Diagramm auf Seite 26

PCA9517: https://www.nxp.com/docs/en/data-sheet/PCA9517.pdf
Angehängte Dateien:
(Firma: L-E-A) #6250955
Nomis schrieb:

> Wenn ich jedoch eine weitere Leitung an den zweiten Ausgang anschließe
> (Ohne Slave, NUR die Leitung) bricht meine I2C Kommunikation zusammen.
> Der zweite Ausgang beeinflusst also in irgendeiner Weise den ersten.

Sehe ich das richtig, dass Du beide Puffer gleichzeitig aktivierst, also 
EN beider Puffer parallel geschaltet hast? Meinst Du nicht, dass das zu 
einer Buskollision führt?

Ich würde vermuten, dass sich NXP beim Schaltplan "Fig 5. Typical star 
application" im Datenblatt etwas gedacht hat...

Grüßle
Volker
Gast #6251116
Volker B. schrieb:
> Sehe ich das richtig, dass Du beide Puffer gleichzeitig aktivierst, also
> EN beider Puffer parallel geschaltet hast?

Ja genau. Aktuell ist es so, dass ich nur eine EN-Leitung habe, die vom 
STM auf High gesetzt wird. Wenn ich jeden einzelnen PCA9517 mit einer 
separaten EN-Leitung versehen würde könnte ich die Slaves einzeln 
ansprechen ohne das die anderen etwas davon mitbekommen.

Trotzdem müsste doch die Kommunikation auch funktionieren, wenn alle 
PCA9517 EN Pins gleichzeitig auf High liegen. Bis zum vorletzten Byte 
funktioniert die Kommunikation ja auch ohne Probleme.
#6251595
Dem Schaltplan nach sind die PCA9517 mit ihren B-Seiten untereinander 
verbunden. Das ist nicht erlaubt, die wilde Schwingung könnte dadurch 
verursacht worden sein.

Welchen Zweck haben eigentlich die vielen Repeater? Würde bei den kurzen 
Kabeln nicht maximal einer ausreichen?
Gast #6251738
Danke für den Hinweis! Ich werde die Tage mal die A-Kanäle miteinander 
verbinden und gucken ob dadurch das Problem gelöst ist.

Gundolf K. schrieb:
> Welchen Zweck haben eigentlich die vielen Repeater? Würde bei den kurzen
> Kabeln nicht maximal einer ausreichen?

Das Ziel war jeden einzelnen Slave mit einem separaten Repeater zu 
betreiben um die Buskapazität möglichst niedrig zu halten. Dadurch 
können die Slaves auch mit längeren Leitungen mit der Platine verbunden 
werden.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.