Як підключити декілька пристроїв інтерфейсу i2c в один контактний формат A4 (SDA) та A5 (SCL) на Arduino?


32

Я хочу додати модуль годинника в реальному часі до свого маленького проекту. Я хочу відобразити час і дату на моєму існуючому РК-модулі i2c 2x16.

Як тактовий годинниковий модуль інтерфейсу i2c в реальному часі, так і 2x16 РК-модуль використовують один і той же контактний формат A4 (SDA) та A5 (SCL) на Arduino Uno. Після годин пошуку в мережі, шина i2c може фактично зайняти багато серійних пристроїв. Це можливо, оскільки кожен пристрій має свою унікальну адресу.

Моє запитання - як фізично з'єднати два i2c-інтерфейсні пристрої в єдиний формат A4 та A5? Спасибі.


3
Коротка відповідь: проводите їх паралельно. Зв’яжіть ПДД разом і підключіть до А4, а СКЛ - до А5. Тоді, звичайно, виникає питання підтяжки, який іноді допомагає.
SDsolar

Відповіді:


32

Деяким людям важко візуалізувати речі, пов'язані разом, ось ось малюнок:

(Подання пропозиції)

схематичні

імітуйте цю схему - Схематична схема, створена за допомогою CircuitLab I2C, є шиною, тому одноіменні сигнали з'єднані між собою. Схема адресації дозволяє мікроконтролеру вибрати, з яким пристроєм він спілкується. На Arduino 10K підтягуючі резистори йдуть "VDD", що є штирями 5V або 3.3V.


Привіт, це може бути дуже елементарним, але я новачок в електроніці і запустив цю сторінку з google search, на що посилається UC?
Ciasto piekarz

Я вважаю, що посилання є на будь-який UC, оскільки схема з'єднання повинна бути однаковою, якщо не зазначено інше.
KingsInnerSoul

uC може бути ардуїно. SDA - контактний А4, а SCL - контактний A5.
SDsolar

9
@Ciastopiekarz, μC - це "мікроконтролер". Грецька літера μ - це абревіатура для мікро. Оскільки μ схожий на u, багато людей просто пишуть "uC".
foobarbecue

9

Для I2C, якщо всі ведені пристрої мають різні адреси пристроїв, усі штифти SDA повинні бути з'єднані разом, а всі штифти SCL повинні бути з'єднані разом. Це так просто.

Природно, ви також повинні включати підтягуючі резистори на обох лініях, як це потрібно для I2C. Про те, як вибрати значення резистора, було обговорено тут раніше .


Я виявив, що поки одним із пристроїв є DS3231 RTC, тоді зовнішні підтяжки не потрібні.
SDsolar

3
@SDsolar, це, ймовірно, означає, що DS3231 має внутрішні підтяжки, тому використовуючи цей пристрій, ви надаєте підтяжки для шини. Це не обов'язково добре, оскільки це обмежує вашу свободу регулювати опір підтягування залежно від кількості пристроїв в шині.
Фотон

Мої думки точно. Додавання зовнішніх підключень було б паралельно тому, що є в DS3231, і тому може виявитися недостатньо для задоволення I2C.
SDsolar

@SDsolar, що це стосується питання ОП чи моєї відповіді? Це не загальний дискусійний сайт. Якщо ви хочете просто поговорити про речі, ви можете приєднатися до нашої чатової кімнати .
The Photon

3

Підключіть два штифта A4-sda до A5-scl (на обох платах uno-uno) та підключіть резистор від 5 V від кожної відповідної лінії sda-scl.

введіть тут опис зображення


проголосували за те, що відповідь не відповідає на початкове запитання, а саме "фізично з'єднати два пристрої інтерфейсу i2c в єдиний формат A4 та A5".
Олег Мазуров

Я не міг видалити, тому я редагую (можливо) більш задовільну відповідь
daedalucian

Ділитися напругою не потрібно?
clankill3r

0

I2C - протокол передачі даних, розроблений Philips. Також відомий як двопровідний інтерфейс, оскільки для зв'язку використовується два дроти. SCL-послідовна лінія годинника. SDL-послідовна лінія даних. Тож вам потрібно підключити відповідні штифти i2c пристроїв, будь то eeprom або lcd до SCL та SDL штифтів мікроконтролера, який ви використовуєте з підтягуючим резистором до VDD. Оскільки це протокол адрес, що має 7-бітну адресу для кожного підключеного пристрою, ви можете адресувати до 2 ^ 7 різних пристроїв. Але зазвичай I2C-адреса підлеглого пристрою визначається деякими бітами, які повинні бути налагоджені розробником. Це допомагає з'єднати пристрої одного типу з різною провідною частиною адреси на одній шині.


1
Все правда, але це гарно, якщо ви хочете більше одного, як-от BH1750 одиниця інтенсивності світла. Я хочу, щоб їх було 4, і я не хочу мати справу з комутацією подвійної шини I2C. Також деякі пристрої, як DS3231, мають внутрішні підключення, тому будь-які зовнішні підключення знаходяться паралельно їм.
SDsolar

0

Також слід перевірити підтягуючі резистори. Якщо ви використовуєте вже зроблені дошки, а не тільки мікросхему, на бортах зазвичай є підтягуючі резистори на борту між шинами та vcc. Отже, коли ви з'єднуєте кожну річ паралельно, резистори також паралельно, тому загальне падіння значення резистора і ваше спілкування може вийти з ладу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.