Taula de continguts:

Presentació d'I2C amb mòduls Zio i Qwiic: 6 passos
Presentació d'I2C amb mòduls Zio i Qwiic: 6 passos

Vídeo: Presentació d'I2C amb mòduls Zio i Qwiic: 6 passos

Vídeo: Presentació d'I2C amb mòduls Zio i Qwiic: 6 passos
Vídeo: Вещи, которые мистеру Уэлчу больше не разрешается делать в сборнике для чтения RPG № 1-2450 2024, Desembre
Anonim
Presentació d'I2C amb mòduls Zio i Qwiic
Presentació d'I2C amb mòduls Zio i Qwiic

Robin Sharma va dir: "Les petites millores diàries en el temps condueixen a resultats impressionants". És possible que estigueu pensant: "Aw, una altra publicació d'I2C?". Bé, segur que hi ha milers d’informació pel que fa a I2C. Però estigueu atents, no es tracta d’un article més d’I2C. Qwiic Connect System i els taulers perifèrics Zio són sens dubte canviadors de jocs I²C.

Introducció

Si esteu construint projectes electrònics i feu coses increïbles, és possible que us hagueu adonat que, a mesura que els vostres projectes augmenten, la taula de treball comença a semblar un pou de serps (una mica desordenat, oi?).

A més, si teniu diversos projectes en curs, dediqueu un munt de temps a canviar cables de projecte a projecte.

Som creadors, de manera que entenem la lluita. La nostra contribució més recent a la comunitat OHS és un sistema de prototipatge modular anomenat ZIO, que adopta el sistema de connexió Qwiic. Qwiic és una manera molt còmoda de comunicar una placa de circuit programable a sensors, actuadors i plaques de ruptura mitjançant I²C.

Pas 1: què és I²C i per què ens agrada

Què és I²C i per què ens agrada
Què és I²C i per què ens agrada

I²C és el bus multi-master més utilitzat, és a dir, que es poden connectar diversos xips al mateix bus. S'utilitza en moltes aplicacions entre un mestre i un esclau o diversos dispositius mestra i esclau. Des de microcontroladors, fins a telèfons intel·ligents, fins a aplicacions industrials, especialment per a dispositius de vídeo com a monitors d’ordinador. Es pot implementar fàcilment en molts dissenys electrònics (i recentment encara és més fàcil amb el connector Qwiic).

Si haguéssim de descriure I²C en dues paraules, probablement utilitzaríem senzillesa i flexibilitat.

Un dels majors avantatges d'I²C respecte a altres protocols de comunicació és que es tracta d'una interfície de dos cables, cosa que significa que només necessita dos cables de senyal, SDA (Serial Data Line) i SCL (Serial Clock Line). Pot ser que no sigui el protocol més ràpid, però és ben conegut per ser molt flexible, permetent la flexibilitat del voltatge del bus.

Una altra característica significativa que fa atractiu aquest autobús és la confraternitat entre amo i esclau. Es poden connectar diversos dispositius al mateix bus i no cal canviar el cablejat entre dispositius, ja que cada dispositiu té una adreça única (el mestre selecciona el dispositiu per comunicar-se).

Pas 2: fem una ullada més de prop

Fem una ullada més de prop
Fem una ullada més de prop
Fem una ullada més de prop
Fem una ullada més de prop
Fem una ullada més de prop
Fem una ullada més de prop
Fem una ullada més de prop
Fem una ullada més de prop

Llavors, com funciona I²C? Abans esmentàvem que una de les característiques més significatives és la tensió permesa, això és possible ja que I²C utilitza un col·lector obert (també conegut com a drenatge obert) per a les línies de comunicació SDA i SCL.

SCL és el senyal de rellotge, sincronitza la transferència de dades entre els dispositius del bus I²C i el genera el mestre. Mentre SDA transporta les dades per enviar o rebre dels sensors o altres dispositius connectats al bus.

La sortida al senyal està connectada a terra, el que significa que cada dispositiu s’imposa com a baix. Per recuperar el senyal a alt, ambdues línies estan connectades a una tensió d'alimentació positiva a través d'una resistència de tracció que s'ha de finalitzar.

Amb els mòduls ZIO us aconseguim cobrir, totes les nostres plaques de ruptura incorporen la resistència d’arrencada necessària.

I²C segueix un protocol de missatges per comunicar el mestre amb dispositius esclaus. Les dues línies (SCL i SDA) són comunes a tots els esclaus I²C, tots els esclaus del bus escolten el missatge.

El protocol de missatges segueix el format que es mostra a la imatge adjunta:

A primera vista pot semblar complicat, però tenim bones notícies. Quan s’utilitza Arduino IDE hi ha la biblioteca Wire.h, per simplificar tota la configuració del protocol de missatges I²C.

La condició inicial es genera quan la línia de dades (SDA) baixa mentre que la línia de rellotge (SCL) continua alta. En configurar un projecte a la interfície Arduino, no ens hem de preocupar de generar la condició d’inici, s’iniciarà amb una funció específica (Wire.beginTransmission (slaveAddress)).

A més, aquesta funció també inicia la transmissió amb l'adreça esclava específica. Per triar l'esclau a comunicar-se al bus compartit, el mestre passa a transmetre l'adreça a l'esclau per comunicar-se. Després de configurar l'adreça per comunicar-se amb l'esclau corresponent, el missatge segueix amb un bit de lectura o d'escriptura, en funció del mode seleccionat.

El salve proporciona una resposta amb una confirmació (ACK o NACK), i altres dispositius esclaus del bus descompten la resta de dades fins que el missatge es completa i el bus és gratuït. Després de l'ACK, una seqüència d'un registre d'adreçament intern dels esclaus continua la transmissió.

Quan s’envien les dades, el missatge de transferència finalitza amb una condició d’aturada. Per finalitzar la transmissió, la línia de dades canvia a alta i la línia de rellotge continua sent alta.

Pas 3: I²C i ZIO

I²C i ZIO
I²C i ZIO

Vam descobrir que seria millor planificar tota la informació anterior en una conversa entre un mestre (també conegut com Zuino, el nostre micro) i esclaus (també coneguts com a taulers ZIO).

En aquest exemple bàsic, estem utilitzant el sensor de distància ZIO TOF i la pantalla ZIO OLED. El TOF proporciona informació sobre la distància mentre el ZIO Oled mostra les dades. Els components i dispositius utilitzats:

  • ZUINO M UNO - el Mestre
  • Pantalla OLED ZIO - Slave_01
  • Sensor de distància ZIO TOF - Slave_02
  • Qwiic Cable: fàcil connexió per a dispositius I²C

A continuació, us expliquem el fàcil que és connectar les taules entre si mitjançant Qwiic, sense necessitat de taulers de suport, cables addicionals incrustats o pins ZUINO. La línia de dades Clock and Data del ZUINO es connecta automàticament al sensor de distància i a l’OLED mitjançant el connector Qwiic. Els altres dos cables són el 3V3 i el GND.

En primer lloc, fem una ullada a la informació necessària, per comunicar el mestre amb els esclaus, necessitaríem conèixer les adreces úniques.

Dispositiu: sensor de distància ZIO

  • Número de peça: RFD77402
  • Adreça I2C: 0x4C
  • Enllaç de full de dades

Dispositiu: pantalla OIO ZIO

  • Número de peça: SSD1306
  • Adreça: 0x3C
  • Enllaç de full de dades

Per trobar l'adreça única dels dispositius esclaus obriu el full de dades proporcionat. Per al sensor de distància, l'adreça es proporciona a la secció de la interfície del mòdul. Cada sensor o component té un full de dades diferent amb informació diferent. De vegades pot ser difícil trobar-lo en un full de dades de 30 pàgines (suggeriment: obriu l'eina de cerca al visualitzador de PDF i escriviu "adreça" o "identificador de dispositiu" per fer una cerca ràpida).

Ara que es coneix l'adreça única de cada dispositiu, per llegir / escriure dades, s'ha d'identificar l'adreça del registre intern (també a partir del full de dades). Si feu una ullada al full de dades del sensor de distància ZIO, l’adreça per obtenir la distància correspon a 0x7FF.

En aquest cas concret, realment no necessitem aquesta informació per utilitzar el sensor, ja que la biblioteca ja ho fa.

Pas següent, mans al codi. ZUINO M UNO és compatible amb Arduino IDE, cosa que facilita molt la configuració. Les biblioteques necessàries per a aquest projecte són les següents:

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

Wire.h és una biblioteca arduino, les dues biblioteques Adafruit s’utilitzen per a l’OLED i les darreres s’utilitzen per al sensor de distància. Consulteu aquest tutorial sobre com enllaçar biblioteques *.zip a Arduino IDE.

Mirant el codi, primer cal declarar les biblioteques i l’adreça de l’OLED.

A la configuració () comença la transmissió i es mostra el text per a la funcionalitat del sensor de distància.

El bucle () pren mesures de la distància i l’OLED l’imprimeix.

Consulteu l'exemple de codi font a l'enllaç github.

L’ús d’ambdues taules de sortida és bastant fàcil en tots els sentits. Pel que fa al maquinari, el connector Qwiic fa que la configuració del maquinari sigui més ràpida i molt menys desordenada que tenir una placa de connexió i cables de pont. I per al microprogramari, mitjançant les biblioteques corresponents per a la comunicació I2C, el sensor i la pantalla fan que el codi sigui molt més senzill.

Pas 4: Quina és la longitud màxima del cable?

La longitud màxima depèn de les resistències de tracció que s'utilitzen per SDA i SCL i de la capacitat del cable. Les resistències també determinen la velocitat del bus, com més baixa sigui la velocitat del bus, més llarg serà el límit de cable. La capacitat del cable limita el nombre de dispositius al bus, així com la longitud del cable. Les aplicacions típiques limiten la longitud del fil a 2,5-3,5 m (9-12 peus), però hi ha variacions en funció del cable utilitzat. Com a referència, la longitud màxima en aplicacions I2C que utilitzen cables blindats de 22 AWG de parell trenat és d'aproximadament 1 m (3 peus) a 100 kbaund, 10 m (30 peus) a 10 kbaud.

Hi ha alguns llocs com mogami o WolframAlpha que permeten estimar la longitud del cable.

Pas 5: Com connectar diversos dispositius al mateix bus?

Com connectar diversos dispositius al mateix bus?
Com connectar diversos dispositius al mateix bus?
Com connectar diversos dispositius al mateix bus?
Com connectar diversos dispositius al mateix bus?

I2C és un bus sèrie, on tots els dispositius estan connectats a un bus compartit. Amb el connector Qwiic, es poden connectar les diferents plaques de separació una després de l’altra mitjançant el connector Qwiic. Cada placa té com a mínim 2 connectors Qwiic.

Hem creat diferents taulers per resoldre algunes de les limitacions de Qwiic i I2C. La placa adaptadora Zio Qwiic s’utilitza per connectar-se a través de dispositius Qwiic sense connector Qwiic, mitjançant un cable de capçalera masculí Qwiic a panell. Aquest senzill truc crea possibilitats il·limitades.

Per connectar diferents dispositius en una xarxa de bus o arbre, hem creat el Zio Qwiic Hub.

Per últim, però no menys important, el Zio Qwiic MUX permet la connexió de dos o més dispositius amb la mateixa adreça.

Pas 6: Què és la terminació I2C?

Cal finalitzar I2C, de manera que la línia és gratuïta per afegir altres dispositius. Pot resultar una mica confús, ja que el terme de terminació s’utilitza habitualment per descriure les resistències de tracció del bus (per proporcionar un estat per defecte, en aquest cas per subministrar corrent al circuit). Per a les plaques Zuino, el valor de la resistència és de 4,7 kΩ.

Si s’omet la terminació, no hi haurà cap comunicació al bus; el mestre no seria capaç de generar la condició d’inici, de manera que el missatge no es transmetrà als esclaus.

Per obtenir més informació i funcions de Zio, consulteu els productes Zio més recents. L'objectiu d'aquest article és explicar els conceptes bàsics de la comunicació I²C i com funciona amb el connector Zio i Qwiic. Estigueu atents a més actualitzacions.

Recomanat: