AFON // радиотехник affonya@mail.ru
← Шины и интерфейсы

Интерфейс I²C

Как работает двухпроводная шина I²C: линии SDA и SCL, условия старта и стопа, адресация устройств, подтверждение и подтягивающие резисторы.

Что такое I²C

I²C (Inter-Integrated Circuit, у Atmel — TWI) — синхронная двухпроводная шина для связи микросхем на одной плате: датчиков, EEPROM, часов реального времени, дисплеев. Нужно всего две линии и общая земля.

Линии и подтяжка

Шина использует две линии с открытым стоком: SDA (данные) и SCL (тактирование). Обе подтягиваются к питанию резисторами (обычно 4.7 кОм) — устройства могут только «прижимать» линию к нулю, что позволяет нескольким ведомым и ведущим сосуществовать. Номинал подтяжки под нужный ток удобно прикинуть в калькуляторе закона Ома.

Адресация и протокол

Каждое устройство имеет 7-битный (реже 10-битный) адрес — до 127 устройств на шине. Обмен начинается с условия СТАРТ (SDA падает при высоком SCL), далее ведущий передаёт адрес и бит чтения/записи, ведомый отвечает битом ACK. После обмена байтами следует условие СТОП.

Скорости

РежимЧастота SCL
Standardдо 100 кГц
Fastдо 400 кГц
Fast+ / High-speed1 / 3.4 МГц

Аппаратный I²C есть в большинстве PIC и AVR. Родственные интерфейсы — USB и последовательный COM; распиновки шин — в справочнике.