Максимальна довжина шини I2C?


38

Яка максимальна довжина кабелю, яка може бути використана для підключення двох пристроїв I2C (I2C master-> I2C slave)?

Так, я знаю, що I2C дійсно розроблений для внутрішньо-бортового спілкування. Мені доручено "дизайнерська мета" використовувати загальну шину I2C для декількох рабів I2C для підтримки демонстрації.

З метою ясності припустимо стандартну частоту шини I2C 100 кГц.


1
Максимальна довжина приходить, щоб я грав з ємністю, введеною довжиною. Занадто велика ємність, і це може вплинути на вашу швидкість. Отже, як завжди, це залежить.
Густаво Литовський

@GustavoLitovsky Ви маєте рацію щодо ємності. Це також залежить від типу кабелів, які використовуються (екрановані проти не екрановані). Мене найбільше цікавить загальна настанова.
Нейт

2
@Nate Guideline: максимальна чиста ємність шини 400pF. (Дещо пов’язане з питанням: Спогади зарослого автобуса I2C .)
Нік Алексєєв

1
I2C = Інтегральна схема шини. Він не розрахований на великі відстані між коробками і, звичайно, не на 400 кГц.
Spehro Pefhany

1
Просто хотів відкинути якийсь особистий досвід убік від розрахунків. Я зробив демонстрацію, переходячи від плати розробників до перетворювача I2C на USB з незахищеним проводом близько 3 футів. Не виглядав красиво, але це працювало 90% часу.
mcmiln

Відповіді:


16

Для швидкого режиму та підключення резисторів ємність повинна бути менше 200 пФ, відповідно до цього документа NXP I2C-шини та посібника користувача .

З підключенням джерела струму ви можете перейти до 400pF, але не з резисторами.

Якщо ваш провід 20pF / 30cm, а у вас є ще 50pF розрядних і вхідних ємностей, ви обмежені на 2,25 м довжини кабелю. Різні припущення призведуть до різної кількості.


1
@KrunalDesai Це конкретно згадується у зв'язаному вище документі NXP. Специфікація та посібник користувача I2C-bus
Spehro Pefhany

1
Для прикладу в реальному світі "Wiimote" Nintendo Wii використовує I2C 400 кГц ( wiibrew.org/wiki/Wiimote/Extension_Controllers ) для зв'язку з периферійними пристроями, такими як Nunchuk ( wiibrew.org/wiki/Wiimote/Extension_Controllers/Nunchuck ), який також ви бачите, має кабель, який становить близько 1м. Пасивні розширювачі продаються, щоб отримати додатковий 1м ( amazon.com/Extension-Cable-Wii-Nunchuck-Nintendo/dp/B0039OEV9K ), тож вони наполягають, але залишаються в межах 2,25 м.
Роб Старлінг

16

Безглузді звуки довжини, як 10,25 та 100м, цілком можливі, і я часто використовую цей метод (з UART не I2C, але метод стоїть), коли мені потрібно швидко скласти речі. Це не зовсім найкращий спосіб.

Головне - знати порог вхідної напруги. Переконайтесь, що падіння напруги в земному кабелі знаходиться значно нижче цього, інакше передавач з високим потенціалом землі не зможе витягнути напругу досить низько. Відсутність толерантності до компенсації заземлення IMHO є найбільшою причиною використання RS485 або трансиверів (I2C над CAN згадується в кількох примітках до програми).

В ідеалі всі пристрої матимуть власну бородавку для настінних батарей та акумулятор, і живлення між пристроями не надсилатиметься за заземленням.

Але, давайте, наприклад, CAT5. CAT5 не може бути вище 52pf / m, або це не CAT5.

100м кабелю 52pf має ємність 5200pf або 5.2nf.

5,2n разів 20 кілометрів (підтягування) дає константу часу приблизно 104 мікросекунди. Це обмежує швидкість приблизно до 10 кГц або близько того.

Використовуючи підключення 2,2 км, ви, ймовірно, зможете дістатися до 100 кГц.

Я чув, що пристрої повинні мати резистор на SDL і SCK через велику ємнісну навантаження, яку вони приводять, приблизно, як 180 або 200 Ом.

Але, чесно кажучи, I2C зовсім не так, щоб їхати на великі відстані. CAN-приймачі або RS485, які використовуються із звичайним UART, - надійне рішення з дуже хорошим захистом від несправностей, стійкістю до ОУР, швидкістю, дистанцією тощо за ціною долара чип чи так, компенсація заземлення не має значення майже стільки, скільки ви вільно нести владу разом із даними.

Єдиним недоліком є ​​те, що трансивер може досягати 70 м передачі та 1 або 2 мА прослуховування, тому I2C або прямий TTL UART можуть бути корисними в екстремальних ситуаціях з низькою потужністю, але врахуйте, скільки часу ви насправді витрачаєте на надсилання.


7

Я працюю в компанії, яка виготовляє USB-датчики. Більшість з них базується на мікросхемах датчика I2C; ці пристрої можна розділити надвоє, тож можна встановити частину процесора в одне місце, а частина датчика в інше. Ми провели досить багато тестів на зв'язок I2C між процесором пристрою та датчиками I2C. При 100 кГц, з хорошим протоколом відновлення помилок, 25 м можна легко досягти за допомогою основних проводів. Нам навіть вдалося один раз досягти 100 м за допомогою кабелю CAT5.


Здається, ви говорите про довжину кабелю USB . ОП запитує про підключення сировини I2C. Це зовсім інша тема. Якщо я невірний, відредагуйте свою відповідь, і я видалю свою позицію.
DoxyLover

1
25 м - це дуже багато навіть для usb ...
Володимир Крейвер

3
Ні, я дійсно говорю про з'єднання I2C між процесором пристрою та мікросхемами датчика I2C, а не про підключення USB між хостом і процесором. Ось приклад: yoctopuce.com/EN/products/yocto-meteo/doc/…
мартін

1
Якби ви хотіли використовувати виту пару для I2C та потужності, яку пару би ви скрутили разом? (SDA, SCL), (VCC, GND) або (SDA, GND), (SCL, VCC)?
Cano64

3
В ідеалі ви взагалі не використовуєте кручену пару. Кручена пара корисна для врівноважених сигналів. Якщо у вас немає іншого кабелю, скрутіть сигнал заземленням. Якщо у вас дійсно є лише чотири дроти, подумайте, яку потужність споживає віддалений кінець - можливо, ви закінчите зсув заземлення, який не перевищує допустимого, - перш ніж взяти на себе використовувати лише один провід для GND. Зазвичай я використовую старий кабель Cat5 (не вище! Подвійний щит додає потужність, яка вам не потрібна) з однією парою заземлення, однією парою + 5 В, а також SDA + GND і SCL + GND.
Маттіас Урліхс

4

IIC - це синхронний протокол, і як такий його можна запускати довільно повільно для задоволення системних вимог щодо відстані та шуму.

Існує багато прикладів використання IIC по кабелю, починаючи від ACCESS.bus ще в 90-х роках до того, як він використовується сьогодні для отримання інформації про EDID з відеодисплеїв.


Інший приклад - Wii Nunchuck, який підключений до Wii Remote через I²C за допомогою 4-футового екранованого кабелю.
tcrosley

4

Щось на зразок P82B96 NXP можна було б використовувати для зміни рівнів напруги на шині, дозволяючи набагато довші відстані.

Технічний опис містить приклади для I2C кабелю довжиною 3 м, 25 м, 100 м і 250 м.

Є й інші мікросхеми, які мають подібний функціонал.


Проблема з мікросхемою NXP полягає в тому, що вам потрібно вдвічі більше проводів. Будь-які інші ідеї? знайдені двонаправлені ІМС не перевищують + 5В.
Маттіас Урліхс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.