Съдържание:

Представяне на I2C с Zio модули и Qwiic: 6 стъпки
Представяне на I2C с Zio модули и Qwiic: 6 стъпки

Видео: Представяне на I2C с Zio модули и Qwiic: 6 стъпки

Видео: Представяне на I2C с Zio модули и Qwiic: 6 стъпки
Видео: LDmicro 7: Простая логика охранной сигнализации (программирование лестничной схемы ПЛК микроконтроллера с помощью LDmicro) 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 е най-широко използваната мулти-master шина, което означава, че различни чипове могат да бъдат свързани към една и съща шина. Използва се в много приложения между главно и подчинено устройство или множество главни и подчинени устройства. От микроконтролери, до смартфони, до индустриални приложения, особено за видео устройства като компютърни монитори. Тя може лесно да бъде внедрена в много електронни дизайни (а напоследък дори по -лесно с конектора Qwiic).

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

Едно от най -големите предимства на I²C пред другите комуникационни протоколи е, че той е двупроводен интерфейс, което означава, че се нуждае само от два сигнални проводника, SDA (Serial Data Line) и SCL (Serial Clock Line). Може да не е най -бързият протокол, но е добре известен като много гъвкав, позволяващ гъвкавост в напрежението на шината.

Друга съществена характеристика, която прави този автобус привлекателен, е общуването между господар и роб. Няколко устройства могат да бъдат свързани към една и съща шина и няма нужда да променяте окабеляването между устройствата, тъй като всяко устройство има уникален адрес (капитанът избира устройството за комуникация).

Стъпка 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 дисплей

  • Номер на част: SSD1306
  • Адрес: 0x3C
  • Връзка към листа с данни

За да намерите уникалния адрес за подчинените устройства, отворете предоставения лист с данни. За сензора за разстояние адресът е предоставен в секцията Module Interface. Всеки сензор или компонент има различен лист с предоставена различна информация. Понякога може да бъде предизвикателство да го намерите в лист с данни от 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.

В setup () предаването започва и се показва текст за функционалността на сензора за разстояние.

Цикълът () измерва разстоянието и OLED го отпечатва.

Проверете примерния изходен код на връзката на github.

Използването на двете пробивни дъски е доста лесно във всички смисли. От хардуерна страна конекторът Qwiic прави настройката на хардуера по -бърза и много по -малко объркана, отколкото да имате макет и кабели за джъмпер. А за фърмуера, използвайки съответните библиотеки за I2C комуникация, сензорът и дисплеят правят кода много по -прост.

Стъпка 4: Каква е максималната дължина на кабела?

Максималната дължина зависи от издърпващите резистори, използвани за SDA и SCL, и от капацитета на кабела. Резисторите също определят скоростта на шината, колкото по -ниска е скоростта на шината, толкова по -дълга е границата на кабела. Капацитетът на кабела ограничава броя на устройствата в шината, както и дължината на кабела. Типичните приложения ограничават дължината на проводника до 2,5-3,5 м (9-12 фута), но има разлики в зависимост от използвания кабел. За справка, максималната дължина на I2C приложения, използващи екранирани кабели с усукана двойка AWG, е около 1 m (3 фута) при 100 kbaund, 10 m (30ft) при 10kbaud.

Има някои сайтове като 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 kΩ.

Ако прекратяването е пропуснато, изобщо няма да има комуникация в шината- капитанът няма да може да генерира условието за стартиране, така че съобщението няма да бъде предадено на подчинените.

За допълнителна информация и възможности на Zio проверете най -новите продукти на Zio. Целта на тази статия е да обясни основите на I²C комуникацията и как работи тя с конектора Zio и Qwiic. Очаквайте още актуализации.

Препоръчано: