Jakiej maksymalnej długości kabla można użyć do podłączenia dwóch urządzeń I2C (I2C master-> I2C slave)?
Tak, wiem, że I2C jest naprawdę zaprojektowany do komunikacji wewnątrz płyty. Zadanie polegało na „celu projektowym” polegającym na użyciu wspólnej magistrali I2C dla wielu urządzeń podrzędnych I2C do obsługi wersji demonstracyjnej.
Dla celów przejrzystości załóżmy, że standardowa częstotliwość magistrali I2C wynosi 100 kHz.
Odpowiedzi:
W trybie szybkim i podciąganiu rezystora pojemność powinna być mniejsza niż 200pF, zgodnie ze specyfikacją szyny I2C i instrukcją obsługi dla dokumentu NXP .
Przy obecnych podciągnięciach źródła możesz przejść do 400pF, ale nie z rezystorami.
Jeśli twój drut ma 20pF / 30cm i masz kolejne 50pF z błąki i pojemności wejściowej, jesteś ograniczony do 2,25 m długości kabla. Różne założenia doprowadzą do różnych liczb.
źródło
Niesamowite długości brzmienia, takie jak 10,25 i 100 m są całkowicie możliwe, i często używam tej metody (z UART nie I2C, ale metoda stoi), gdy muszę szybko poskładać rzeczy. Jednak nie jest to najlepszy sposób.
Kluczem jest poznanie progu napięcia wejściowego. Upewnij się, że spadek napięcia w przewodzie uziemienia jest znacznie poniżej tego, w przeciwnym razie nadajnik o wysokim potencjale uziemienia nie będzie w stanie wystarczająco obniżyć napięcia. Brak tolerancji dla przesunięć uziemienia IMHO jest największym powodem korzystania z RS485 lub nadajników-odbiorników (I2C przez CAN jest wspomniany w kilku uwagach dotyczących zastosowania).
W idealnym przypadku wszystkie urządzenia będą miały własną brodawkę na ścianie i baterię, a między przewodami uziemienia nie będzie przesyłana żadna moc.
Ale weźmy na przykład CAT5. CAT5 nie może być wyższy niż 52pf / m lub nie jest to CAT5.
100 m kabla 52pf ma pojemność 5200pf lub 5,2nf.
5,2n razy 20 kiloomów (pullup) daje stałą czasową około 104 mikrosekund. To ogranicza prędkość do około 10 kHz.
Używając podciągnięć 2,2kohm, prawdopodobnie możesz dostać się do 100 kHz.
Słyszałem, że urządzenia powinny mieć rezystor na SDL i SCK, ze względu na duże obciążenie pojemnościowe, które napędzają, około 180 lub 200 omów.
Ale szczerze mówiąc, I2C wcale nie nadaje się na długie dystanse. Transceiver CAN lub RS485 używane z normalnym UART to solidne rozwiązanie z bardzo dobrą ochroną przed awarią, odpornością na wyładowania elektrostatyczne, prędkością, odległością itp., Za cenę dolara za chip lub mniej więcej, przesunięcia uziemienia nie mają prawie tak dużego znaczenia, że jesteś swobodnie przenosić energię wraz z danymi.
Jedynym minusem jest to, że nadajnik-odbiornik może osiągnąć transmisję 70 mA, a 1 lub 2ma tylko nasłuchuje, więc I2C lub bezpośredni TTART UART mogą być przydatne w sytuacjach ekstremalnie niskiego poboru mocy, ale zastanów się, ile czasu faktycznie spędzasz na wysyłaniu.
źródło
Pracuję dla firmy produkującej czujniki USB. Większość z nich oparta jest na chipach czujników I2C, urządzenia te można podzielić na dwie części, dzięki czemu można zainstalować część procesora w jednym miejscu, a część czujnika w innym. Przeprowadziliśmy sporo testów połączenia I2C między procesorem urządzenia a czujnikami I2C. Przy 100 kHz, przy dobrym protokole odzyskiwania po błędzie, można łatwo dotrzeć do 25 m za pomocą podstawowych przewodów. Nawet raz udało nam się osiągnąć 100 m za pomocą kabla CAT5.
źródło
IIC jest protokołem synchronicznym i jako taki może być uruchamiany dowolnie powoli, aby spełnić wymagania systemowe dotyczące odległości i hałasu.
Istnieje wiele przykładów użycia IIC za pomocą kabla, od ACCESS.bus w latach 90. XX wieku po to, jak jest on dzisiaj używany do pobierania informacji EDID z wyświetlaczy wideo.
źródło
Coś takiego jak P82B96 NXP może być użyte do zmiany poziomów napięcia na szynie, pozwalając na znacznie dłuższe odległości.
Zestawienie danych zawiera przykłady dla długości kabla I2C 3m, 25m, 100m i 250m.
Istnieją inne układy, które mają podobną funkcjonalność.
źródło