Оглавление:

Представляем I2C с модулями Zio и Qwiic: 6 шагов
Представляем I2C с модулями Zio и Qwiic: 6 шагов

Видео: Представляем I2C с модулями Zio и Qwiic: 6 шагов

Видео: Представляем I2C с модулями Zio и Qwiic: 6 шагов
Видео: Подключаем текстовый LCD 16x2 к arduino по I2C 2024, Июль
Anonim
Представляем I2C с модулями Zio и Qwiic
Представляем I2C с модулями Zio и Qwiic

Робин Шарма сказал: «Небольшие ежедневные улучшения со временем приводят к потрясающим результатам». Вы можете подумать: «Ой, еще один пост I2C?». Что ж, когда дело доходит до I2C, есть, безусловно, тысячи информации. Но следите за обновлениями, это не просто очередная статья о I2C. Система Qwiic Connect и коммутационные платы для периферийных устройств Zio определенно меняют правила игры с I²C!

Вступление

Если вы создаете электронные проекты и делаете потрясающие вещи, вы, возможно, осознавали, что по мере того, как ваши проекты становятся больше, ваш макет начинает выглядеть как змеиная яма (немного беспорядочно, правда?).

Кроме того, если у вас выполняется несколько проектов, вы тратите кучу времени на переключение проводов от проекта к проекту.

Мы творцы, поэтому понимаем борьбу. Наш последний вклад в сообщество OHS - это модульная система прототипирования под названием ZIO, использующая систему подключения Qwiic. Qwiic - очень удобный способ связи программируемой печатной платы с датчиками, исполнительными механизмами и коммутационными платами через I²C.

Шаг 1. Что такое I²C и почему он нам нравится

Что такое I²C и почему он нам нравится
Что такое I²C и почему он нам нравится

I²C - это наиболее широко используемая шина с несколькими ведущими устройствами, что означает, что к одной шине можно подключать различные микросхемы. Он используется во многих приложениях между ведущим и ведомым устройствами или несколькими ведущими и ведомыми устройствами. От микроконтроллеров до смартфонов и промышленных приложений, особенно для видеоустройств, таких как компьютерные мониторы. Это может быть легко реализовано во многих электронных конструкциях (а в последнее время стало еще проще с разъемом Qwiic).

Если бы нам пришлось описать I²C двумя словами, мы, вероятно, использовали бы простоту и гибкость.

Одно из самых больших преимуществ I²C по сравнению с другими протоколами связи заключается в том, что это двухпроводной интерфейс, что означает, что ему нужны только два сигнальных провода, SDA (последовательная линия данных) и SCL (последовательная линия синхронизации). Возможно, это не самый быстрый протокол, но он хорошо известен своей гибкостью, позволяющей изменять напряжение на шине.

Еще одна важная характеристика, которая делает этот автобус привлекательным, - это общение между хозяином и рабом. К одной шине можно подключить несколько устройств, и нет необходимости изменять проводку между устройствами, поскольку каждое устройство имеет уникальный адрес (мастер выбирает устройство для связи).

Шаг 2. Давайте внимательно рассмотрим

Давайте посмотрим внимательнее
Давайте посмотрим внимательнее
Давайте посмотрим внимательнее
Давайте посмотрим внимательнее
Давайте посмотрим внимательнее
Давайте посмотрим внимательнее
Давайте посмотрим внимательнее
Давайте посмотрим внимательнее

Итак, как работает I²C? Ранее мы упоминали, что одной из наиболее важных характеристик является допуск по напряжению, это возможно, поскольку I²C использует открытый коллектор (также известный как открытый сток) для линий связи SDA и SCL.

SCL - это тактовый сигнал, который синхронизирует передачу данных между устройствами на шине I²C и генерируется мастером. В то время как SDA передает данные для отправки или получения от датчиков или других устройств, подключенных к шине.

Выход для сигнала соединен с землей, что означает, что каждому устройству наложен низкий уровень. Для восстановления высокого уровня сигнала обе линии подключаются к положительному напряжению питания через нагрузочный резистор.

Мы позаботились о модулях ZIO, все наши коммутационные платы включают в себя необходимый подтягивающий резистор.

I²C следует протоколу сообщений для связи ведущего устройства с ведомыми устройствами. Две линии (SCL и SDA) являются общими для всех ведомых устройств I²C, все ведомые устройства на шине прослушивают сообщение.

Протокол сообщений соответствует формату, показанному на прикрепленном изображении:

На первый взгляд это может показаться сложным, но у нас есть хорошие новости. При использовании Arduino IDE существует библиотека Wire.h, которая упрощает настройку протокола сообщений I²C.

Условие запуска генерируется, когда линия данных (SDA) падает на низкий уровень, в то время как линия синхронизации (SCL) остается на высоком уровне. При настройке проекта в интерфейсе Arduino нам не нужно беспокоиться о генерации условия запуска, оно будет инициировано специальной функцией (Wire.beginTransmission (slaveAddress)).

Кроме того, эта функция также инициирует передачу с определенным адресом ведомого устройства. Чтобы выбрать ведомое устройство для связи по общей шине, ведущее устройство передает адрес ведомому устройству для связи. После того, как адрес установлен для связи с соответствующим ведомым устройством, за ним следует сообщение с битом чтения или записи, в зависимости от выбранного режима.

Мазь дает ответ с подтверждением (ACK или NACK), а другие подчиненные устройства на шине скидывают остальные данные до тех пор, пока сообщение не будет завершено и шина не станет свободной. После ACK последовательность внутреннего адресного регистра ведомых устройств продолжает передачу.

Когда данные отправляются, сообщение о передаче заканчивается условием остановки. Чтобы завершить передачу, линия данных переходит на высокий уровень, а линия синхронизации остается на высоком уровне.

Шаг 3. I²C и ZIO

I²C и ZIO
I²C и ZIO

Мы решили, что мне лучше всего изложить всю информацию, указанную выше, в разговоре между мастером (он же Zuino, наш микро) и подчиненными (он же коммутационные платы ZIO).

В этом базовом примере мы используем датчик расстояния ZIO TOF и дисплей ZIO OLED. TOF дает информацию о расстоянии, в то время как ZIO Oled отображает данные. Используемые компоненты и устройства:

  • ZUINO M UNO - Мастер
  • ZIO OLED-дисплей - Slave_01
  • Датчик расстояния ZIO TOF - Slave_02
  • Кабель Qwiic - Простое подключение для устройств I²C

Вот как легко соединить платы друг с другом с помощью Qwiic, не требуется макетная плата, дополнительные кабели или контакты ZUINO. Последовательная линия синхронизации и данных ZUINO автоматически подключается к датчику расстояния и OLED с помощью разъема Qwiic. Два других кабеля - 3V3 и GND.

Прежде всего, давайте посмотрим на информацию, необходимую для связи ведущего устройства с ведомыми устройствами, нам необходимо знать уникальные адреса.

Устройство: датчик расстояния ZIO

  • Номер детали: RFD77402
  • Адрес I2C: 0x4C
  • Ссылка на техническое описание

Устройство: ZIO OLED Display

  • Номер детали: SSD1306
  • Адрес: 0x3C
  • Ссылка на техническое описание

Чтобы найти уникальный адрес для ведомых устройств, откройте предоставленную таблицу. Для датчика расстояния адрес указан в разделе «Интерфейс модуля». У каждого датчика или компонента есть своя таблица с разной информацией. Иногда бывает сложно найти его в 30-страничном техническом описании (подсказка: откройте инструмент поиска в средстве просмотра PDF и введите «адрес» или «идентификатор устройства» для быстрого поиска).

Теперь, когда известен уникальный адрес каждого устройства, для чтения / записи данных необходимо определить адрес внутреннего регистра (также из таблицы). Если посмотреть на даташит датчика расстояния ZIO, то адрес для получения расстояния соответствует 0x7FF.

В данном конкретном случае нам действительно не нужна эта информация для использования датчика, поскольку библиотека уже это делает.

Следующий шаг - передаем код. ZUINO M UNO совместим с Arduino IDE, что значительно упрощает настройку. Для этого проекта необходимы следующие библиотеки:

  • Wire.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SparkFun_RFD77402_Arduino_Library.h

Wire.h - это библиотека Arduino, две библиотеки Adafruit используются для OLED, а последняя используется для датчика расстояния. Посмотрите это руководство о том, как связать библиотеки *.zip с Arduino IDE.

Глядя на код, сначала нужно объявить библиотеки, а также адрес OLED.

В настройке () начинается передача, и отображается текст для функций датчика расстояния.

Петля () измеряет расстояние, а OLED его распечатывает.

Проверьте исходный код примера по ссылке на github.

Использовать обе коммутационные доски довольно просто во всех смыслах. Что касается аппаратного обеспечения, то разъем Qwiic делает установку оборудования более быстрой и менее беспорядочной, чем наличие макета и перемычек. Что касается прошивки, то использование соответствующих библиотек для связи I2C, датчика и дисплея значительно упрощает код.

Шаг 4. Какова максимальная длина кабеля?

Максимальная длина зависит от подтягивающих резисторов, используемых для SDA и SCL, и емкости кабеля. Резисторы также определяют скорость шины, чем ниже скорость шины, тем длиннее ограничение кабеля. Емкость кабеля ограничивает количество устройств на шине, а также длину кабеля. Типичные приложения ограничивают длину провода до 2,5–3,5 м (9–12 футов), но есть различия в зависимости от используемого кабеля. Для справки, максимальная длина в приложениях I2C с использованием экранированных кабелей витой пары 22 AWG составляет около 1 м (3 фута) при 100 кбод, 10 м (30 футов) при 10 кбод.

Есть такие сайты, как mogami или WolframAlpha, которые позволяют оценить длину кабеля.

Шаг 5: Как подключить несколько устройств к одной шине?

Как подключить несколько устройств к одной шине?
Как подключить несколько устройств к одной шине?
Как подключить несколько устройств к одной шине?
Как подключить несколько устройств к одной шине?

I2C - это последовательная шина, где все устройства подключены к общей шине. С помощью разъема Qwiic различные коммутационные платы можно подключать друг к другу с помощью разъема Qwiic. На каждой плате есть как минимум 2 разъема Qwiic.

Мы создали разные платы, чтобы устранить некоторые ограничения Qwiic и I2C. Плата адаптера Zio Qwiic используется для подключения через устройства Qwiic без разъема Qwiic с использованием кабеля Qwiic для подключения к макетной плате. Этот простой трюк открывает неограниченные возможности.

Для подключения различных устройств к шине или древовидной сети мы придумали Zio Qwiic Hub.

И последнее, но не менее важное: Zio Qwiic MUX позволяет подключать два или более устройств по одному и тому же адресу.

Шаг 6: Что такое прерывание I2C?

I2C требуется для завершения, поэтому линия свободна для добавления других устройств. Это может немного сбивать с толку, поскольку термин оконечной нагрузки обычно используется для описания подтягивающих резисторов шины (для обеспечения состояния по умолчанию, в данном случае для подачи тока в схему). Для плат Zuino сопротивление резистора составляет 4,7 кОм.

Если завершение не указано, на шине не будет никакой связи - ведущее устройство не сможет сгенерировать условие запуска, поэтому сообщение не будет передано ведомым.

Для получения дополнительной информации и возможностей Zio ознакомьтесь с новейшими продуктами Zio. Цель этой статьи - объяснить основы связи I²C и то, как она работает с соединителями Zio и Qwiic. Следите за обновлениями.

Рекомендуемые: