Taula de continguts:

TCA9548A Mòdul multiplexor I2C: amb Arduino i NodeMCU: 11 passos
TCA9548A Mòdul multiplexor I2C: amb Arduino i NodeMCU: 11 passos

Vídeo: TCA9548A Mòdul multiplexor I2C: amb Arduino i NodeMCU: 11 passos

Vídeo: TCA9548A Mòdul multiplexor I2C: amb Arduino i NodeMCU: 11 passos
Vídeo: Arduino Micro I/O Expander - intro 2024, Juny
Anonim
Image
Image

Alguna vegada heu arribat a una situació en què hagueu de connectar dos, tres o més sensors I2C al vostre Arduino només per adonar-vos que els sensors tenen una adreça I2C fixa o la mateixa. A més, no podeu tenir dos dispositius amb la mateixa adreça als mateixos pins SDA / SCL.

Quines són les vostres opcions? Poseu-los tots al multiplexor I2C TCA9548A 1 a 8 per aconseguir que tots parlin entre ells al mateix autobús. El TCA9548A Breakout permet la comunicació amb diversos dispositius I2C que tenen la mateixa adreça, cosa que facilita la interfície amb ells.

Pas 1: requisit de maquinari

Temes tractats
Temes tractats

Per a aquest tutorial necessitem:

- Taula de pa

- Multiplexor TCA9548A I2C

- Arduino Uno / Nano tot el que sigui útil

- NodeMCU

Poques pantalles OLED I2C de 0,91 i 0,96

- Cables de pont, i

- Cable USB per carregar el codi

Pas 2: Temes tractats

Començarem la nostra discussió comprenent els conceptes bàsics de la tecnologia I2C

A continuació, coneixerem el multiplexor TCA9548A i com el mestre i l’esclau envien i reben dades mitjançant la tecnologia I2C. A continuació, comprovarem com podem programar i utilitzar el multiplexor al nostre projecte mitjançant Arduino i NodeMCU. A continuació, us mostraré una ràpida demostració amb 8 pantalles OLED I2C i, finalment, acabarem el tutorial discutint els avantatges i desavantatges del multiplexor TCA9548A

Pas 3: Conceptes bàsics del bus I2C

Conceptes bàsics del bus I2C
Conceptes bàsics del bus I2C
Conceptes bàsics del bus I2C
Conceptes bàsics del bus I2C
Conceptes bàsics del bus I2C
Conceptes bàsics del bus I2C

El circuit inter-integrat pronunciat I-squared-C (I²C) o I2C és una tecnologia de bus de dos fils (de fet, 4 cables perquè també necessiteu el VCC i la terra) que s’utilitza per a la comunicació entre múltiples processadors i sensors.

Els dos cables són:

* SDA - Dades de sèrie (línia de dades) i

* SCL: rellotge de sèrie (línia de rellotge)

Recordeu, aquestes dues línies són "síncrones" "bidireccionals" "de drenatge obert" i estan "estirades amb resistències".

La tecnologia de bus I2C va ser dissenyada originalment per Philips Semiconductors a principis dels anys 80 per permetre una comunicació fàcil entre components que resideixen a la mateixa placa de circuit.

Amb I2C, podeu connectar diversos esclaus a un sol mestre (com SPI) o podeu tenir diversos mestres que controlen esclaus individuals o múltiples. Tant els amos com els esclaus poden transmetre i rebre dades. Per tant, un dispositiu al bus I2C pot estar en un d’aquests quatre estats:

* Transmissió principal: el node principal envia dades a un esclau * Recepció principal: el node principal rep dades d’un esclau

* Transmissió esclau: el node esclau envia dades al mestre

* Recepció esclau: el node esclau està rebent dades del mestre

I2C és un "protocol de comunicació en sèrie" a curta distància ", de manera que les dades es transfereixen" a poc a poc "al llarg del cable únic o de la línia SDA. La sortida de bits se sincronitza amb el mostreig de bits mitjançant un senyal de rellotge "compartit" entre el mestre i l'esclau. El senyal del rellotge sempre el controla el mestre. El Mestre genera el rellotge i inicia la comunicació amb els esclaus.

Per tant, per resumir-ho>

Nombre de cables utilitzats: 2

Síncrona o asíncrona: síncrona

En sèrie o en paral·lel: en sèrie

Senyal de rellotge controlat per: Master Node

Voltatges utilitzats: +5 V o +3,3 V

Nombre màxim de màsters: il·limitat

Nombre màxim d'esclaus: 1008

Velocitat màxima: mode estàndard = 100 kbps

Mode ràpid = 400 kbps

Mode d'alta velocitat = 3,4 Mbps

Mode ultra ràpid = 5 Mbps

Pas 4: mòdul de multiplexor TCA9548A I2C

TCA9548A Mòdul multiplexor I2C
TCA9548A Mòdul multiplexor I2C
TCA9548A Mòdul multiplexor I2C
TCA9548A Mòdul multiplexor I2C
TCA9548A Mòdul multiplexor I2C
TCA9548A Mòdul multiplexor I2C

El TCA9548A és un multiplexor I2C de vuit canals (bidireccional) que permet controlar vuit dispositius I2C separats mitjançant un únic bus I2C amfitrió. Només cal connectar els sensors I2C als busos multiplexats SCn / SDn. Per exemple, si es necessiten vuit pantalles OLED idèntiques en una aplicació, es pot connectar una de cada pantalla a cadascun d'aquests canals: 0-7.

El multiplexor es connecta a les línies VIN, GND, SDA i SCL del microcontrolador. El tauler de ruptura accepta VIN d’1,65v a 5,5v. Tant les línies SDA com SCL d’entrada estan connectades a VCC mitjançant una resistència de tracció de 10K (La mida de la resistència de tracció està determinada per la quantitat de capacitat de les línies I2C). El multiplexor admet protocols I2C normals (100 kHz) i ràpids (400 kHz). Tots els pins d'E / S del TCA9548A són tolerants a 5 volts i també es poden utilitzar per traduir de tensions altes a baixes o baixes a altes.

És una bona idea posar resistències de tracció a tots els canals del TCA9548A, encara que les tensions siguin les mateixes. La raó d'això és a causa del commutador NMOS intern. No transmet molt bé l’alta tensió, en canvi transmet molt bé les baixes tensions. El TCA9548A també es pot utilitzar per a la traducció de tensió, permetent l'ús de diferents voltatges de bus a cada parell SCn / SDn de manera que les parts 1,8-V, 2,5-V o 3,3-V puguin comunicar-se amb parts de 5 V. Això s'aconsegueix mitjançant l'ús de resistències d'extracció externes per treure el bus fins a la tensió desitjada per al canal mestre i cada esclau.

Si el microcontrolador detecta un conflicte de bus o un altre funcionament incorrecte, es pot restablir el TCA9548A fent valer un mínim al PIN RESET.

Pas 5:

Imatge
Imatge
Imatge
Imatge
Imatge
Imatge

TCA9548 permet a un únic microcontrolador comunicar-se amb fins a '64 sensors 'tots amb la mateixa o diferent adreça I2C assignant un canal únic a cada sub-bus esclau del sensor.

Quan parlem d’enviar dades a través de 2 cables a diversos dispositius, necessitem una manera d’abordar-los. És el mateix que el carter que arriba per una sola carretera i que deixa els paquets de correu a diferents cases perquè tenen diferents adreces escrites.

Podríeu tenir com a màxim 8 d'aquests multiplexors connectats entre si en adreces 0x70-0x77 per controlar 64 de les mateixes parts adreçades d'I2C. En connectar els tres bits d’adreces A0, A1 i A2 a VIN podeu obtenir una combinació diferent de les adreces. Així és com sembla un byte d’adreça del TCA9548A. Els primers 7 bits es combinen per formar l'adreça esclava. L'últim bit de l'adreça esclava defineix l'operació (lectura o escriptura) a realitzar. Quan és alta (1), se selecciona una lectura, mentre que una baixa (0) selecciona una operació d'escriptura.

Pas 6: Com envia i rep les dades el mestre

Com envia i rep dades el mestre
Com envia i rep dades el mestre
Com envia i rep dades el mestre
Com envia i rep dades el mestre

El següent és el procediment general perquè un mestre accedeixi a un dispositiu esclau:

1. Si un mestre vol enviar dades a un esclau (ESCRIU):

- El transmissor mestre envia una condició START seguida de les adreces del receptor esclau i R / W establert a 0

- El transmissor principal envia les dades dels "registres de control de 8 bits" al receptor esclau quan l'esclau reconeix que està preparat

- El transmissor mestre finalitza la transferència amb una condició STOP

2. Si un mestre vol rebre o llegir dades d'un esclau (LLEGEIX):

- El receptor mestre envia una condició START seguida de les adreces del receptor esclau i R / W establert a 1

- El receptor mestre envia el registre sol·licitat per llegir-lo al transmissor esclau

- El receptor mestre rep dades de l’esclau transmissor

- Un cop rebuts tots els bytes, el mestre envia senyalització NACK a l'esclau per aturar les comunicacions i deixar anar el bus

- El receptor mestre finalitza la transferència amb una condició STOP

Un autobús es considera inactiu si les línies SDA i SCL són altes després d’una condició STOP.

Pas 7: Codi

Codi
Codi

Ara, Int code permet començar incloent la biblioteca "Wire" i definint l'adreça dels multiplexors.

#include "Wire.h"

#include "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Adreça dels codificadors

A continuació, hem de seleccionar el port al qual volem comunicar-nos i enviar-ne les dades mitjançant aquesta funció:

void selectI2CChannels (uint8_t i) {

si (i> 7) torna;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

A continuació, inicialitzarem la pantalla a la secció de configuració trucant a "u8g.begin ();" per a cada pantalla connectada al MUX "tcaselect (i);"

Un cop inicialitzats, podem fer el que vulguem només anomenant la funció "tcaselect (i);" on "i" és el valor del bus multiplexat i, a continuació, envia les dades i el rellotge en conseqüència.

Pas 8: escàner I2C

Escàner I2C
Escàner I2C

Per si de cas no esteu segur de l’adreça del dispositiu del vostre escut I2C, executeu el codi adjunt “Escàner I2C” per trobar l’adreça hexadecimal del vostre dispositiu. Quan es carrega a un Arduino, l'esbós escanejarà la xarxa I2C, mostrant les adreces que responen.

Pas 9: cablejat i demostració

Cablatge i demostració
Cablatge i demostració
Cablatge i demostració
Cablatge i demostració

Cablejat:

Comencem connectant el multiplexor a una placa NodeMCU. Connecta:

VIN a 5V (o 3,3V)

GND a terra

SDA a D2 i

Pins SCL a D1 respectivament

Per a una placa Arduino connecteu-vos:

VIN a 5V (o 3,3V)

GND a terra

SDA a A4 i

SCL a pins A5 respectivament

Un cop connectat el MUX al microcontrolador, només cal que connecteu els sensors als parells SCn / SDn.

Ara, fem una ullada a aquesta demostració ràpida en què he connectat 8 pantalles OLED al multiplexor TCA9548A. Com que aquestes pantalles utilitzen comunicació I2C, es comuniquen amb l'Arduino utilitzant només 2 pins.

Pas 10: avantatges i desavantatges

Avantatges i inconvenients
Avantatges i inconvenients

AVANTATGES

* La comunicació requereix només dues línies de bus (cables)

* Hi ha relacions mestre / esclau senzilles entre tots els components

* No hi ha requisits de velocitat de transmissió estrictes, com per exemple amb RS232, el mestre genera un rellotge de bus

* El maquinari és menys complicat que els UART

* Admet múltiples mestres i múltiples esclaus

* El bit ACK / NACK permet confirmar que cada fotograma es transfereix amb èxit

* I2C és un "autèntic bus multi-master" que proporciona arbitratge i detecció de col·lisions

* Tots els dispositius connectats al bus es poden programar amb una adreça única

* La majoria de dispositius I2C es poden comunicar a 100kHz o 400kHz

* I²C és adequat per a perifèrics on la simplicitat i el baix cost de fabricació són més importants que la velocitat

* Protocol ben conegut i àmpliament utilitzat

DESAVANTATGES

* Taxa de transferència de dades més lenta que SPI

* La mida del marc de dades es limita a 8 bits

* Cal implementar maquinari més complicat que la tecnologia SPI

Recomanat: