Что такое 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-speed | 1 / 3.4 МГц |
Аппаратный I²C есть в большинстве PIC и AVR. Родственные интерфейсы — USB и последовательный COM; распиновки шин — в справочнике.