I2C (Inter-integrated-circuit)
I2C (Inter-Integrated Circuit) — это последовательный интерфейс, который позволяет обмениваться данными между различными устройствами, используя всего две линии — линию передачи данных (SDA) и линию тактирования (SCL). I2C является одним из наиболее распространенных интерфейсов, используемых для связи между микроконтроллерами, датчиками, актуаторами и другими периферийными устройствами.
I2C (Inter-integrated-circuit) – это последовательный протокол связи, подобный UART. Однако он используется не для связи с ПК, а вместо этого с модулями и датчиками. Это простая двунаправленная двухпроводная синхронная последовательная шина, и для передачи информации между устройствами, подключенными к шине, требуются только два провода.
Основные характеристики I2C:
- I2C использует две основные линии — SDA и SCL — для передачи данных и тактирования, соответственно. Это позволяет подключать несколько устройств на одной шине.
- Адресация: Каждое устройство, подключенное к шине I2C, имеет уникальный адрес. Это позволяет микроконтроллеру выбирать конкретное устройство для чтения или записи данных.
- Мастер-слейв архитектура: В I2C работает по принципу «мастер-слейв», где микроконтроллер, контролирующий шину I2C, выступает в роли мастера, а подключенные устройства — в роли слейвов. Мастер инициирует обмен данными, а слейвы отвечают на запросы мастера.
- Коммуникация с полудуплексной передачей: I2C поддерживает двунаправленную передачу данных, но только в одно время. Это означает, что в любой момент мастер или слейв могут быть либо отправителями, либо получателями данных.
- Низкое энергопотребление: I2C разработан с учетом низкого энергопотребления, что делает его идеальным для использования в мобильных устройствах и других приложениях с ограниченным энергопотреблением.
I2C находит применение во многих областях, включая сенсоры, дисплеи, EEPROM-память, аудио-кодеки, акселерометры, гироскопы и многое другое. Настройка и использование I2C включает отправку и получение данных, использование правильной адресации устройств, установку обратной связи и контрольных сигналов, таких как подтверждение получения данных и генерация прерываний.
Важно отметить, что при работе с I2C необходимо обратить внимание на правильную обработку ошибок, таких как потеря сигнала, и правильную стратегию тайминга для обмена данными.
I2C полезна для проектов, требующих совместной работы многих различных частей (например, датчиков, контактов, расширений и драйверов), поскольку они могут подключать до 128 устройств к материнской плате, сохраняя четкий путь связи! Это потому, что I2C использует систему адреса и общую шину, благодаря этому много разных устройств можно подключить с помощью тех же проводов, и все данные передаются по одному проводу и имеют минимальное количество контактов.
Однако компромисс для этого упрощенного подключения заключается в том, что он медленнее SPI. Скорость I2C также зависит от скорости передачи данных, качества провода и наружного шума. Протокол I2C также используется в качестве двухпроводного интерфейса для подключения низкоскоростных устройств, таких как микроконтроллеры, EEPROM, аналого-цифровые и цифро-аналоговые преобразователи, интерфейсы ввода-вывода и другие подобные периферийные устройства во встроенных системах.
Как I2C работает?
Он имеет 2 линии, которые представляют собой SCL (последовательная линия синхронизации) и SDA (последовательная линия приема данных).
CL – линия тактового сигнала для синхронизации передачи. SDA – это линия данных, через которую отправляются или принимаются биты данных.
Главное устройство (Master) инициирует передачу данных по шине и генерирует тактовый сигнал для открытия передаваемого устройства, а любое адресованное устройство считается подчиненным (Slave).
Связь между главным и подчиненным устройствами, передающими и принимающими на шине, не является постоянной. Это зависит от направления передачи данных в данный момент. Если главный желает отправить данные подчиненному, он должен сначала обратиться к подчиненному, прежде чем отправлять какие-либо данные. После этого мастер прекратит передачу данных. Если ведущий желает получить данные от подчиненного, он должен снова обратиться к подчиненному. Затем хост получает данные, отправленные подчиненным, и, наконец, приемник прекращает процесс получения. Хост также отвечает за генерацию часов и прекращение передачи данных.
Также необходимо подключить источник питания через подтягивающий резистор. Когда шина простаивает, обе линии работают на высоком уровне мощности. Емкость линии будет влиять на скорость передачи шины. Поскольку текущая мощность на шине мала, когда емкость слишком велика, это может привести к ошибкам передачи. Таким образом, его загрузочная способность должна составлять 400 пФ, чтобы можно было оценить допустимую длину шины и количество подключенных устройств.
Что такое UART (Universal Asynchronous Receiver/Transmitter)?
Что такое SPI (Serial Peripheral Interface)?