Что такое 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 · Распиновки.