📌 I2C (Inter-Integrated Circuit)
I²C (Inter-Integrated Circuit) — это синхронный двунаправленный последовательный протокол с полудуплексной передачей, разработанный Philips (ныне NXP) для связи между интегральными схемами.
Поддерживает несколько ведущих и нескольких ведомых устройств на одной общей шине.
🧠 Как работает
I²C использует две линии:
- SDA — линия данных (Serial Data)
- SCL — линия тактового сигнала (Serial Clock)
Особенности:
- Все устройства подключены к одной паре линий и имеют уникальные 7- или 10-битные адреса
- Поддержка многоведомой и многоведущей архитектуры
- Передача состоит из: START → ADDRESS → R/W → DATA → ACK → STOP
- Все передачи инициируются ведущим
Скорости:
- Standard mode: до 100 кбит/с
- Fast mode: до 400 кбит/с
- Fast mode+: до 1 Мбит/с
- High-Speed mode: до 3.4 Мбит/с
⚙️ Где применяется
- Датчики (температуры, давления, освещённости)
- RTC (часы реального времени)
- EEPROM / Flash Memory
- Аудиокодеки, контроллеры питания
- Встраиваемые и носимые устройства
✅ Преимущества
- Простая реализация с минимальным количеством пинов
- Поддержка адресации — можно использовать десятки устройств на одной шине
- Поддерживает подтверждение получения (ACK/NACK)
- Подходит для “hot-swap” устройств
❌ Недостатки
- Низкая скорость по сравнению с SPI
- Требует подтягивающих резисторов на линии
- Чувствительность к шумам и длине линий
- Нет четкого стандарта для всех устройств (возможны несовместимости на уровне реализации)