Сколько устройств можно подключить к одной шине I2C?
Обновлено Редакция GAW
Содержание
У шины I2C нет жёсткого предела «не больше N устройств». Её ограничивают три вещи: адреса, ёмкость линий и ток, который выходы могут вытянуть через подтяжки.
Адреса
Адрес — 7 бит, то есть 128 значений. UM10204 резервирует две группы по восемь: 0000 XXX и 1111 XXX — общий вызов, 10-битную адресацию и другие служебные функции. Для устройств остаются 0x08–0x77 — 112 адресов (наш расчёт). На деле ограничивают не они, а одинаковые фиксированные адреса одинаковых датчиков; как развести их, рассказано в ответе «Как подключить два одинаковых датчика I2C».
Ёмкость
По UM10204 ёмкость каждой линии — не больше 400 пФ, а вывод каждого устройства добавляет до 10 пФ. Наш расчёт при 100 пФ на провода и дорожки:
Это худший случай по ёмкости выводов; длинные провода съедают запас быстрее, и тогда устройств ещё меньше. Подробнее о том, откуда берётся ёмкость шины.
Подтяжки на модулях
Почти каждый модуль приходит со своими резисторами, и на шине они включаются параллельно. Выход должен опускать линию до 0,4 В при токе 3 мА, поэтому общее сопротивление ограничено снизу (TI SLVA689A):
| Питание шины | Наименьшая подтяжка | Модулей с 10 кОм | Модулей с 4,7 кОм |
|---|---|---|---|
| 5 В | 1,53 кОм | 6 | 3 |
| 3,3 В | 967 Ом | 10 | 4 |
Числа модулей — наш расчёт. Лишние подтяжки снимают с модулей, а итоговое сопротивление и время нарастания считает калькулятор подтяжек I²C. Устройство шины целиком — в статье «Шина I²C».
Похожие вопросы
Сколько модулей с подтяжками можно подключить?
Подтяжки модулей оказываются параллельно, и общее сопротивление не должно опускаться ниже (VCC − 0,4 В) / 3 мА: 1,53 кОм при 5 В. По нашему расчёту это не больше шести модулей с резисторами 10 кОм или трёх — с 4,7 кОм; остальным модулям подтяжки снимают.
Что делать, если ёмкость шины больше 400 пФ?
Разбить шину на сегменты: коммутатор TCA9548A подключает к основной шине только выбранные каналы, и ёмкость остальных в этот момент не мешает. Ещё один путь — снизить частоту и уменьшить подтяжку, но предел 400 пФ это не отменяет.
Бывают ли адреса I2C длиннее 7 бит?
Да, UM10204 описывает 10-битную адресацию — под неё зарезервирована группа 1111 0XX. Но устройств с ней мало, и большинство датчиков и модулей используют обычные 7-битные адреса.
Источники
- 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 пФ
- 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 Ом
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B, 2020) — разд. 22.2.2 — число устройств на шине TWI ограничено только ёмкостью 400 пФ и 7-битным адресным пространством
Нашли ошибку?
Смотрите также
- Ёмкость шины I²C (Cb)Ёмкость линии I²C: 400 пФ, подтяжка и скорость
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W
- Подтягивающие резисторы I²CДиапазон Rp по напряжению, скорости и ёмкости шины
- Как подключить два одинаковых датчика I2C к одной шине?Вывод выбора адреса, коммутатор TCA9548A или вторая шина I2C
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек