Какова максимальная длина кабеля, который можно использовать для подключения двух устройств I2C (I2C master-> I2C slave)?
Да, я знаю, что I2C действительно предназначен для внутриплатной связи. Передо мной была поставлена «цель разработки» - использовать общую шину I2C для нескольких подчиненных I2C для поддержки демонстрации.
Для ясности предположим, что стандартная частота шины I2C составляет 100 кГц.
Ответы:
Для быстрого режима и подтягивания резистора емкость должна быть меньше 200 пФ, в соответствии с этим документом NXP, спецификацией шины I2C и руководством пользователя .
С подтягиванием источника тока вы можете перейти на 400 пФ, но не с резисторами.
Если ваш провод 20 пФ / 30 см и у вас есть еще 50 пФ рассеянной и входной емкости, длина кабеля ограничена 2,25 м. Различные предположения приведут к различным числам.
источник
Безумные длины звучания, такие как 10, 25 и 100 м, вполне возможны, и я часто использую этот метод (с UART, а не с I2C, но метод стоит), когда мне нужно быстро собрать вещи. Хотя это не совсем лучший способ.
Ключ должен знать ваш порог входного напряжения. Убедитесь, что падение напряжения в заземляющем проводе намного ниже этого, иначе передатчик с высоким потенциалом земли не сможет снизить напряжение достаточно низко. Отсутствие допустимого отклонения для наземных смещений ИМХО является основной причиной использования 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 могут быть полезны в экстремальных ситуациях с низким энергопотреблением, но подумайте, сколько времени вы на самом деле тратите на отправку.
источник
Я работаю в компании, производящей USB-датчики. Большинство из них основаны на сенсорных микросхемах I2C, эти устройства могут быть разделены на две части, поэтому вы можете установить часть процессора в одном месте, а часть датчика - в другом. Мы провели довольно много тестов на соединение I2C между процессором устройства и датчиками I2C. На частоте 100 кГц с хорошим протоколом восстановления после ошибок можно легко добраться до 25 м с помощью основных проводов. Мы даже смогли достичь 100 метров один раз с кабелем CAT5.
источник
Что-то вроде P82B96 от NXP можно использовать для изменения уровней напряжения на шине, что позволяет значительно увеличить расстояния.
Техническое описание содержит примеры для I2C кабеля длиной 3 м, 25 м, 100 м и 250 м.
Есть и другие чипы, которые имеют схожую функциональность.
источник
IIC является синхронным протоколом, и, как таковой, он может запускаться произвольно медленно, чтобы соответствовать системным требованиям в отношении расстояния и шума.
Есть много примеров использования IIC по кабелю, начиная с ACCESS.bus еще в 1990-х годах и заканчивая тем, как он используется сегодня для получения информации EDID с видеодисплеев.
источник