Перейти к содержанию

Сколько устройств можно подключить к одной шине I2C?

Обновлено Редакция GAW

У шины I2C нет жёсткого предела «не больше N устройств». Её ограничивают три вещи: адреса, ёмкость линий и ток, который выходы могут вытянуть через подтяжки.

Адреса

Адрес — 7 бит, то есть 128 значений. UM10204 резервирует две группы по восемь: 0000 XXX и 1111 XXX — общий вызов, 10-битную адресацию и другие служебные функции. Для устройств остаются 0x08–0x77 — 112 адресов (наш расчёт). На деле ограничивают не они, а одинаковые фиксированные адреса одинаковых датчиков; как развести их, рассказано в ответе «Как подключить два одинаковых датчика I2C».

Ёмкость

По UM10204 ёмкость каждой линии — не больше 400 пФ, а вывод каждого устройства добавляет до 10 пФ. Наш расчёт при 100 пФ на провода и дорожки:

Nmax=400−10010=30N_\text{max} = \frac{400 - 100}{10} = 30

Это худший случай по ёмкости выводов; длинные провода съедают запас быстрее, и тогда устройств ещё меньше. Подробнее о том, откуда берётся ёмкость шины.

Подтяжки на модулях

Почти каждый модуль приходит со своими резисторами, и на шине они включаются параллельно. Выход должен опускать линию до 0,4 В при токе 3 мА, поэтому общее сопротивление ограничено снизу (TI SLVA689A):

Питание шиныНаименьшая подтяжкаМодулей с 10 кОмМодулей с 4,7 кОм
5 В1,53 кОм63
3,3 В967 Ом104

Числа модулей — наш расчёт. Лишние подтяжки снимают с модулей, а итоговое сопротивление и время нарастания считает калькулятор подтяжек I²C. Устройство шины целиком — в статье «Шина I²C».

Похожие вопросы

Сколько модулей с подтяжками можно подключить?

Подтяжки модулей оказываются параллельно, и общее сопротивление не должно опускаться ниже (VCC − 0,4 В) / 3 мА: 1,53 кОм при 5 В. По нашему расчёту это не больше шести модулей с резисторами 10 кОм или трёх — с 4,7 кОм; остальным модулям подтяжки снимают.

Что делать, если ёмкость шины больше 400 пФ?

Разбить шину на сегменты: коммутатор TCA9548A подключает к основной шине только выбранные каналы, и ёмкость остальных в этот момент не мешает. Ещё один путь — снизить частоту и уменьшить подтяжку, но предел 400 пФ это не отменяет.

Бывают ли адреса I2C длиннее 7 бит?

Да, UM10204 описывает 10-битную адресацию — под неё зарезервирована группа 1111 0XX. Но устройств с ней мало, и большинство датчиков и модулей используют обычные 7-битные адреса.

Источники

  1. NXP. UM10204 I2C-bus specification and user manual (Rev. 7.0, 1 October 2021) — разд. 3.1.12, табл. 4 — зарезервированы две группы по восемь адресов: 0000 XXX и 1111 XXX (общий вызов, START byte, CBUS, Hs-mode, 10-битная адресация, Device ID); табл. 11 — ёмкость каждой линии Cb не больше 400 пФ (550 пФ в Fast-mode Plus), ёмкость вывода Ci не больше 10 пФ
  2. Texas Instruments. SLVA689A: I2C Bus Pullup Resistor Calculation (revised October 2026) — ур. 1 — Rp(min) = (VCC − VOL(max)) / IOL, VOL(max) = 0,4 В при токе 3 мА; ур. 8 — при 3,3 В Rp(min) около 967 Ом
  3. Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B, 2020) — разд. 22.2.2 — число устройств на шине TWI ограничено только ёмкостью 400 пФ и 7-битным адресным пространством

Нашли ошибку?