I2C ist nicht für den Einsatz über große Entfernungen ausgelegt, aber ich kenne einige Anwendungen, bei denen es tatsächlich über eine Entfernung von etwa 2 Metern eingesetzt wird. Ich kenne auch einen Fall, in dem sie Probleme damit hatten, und es wurde schließlich behoben, indem ich glaube, Erdschleifen reparierte.
Um sicherzustellen, dass es funktioniert, sollten Sie einen I2C-Bus-Extender wie den P82B715 verwenden.
Das Datenblatt des PB2B715 besagt jedoch Folgendes in Abschnitt 8.2:
Bei typischen Twisted Pair- oder Flachkabeln, wie sie für Telefonie- oder Ethernet-Verkabelungen (Cat5e) verwendet werden, beträgt diese Kapazität etwa 50 pF bis 70 pF / Meter, sodass das Kabel theoretisch bis zu 50 m lang sein kann . Aus praktischer Erfahrung hat sich 30 m als sichere Kabellänge erwiesen, um auf diese einfache Weise bis zu 100 kHz mit den angegebenen Werten gefahren zu werden . Größere Entfernungen und höhere Geschwindigkeiten sind möglich, erfordern jedoch eine sorgfältigere Auslegung.
So sagen die Experten (NXP ist der frühere Philips, der Erfinder von I2C), dass sich 30 Meter als machbare Distanz erwiesen haben. Meiner Erfahrung nach sind 2 Meter eine machbare Strecke, und die mir gemeldeten Erfahrungen zeigen, dass auch stärker belastete I2C-Busse ohne Extender möglich sind.
Die wichtigsten Punkte für den Einsatz von I2C-Bussen auf langen Strecken sind:
- Verwenden eines Kabels mit niedriger Kapazität (Twisted Pair / Ethernet);
- Begrenzung der Busgeschwindigkeit;
- Klimmzüge haben, die die richtige Größe haben.
Pullup-Berechnung
Texas Instruments verfügt über einen guten Anwendungshinweis (SLVA689) zur Pull-up-Berechnung .
- Die Untergrenze des Pullups (Minimalwert) wird durch den Strom bestimmt, den das schwächste Peripheriegerät auf dem Bus ziehen kann, und durch die maximale Spannung, die 0 für ein Peripheriegerät darstellt. Wenn also 1V immer noch 0 ist, ist Ihr VCC maximal 3V6 und Ihr schwächstes Gerät kann nur 20mA ziehen, Ihr Widerstand wird durch den Spannungsverlust über dem Widerstand und den von diesem Gerät gezogenen Strom bestimmt: .( 3,6 V - 1 V ) / 20 m A = 130 Ω
- Die Obergrenze wird durch die maximale Anstiegszeit bestimmt: Ihre maximale I2C-Frequenz hängt direkt damit zusammen, es gibt jedoch auch eine vom Protokoll festgelegte Obergrenze. Die Obergrenze ist . Dabei ist die maximale Anstiegszeit und die . Wenn also 400pF ist und der Bus im Standardmodus arbeitet ( = 1ms), dann finden Sie . Der Anwendungshinweis von TI enthält Diagramme, mit denen Sie schnell geeignete Werte finden können.Rm a x= tr/(0.8473∗Cb)trCbCbtrRmax=2950 Ω
- Natürlich ist der Wert für den Pullup der äquivalente Wert aller parallel kombinierten Pullups. Sie können einen Pullup auf der Master-Seite, der Slave-Seite und jedem anderen Slave / Master auf dem Bus haben.
- Je mehr Sie "am Limit" sind, desto mehr müssen Sie auch "Parasiten" wie den Spannungsabfall im Kabel berücksichtigen.