I2C - шина межсетевых интегральных схем
Шина I2C очень часто используется в сфере встраиваемых устройств. Мы объясним, как она работает и как настроить ее на примере Raspberry Pi.
Характеристики I2C
Inter-Integrated Circuit Bus - это синхронная последовательная коммуникационная шина. Компания Philips Semiconductors была ответственна за ее изобретение в 1982 году, но интерфейс быстро завоевал популярность.
Часто используемые синонимы: I2C, I2C или IIC. Интерфейс использует архитектуру контроллер-цель и позволяет контроллеру взаимодействовать с 112 устройствами с помощью всего двух проводов.
Контроллер может адаптировать битрейт в соответствии с потребностями конкретной цели. Поэтому I2C совместим со многими устройствами, такими как датчики, устройства EEPROM, часы, драйверы двигателей и др.
Проводка
Подключение шины I2C действительно не может быть проще, поскольку вам нужно всего два провода. Подключите вывод последовательного тактового генератора (SCL) контроллера к выводам последовательного тактового генератора цели и подключите также их выводы последовательных данных (SDA). Программное обеспечение I2C сделает все остальное.
Если вам нужно подать питание на устройство I2C, вы можете использовать контакты 3V3, 5V и GROUND вашего Raspberry Pi.
Некоторые устройства, такие как наши BME688 Breakout Board имеют заголовок I2C, поэтому для их подключения не нужны провода.
Связь I2C
Межсоединенная шина может соединить 128 устройств всего двумя проводами. Это возможно благодаря оригинальному принципу связи.
На провода (SDA и SCL) никогда не подается активный высокий уровень. Если устройство хочет отправить логическую 1, оно оставляет провод плавающим. Для отправки логического нуля он притягивает провод к земле.
Контроллер инициирует обмен данными. Любое устройство в сети может выступать в качестве контроллера и цели.
На графике ниже показаны отдельные биты.
Для начала обмена данными контроллер посылает Start-бит, за которым следует I2C-адрес объекта и желаемый режим работы (R - чтение или W - запись).
При коммуникации I2C цель должна возвращать ACK-бит каждые 8 бит (после каждого байта). Поскольку адресное пространство обычно 7-битное, существует 128 (от 0 до 127) адресов. 16 из них зарезервированы. Это оставляет 112 возможных адресов для устройств.
Адрес цели и режим работы составляют один байт, поэтому цель должна вернуть ACK-бит. Затем контроллер посылает (8-битный) адрес регистра, который цель снова подтверждает. С этого момента обмен данными на чтение и запись различается.
Для записи контроллер просто посылает данные 8-битными блоками. Цель подтверждает каждый блок. После завершения записи контроллер посылает стоп-бит.
Для чтения контроллер снова посылает Start-бит, за которым следует адрес цели. Target подтверждает и начинает посылать данные 8-битными блоками. На этот раз контроллер должен подтвердить каждый байт. Для остановки чтения контроллер посылает NACK-бит и, наконец, Stop-бит.
Преимущества, недостатки и применение
Преимущества
Преимущества шины I2C достаточно очевидны. Вы можете подключить 128 устройств с помощью всего двух проводов и двух контактов каждый. Это действительно мощно. Кроме того, у вас есть гибкие скорости. Аппаратная настройка едва ли может быть проще. В отличие от SPI, контроллер знает, правильно ли цель получила данные.
Недостатки
Межинтеграционная шина требует больше места и энергии, поскольку в ней используются подтягивающие резисторы. Она медленнее по сравнению с SPI. Вы можете столкнуться с проблемами, если два устройства используют один и тот же адрес I2C. Адрес хранится непосредственно на устройстве. Некоторые устройства позволяют выбрать один из двух возможных адресов путем припаивания перемычки к определенному месту на устройстве.
Приложения
Если вы ищете Датчик в нашем магазине вы заметите, что почти все датчики, которые не являются аналоговыми, используют интерфейс I2C. Он очень распространен во встраиваемых системах. Есть такие вещи, как память I2C. Часто микроконтроллеры используют эту шину для связи. Кроме того, многие ЦАПы (Digital Analog Cинвертор) и АЦП (Analog Digital Converter) совместимы с интерфейсом.
I2C на Raspberry Pi
Наш видео показывает, как настроить шину Inter-Integrated Circuit на вашем Raspberry Pi.
[...] Также, если вы хотите узнать больше об I2C, ознакомьтесь с этой статьей. [...]
[...] Хотите узнать больше об I2C? Ознакомьтесь с нашей статьей об этом здесь. [...]
[...] I2C - Inter-Integrated Circuit Bus [...]
[...] I2C - Inter-Integrated Circuit Bus [...]
[...] I2C - Inter-Integrated Circuit Bus [...]
[...] Как объясняет Навин, связь между Nano и TFT-дисплеем осуществляется на основе последовательного периферийного интерфейса (SPI). В то же время джойстик и кнопки подключаются через шину Inter-Integrated Circuit Bus (I2C). [...]