I2C nie jest przeznaczony do używania na duże odległości, ale znam kilka aplikacji, w których jest on faktycznie używany na odległości około 2 metrów. Znam też jeden przypadek, w którym mieli z tym problemy, i to zostało ostatecznie naprawione przez naprawienie pętli uziemienia.
Aby mieć pewność, że zadziała, należy użyć przedłużacza magistrali I2C, takiego jak P82B715.
Jednak arkusz danych PB2B715 zawiera następujące informacje w sekcji 8.2:
W przypadku typowych kabli skrętkowych lub płaskich, używanych w telefonii lub okablowaniu Ethernet (Cat5e), pojemność wynosi około 50 pF do 70 pF / metr, więc teoretycznie długość kabla może wynosić do 50 m . Z praktycznego doświadczenia wynika , że 30 m wykazało bezpieczną długość kabla do prowadzenia w ten prosty sposób, do 100 kHz, przy pokazanych wartościach. Możliwe są dłuższe odległości i wyższe prędkości, ale wymagają one staranniejszej konstrukcji.
Eksperci (NXP to były Philips, wynalazca I2C) twierdzą, że 30 metrów okazało się możliwe do pokonania. Z mojego doświadczenia wynika, że 2 metry to możliwa do przejechania odległość, a doświadczenia, które mi przekazano, wskazują, że możliwe są również bardziej obciążone magistrale I2C bez jakiegokolwiek przedłużacza.
Kluczowe punkty pracy autobusów I2C na duże odległości to:
- Za pomocą kabla o niskiej pojemności (skrętka / Ethernet);
- Ograniczanie prędkości autobusu;
- Posiadające podciągnięcia o odpowiednich rozmiarach.
Obliczenia pullup
Texas Instruments ma dobrą notę aplikacyjną (SLVA689) dotyczącą obliczania podciągania .
- Dolna granica podciągania (wartość minimalna) jest określona przez prąd, który najsłabsze urządzenie peryferyjne na magistrali może pociągnąć, oraz maksymalne napięcie, które reprezentuje 0 dla dowolnego urządzenia peryferyjnego. Więc jeśli 1 V nadal wynosi 0, twoje VCC wynosi maksymalnie 3 V6, a twoje najsłabsze urządzenie może pobierać tylko 20 mA, twoja rezystancja jest określona przez stratę napięcia na rezystorze i prąd pobierany przez to urządzenie: ( 3,6 V - 1 V ) / 20 m A = 130 Ω .
- Rm a x= tr/ (0,8473* Cb)trdobdobtrRm a x= 2950 Ω . Nota aplikacyjna TI ma wykresy, dzięki czemu można szybko znaleźć odpowiednie wartości.
- Oczywiście wartość podciągnięcia jest równa wartości wszystkich podciągnięć połączonych równolegle. Możesz mieć podciągnięcie po stronie master, slave i wszelkich innych slave / master w magistrali.
- Im bardziej jesteś na granicy, tym bardziej musisz uwzględniać „pasożyty”, takie jak spadek napięcia w kablu.