Разработанный Philips в 1980-х годах, I2C стал одним из самых распространенных протоколов последовательной связи в электронике. I2C обеспечивает связь между электронными компонентами или IC-IC, независимо от того, находятся ли компоненты на одной плате или подключены через кабель. Ключевой особенностью I2C является возможность иметь огромное количество компонентов на одной шине связи только с двумя проводами, что делает I2C идеальным для приложений, требующих простоты и низкой стоимости по скорости.
Протокол I2C
I2C - это протокол последовательной связи, который требует только двух сигнальных линий. Он был разработан для связи между микросхемами на печатной плате. Первоначально I2C был разработан для связи 100 Кбит / с, но более быстрые режимы передачи данных были разработаны на протяжении многих лет для достижения скорости до 3,4 Мбит. Протокол I2C был установлен в качестве официального стандарта, который обеспечивает хорошую совместимость между реализациями I2C и хорошую обратную совместимость.
Сигналы I2C
Протокол I2C использует только две двунаправленные сигнальные линии для связи со всеми устройствами на шине I2C. Два используемых сигнала:
- Линия последовательных данных (SDL)
- Часы с последовательными данными (SDC)
Причина, по которой I2C может использовать только два сигнала для связи с несколькими периферийными устройствами, заключается в том, как обрабатывается связь по шине. Каждое сообщение I2C начинается с 7-битного (или 10-битного) адреса, который вызывает адрес периферийного устройства, остальное сообщение предназначено для приема связи. Это позволяет нескольким устройствам на шине I2C играть роль ведущего устройства в соответствии с потребностями системы. Чтобы предотвратить конфликты связи, протокол I2C включает в себя возможности обнаружения арбитража и обнаружения конфликтов, которые обеспечивают плавное взаимодействие по шине.
Преимущества и ограничения
Как протокол связи, I2C имеет много преимуществ, которые делают хорошим выбором для многих встроенных приложений проектирования. I2C обладает следующими преимуществами:
- I2C требует только двух сигнальных линий
- Гибкие скорости передачи данных
- Каждое устройство на шине независимо адресуется
- У устройств есть простые отношения Ведущий / Невольник
- I2C способен обрабатывать несколько основных сообщений, обеспечивая обнаружение конфликтов и конфликтов
- Связь на большие расстояния, чем SPI
Со всеми этими преимуществами, I2C также имеет несколько ограничений, которые, возможно, необходимо разрабатывать. Наиболее важные ограничения I2C включают:
- Поскольку для адресации устройства доступны только 7 бит (или 10 бит), устройства на одной шине могут совместно использовать один и тот же адрес. Некоторые устройства могут конфигурировать последние несколько бит адреса, но это все еще налагает ограничение устройств на одной и той же шине.
- Доступны только несколько ограниченных скоростей связи, и многие устройства не поддерживают передачу на более высоких скоростях. Частичная поддержка каждой скорости на шине требуется для предотвращения медленных устройств от частичной передачи, что приведет к операционным сбоям.
- Общий характер шины I2C может привести к тому, что вся шина висит, когда одно устройство на шине перестает работать. Использование шины для шины можно использовать для перезапуска шины и восстановления правильной работы.
- Поскольку устройства могут устанавливать свою скорость связи, более медленные операционные устройства могут задерживать работу устройств с более высокой скоростью.
- I2C потребляет больше энергии, чем другие шины последовательной связи из-за топологии открытого стока линий связи.
- Ограничения шины I2C обычно ограничивают количество устройств на шине примерно до десятка устройств.
Приложения
Шина I2C является отличным вариантом для приложений, для которых требуется низкая стоимость и простая реализация, а не высокая скорость. Например, чтение ICM памяти, доступ к ЦАП и АЦП, считывание датчиков, передача и управление пользовательскими действиями, считывание аппаратных датчиков и связь с несколькими микроконтроллерами являются общими применениями протокола связи I2C.