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





