AFON // радиотехник affonya@mail.ru
← Радиотехника

Шина I²C

Двухпроводная шина для связи микросхем: линии SDA и SCL, адресация устройств, протокол с подтверждением ACK и подтягивающими резисторами — экономия выводов для датчиков и периферии.

Что такое I²C

I²C (Inter-Integrated Circuit) — двухпроводная синхронная шина для связи микросхем на короткой дистанции. Всего две линии обслуживают множество устройств за счёт адресации, поэтому I²C незаменима там, где важна экономия выводов: датчики, часы реального времени, EEPROM, расширители портов. Подробное описание протокола — на странице шина I²C.

Две линии и адресация

  • SDA — линия данных;
  • SCL — линия тактирования.

Обе линии — с открытым стоком и подтягивающими резисторами к питанию. На шине один (или несколько) ведущий и много ведомых, каждый со своим адресом (7 или 10 бит). Ведущий начинает обмен, называет адрес и направление (чтение/запись), нужный ведомый отзывается.

Протокол обмена

[СТАРТ] [адрес+R/W] [ACK] [данные] [ACK] … [СТОП]

Каждый байт подтверждается битом ACK от принимающей стороны — это встроенный контроль доставки, которого нет у SPI. Условия СТАРТ и СТОП формируются переходами SDA при высоком SCL.

Скорости

Стандартные режимы: 100 кбит/с (Standard), 400 кбит/с (Fast), 1 Мбит/с (Fast+) и выше. Скорость и число устройств ограничены суммарной ёмкостью шины и номиналом подтягивающих резисторов.

Частые вопросы

Зачем нужны подтягивающие резисторы?

Линии I²C работают с открытым стоком: устройства только «прижимают» линию к нулю, а в единицу её возвращают подтягивающие резисторы. Без них шина не сможет формировать высокий уровень. Типовые номиналы — 4,7 кОм.

Что если два устройства имеют одинаковый адрес?

Возникает конфликт. Решения: выбрать модули с настраиваемым адресом (перемычки), использовать разные шины или мультиплексор I²C. Адрес должен быть уникальным на шине.

Итоги

I²C связывает множество микросхем всего по двум линиям (SDA, SCL) с адресацией и подтверждением каждого байта (ACK). Это экономит выводы ценой скорости. Обязательны подтягивающие резисторы и уникальные адреса устройств. Идеальна для датчиков и служебной периферии.

Смотрите также: Шина I²C (подробно) · SPI · UART · Распиновки.