Schwierigkeiten von I2C über Draht

7

Ich möchte einen PIC16F1825 und einen TCN75-Temperatursensor über I2C verbinden. Der Temperatursensor ist ca. 1 m von der MCU entfernt. Kann mich jemand aufklären, ob und auf welche Schwierigkeiten ich stoßen werde, wenn ich I2C über Kabel laufen lasse? Ich habe gelesen, dass I2C besonders bei höheren Raten und größeren Entfernungen sehr geräuschempfindlich sein kann.

Wie groß ist das Problem in meinem Fall in der Praxis? Hat jemand Erfahrung unter ähnlichen Bedingungen? Ich bin ziemlich glücklich, also bleib bei langsamen Übertragungsraten.

  • Die Verbindung wird mit 5 V betrieben.
  • Was kann ich tun, um diesen Link so einfach wie möglich zu gestalten und zu bedienen?
  • Bei Standard-Nicht-TP-Signalkabeln weiß ich deren Kapazität nicht. Wie berechne ich die Pull-up-Widerstände?
  • Benötige ich Pull-up-Widerstände oder ist der PIC16-Pull-up-Strom ausreichend?

Kann mich jemand auf einen AN hinweisen, der mir bei I2C over Wire hilft?

ARF
quelle

Antworten:

11

Sie benötigen auf jeden Fall externe Pull-up-Widerstände. Die internen Klimmzüge eines Mikrocontrollers sind zu schwach. Beachten Sie, dass es bei einem Bus mit hoher Kapazität normalerweise kein Problem ist, schnell abfallende Flanken zu haben, da die FETs, die die Leitung niedrig ziehen, eine niedrige Impedanz haben und dann die Kapazität des Drahtes schnell entladen werden kann.

Für die ansteigende Flanke haben wir jedoch nur den relativ hohen Widerstand der Klimmzüge, und die RC-Zeit in Kombination mit der Kapazität des Drahtes bestimmt die Anstiegszeit. Ein kleinerer Widerstandswert ist besser, aber auch hier gibt es eine Grenze: Ein I2C-Gerät muss nicht mehr als 3 mA ziehen, daher sollte der Widerstand bei einer 5-V-Busspannung nicht unter 1,7 kΩ liegen.

Geben Sie hier die Bildbeschreibung ein

Die Grafik zeigt den maximalen Pull-up-Widerstand für eine bestimmte Drahtkapazität. Bei 1 m ist diese Kapazität nicht hoch, wenn Sie ein Signalkabel verwenden, das wahrscheinlich weniger als 50 pF beträgt, und selbst bei 100 pF können Sie bis zu 12 kΩ erreichen. Ich würde jedoch in der Nähe der unteren Grenze bleiben. Sie haben nicht nur schnellere Kanten, sondern eine niedrigere Impedanz macht den Draht auch weniger geräuschempfindlich. 2,2 kΩ Widerstände reichen wahrscheinlich aus.

Lesen Sie weiter
I2C-Spezifikation
I2C-Terminierung versus Kapazität

stevenvh
quelle