Правила прокладки кабелей I2C для двух и более устройств

i2c

Я пытаюсь подключить две коммутационные платы с устройствами i2c к Mega2560:

  • ЖК-экран HD44280 с рюкзаком PCF8574 i2c
  • комбинированная плата с DS1307 + AT24C32

Существует два очевидных варианта подключения кабелей:

  • два 10-дюймовых ленточных кабеля, которые соединяются прямо перед подключением к контактам SDA и SCL Arduino. Технически, одна может быть 6 дюймов... но я знаю, что с RS485 вы напрашиваетесь на неприятности, если делаете звезду с ветвями разной длины. Кабели не могут быть короче без серьезного ухудшения моей способности отлаживать его в частично разобранном виде (ЖК-дисплей прикреплен к крышке, а кабели достаточно длинные, чтобы я мог положить крышку на стол рядом с корпусом и включите все, не нагружая кабели).

  • Те же 10-дюймовые сегменты ленточного кабеля, но последовательно соединенные... Arduino к ЖК-дисплею, ЖК-дисплею к RTC. В этом случае второй действительно должен быть 10 дюймов, потому что он установлен в единственном свободном месте внутри моего корпуса.

Одно из них будет лучше или хуже другого?

Существуют ли какие-либо правила относительно того, ГДЕ должны располагаться подтягивающие резисторы? Модуль DS1307 имеет встроенные подтягивающие резисторы. Нужно ли мне как-то их отключать & используйте резисторы прямо в точке подключения шины к SDA & Контакты SCL, или подтягивания могут проходить практически в любом месте шины (в том числе на одном конце звезды или на дальнем конце шлейфовой цепи)?

, 👍2


1 ответ


Лучший ответ:

1

I2C обычно работает медленно. Вам не нужно беспокоиться о том, как маршрутизировать соединение устройства. Потому что задержка распространения не будет проблемой. Основная цель должна заключаться в минимизации емкости проводки, а это означает минимизацию общей длины провода. Но, как вы упомянули, длина одного кабеля фиксирована, поэтому сведите другую к минимуму. Топология «звезда» будет работать, если длина проводов не превышает 10 дюймов.

,