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