Правила прокладки кабелей I2C для двух и более устройств
Я пытаюсь подключить две коммутационные платы с устройствами i2c к Mega2560:
- ЖК-экран HD44280 с рюкзаком PCF8574 i2c
- комбинированная плата с DS1307 + AT24C32
Существует два очевидных варианта подключения кабелей:
два 10-дюймовых ленточных кабеля, которые соединяются прямо перед подключением к контактам SDA и SCL Arduino. Технически, одна может быть 6 дюймов... но я знаю, что с RS485 вы напрашиваетесь на неприятности, если делаете звезду с ветвями разной длины. Кабели не могут быть короче без серьезного ухудшения моей способности отлаживать его в частично разобранном виде (ЖК-дисплей прикреплен к крышке, а кабели достаточно длинные, чтобы я мог положить крышку на стол рядом с корпусом и включите все, не нагружая кабели).
Те же 10-дюймовые сегменты ленточного кабеля, но последовательно соединенные... Arduino к ЖК-дисплею, ЖК-дисплею к RTC. В этом случае второй действительно должен быть 10 дюймов, потому что он установлен в единственном свободном месте внутри моего корпуса.
Одно из них будет лучше или хуже другого?
Существуют ли какие-либо правила относительно того, ГДЕ должны располагаться подтягивающие резисторы? Модуль DS1307 имеет встроенные подтягивающие резисторы. Нужно ли мне как-то их отключать & используйте резисторы прямо в точке подключения шины к SDA & Контакты SCL, или подтягивания могут проходить практически в любом месте шины (в том числе на одном конце звезды или на дальнем конце шлейфовой цепи)?
@Bitbang3r, 👍2
1 ответ
Лучший ответ:
I2C обычно работает медленно. Вам не нужно беспокоиться о том, как маршрутизировать соединение устройства. Потому что задержка распространения не будет проблемой. Основная цель должна заключаться в минимизации емкости проводки, а это означает минимизацию общей длины провода. Но, как вы упомянули, длина одного кабеля фиксирована, поэтому сведите другую к минимуму. Топология «звезда» будет работать, если длина проводов не превышает 10 дюймов.
- Отправка и получение различных типов данных через I2C в Arduino
- Как работают функции вне цикла void?
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Как отправить строку на мастер с помощью i2c
- Как выбрать альтернативные контакты I2C на ESP32?
- Что означает в I2C «NACK получен»?
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- Несколько датчиков I2C с одинаковым адресом