📌 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
  • Требует подтягивающих резисторов на линии
  • Чувствительность к шумам и длине линий
  • Нет четкого стандарта для всех устройств (возможны несовместимости на уровне реализации)