Tartalomjegyzék:

TCA9548A I2C multiplexer modul - Arduino és csomóponttal MCU: 11 lépés
TCA9548A I2C multiplexer modul - Arduino és csomóponttal MCU: 11 lépés

Videó: TCA9548A I2C multiplexer modul - Arduino és csomóponttal MCU: 11 lépés

Videó: TCA9548A I2C multiplexer modul - Arduino és csomóponttal MCU: 11 lépés
Videó: Solving I2C Address Conflicts - TCA9548A I2C Multiplexer 2024, November
Anonim
Image
Image

Voltál már olyan helyzetben, hogy két, három vagy több I2C érzékelőt kellett csatlakoztatnod az Arduino -hoz, hogy rájöjj, hogy az érzékelők fix vagy azonos I2C címmel rendelkeznek. Ezenkívül nem rendelkezhet két azonos címmel rendelkező eszközzel ugyanazon SDA/SCL csapokon!

Szóval, mik a lehetőségei? Tegye őket mind a TCA9548A 1-8-as I2C multiplexerre, hogy mindegyikük ugyanazon a buszon beszéljen egymással! A TCA9548A Breakout lehetővé teszi a kommunikációt több, ugyanazzal a címmel rendelkező I2C eszközzel, ami megkönnyíti az interfészt velük.

1. lépés: Hardverkövetelmények

Érintett témák
Érintett témák

Ehhez az oktatóanyaghoz szükségünk van:

- Kenyeretábla

- TCA9548A I2C multiplexer

- Arduino Uno/Nano, ami kéznél van

- NodeMCU

- Kevés 0,91 és 0,96 I2C OLED kijelző

- Jumper kábelek, és

- USB kábel a kód feltöltéséhez

2. lépés: Tárgyalt témák

A vitát azzal kezdjük, hogy megértjük az I2C technológia alapjait

Ezután megismerjük a TCA9548A multiplexert, és azt, hogy a mester és a szolga hogyan küld és fogad adatokat az I2C technológia segítségével. Ezután megvizsgáljuk, hogyan programozhatjuk és használhatjuk a multiplexert projektünkben az Arduino és a NodeMCU segítségével. bemutató 8 I2C OLED kijelző használatával, és végül befejezzük az oktatóanyagot a TCA9548A multiplexer előnyeinek és hátrányainak megvitatásával

3. lépés: Az I2C busz alapjai

Az I2C busz alapjai
Az I2C busz alapjai
Az I2C busz alapjai
Az I2C busz alapjai
Az I2C busz alapjai
Az I2C busz alapjai

Az integrált áramkör kiejtett I-négyzet-C (I²C) vagy I2C egy kétvezetékes busz technológia (valójában 4 vezeték, mert szüksége van a VCC-re és a földre is), amelyet több processzor és érzékelő közötti kommunikációra használnak.

A két vezeték:

* SDA - Soros adatok (adatvonal) és

* SCL - Soros óra (óra vonal)

Ne feledje, hogy mindkét vonal „szinkron” „kétirányú” „nyitott elvezetésű” és „ellenállással felhúzott”.

Az I2C busz technológiát eredetileg a Philips Semiconductors tervezte a 80 -as évek elején, hogy lehetővé tegye az egyszerű kommunikációt az ugyanazon áramköri lapon található alkatrészek között.

Az I2C segítségével több slave -t csatlakoztathat egyetlen mesterhez (például az SPI -hez), vagy több master is vezérelhet egyetlen vagy több slave -t. Mind a mesterek, mind a szolgák tudnak adatokat továbbítani és fogadni. Tehát az I2C buszon lévő eszköz a következő négy állapot egyikében lehet:

* Fő adás - a fő csomópont adatokat küld egy szolga szolgálatnak* Master fogadás - a fő csomópont adatokat fogad egy slave -től

* Slave továbbítás - a slave csomópont adatokat küld a masternek

* Slave fogadás - a slave csomópont adatokat fogad a mestertől

Az I2C egy „rövid távolságú” soros kommunikációs protokoll, így az adatok „bitről-bitre” kerülnek továbbításra az egyetlen vezetéken vagy az SDA vonalon. A bitek kimenetét a master és a szolga között „megosztott” órajel szinkronizálja a bitmintavétellel. Az órajelet mindig a mester vezérli. A Mester generálja az órát, és kezdeményezi a kommunikációt a rabszolgákkal.

Összefoglalva tehát>

Használt vezetékek száma: 2

Szinkron vagy aszinkron: Szinkron

Soros vagy párhuzamos: Soros

Az órajel vezérlése: Master Node

Használt feszültségek: +5 V vagy +3,3 V

A mesterek maximális száma: korlátlan

A rabszolgák maximális száma: 1008

Maximális sebesség: normál mód = 100 kbps

Gyors mód = 400 kbps

Nagy sebességű mód = 3,4 Mbps

Ultra gyors mód = 5 Mbps

4. lépés: TCA9548A I2C multiplexer modul

TCA9548A I2C multiplexer modul
TCA9548A I2C multiplexer modul
TCA9548A I2C multiplexer modul
TCA9548A I2C multiplexer modul
TCA9548A I2C multiplexer modul
TCA9548A I2C multiplexer modul

A TCA9548A egy nyolccsatornás (kétirányú) I2C multiplexer, amely lehetővé teszi nyolc különálló I2C eszköz vezérlését egyetlen host I2C busszal. Csak be kell kötni az I2C érzékelőket az SCn / SDn multiplex buszokhoz. Például, ha nyolc azonos OLED kijelzőre van szükség egy alkalmazásban, akkor mindegyik kijelzőhöz csatlakoztatható mindegyik csatorna: 0-7.

A Multiplexer csatlakozik a mikrovezérlő VIN, GND, SDA és SCL vonalaihoz. A kitörő tábla elfogadja a VIN -t 1,65 V -tól 5,5 V -ig. Mind a bemeneti SDA, mind az SCL vezeték 10K felhúzó ellenálláson keresztül csatlakozik a VCC-hez (A felhúzó ellenállás méretét az I2C vonalak kapacitása határozza meg). A multiplexer támogatja a normál (100 kHz) és a gyors (400 kHz) I2C protokollokat is. A TCA9548A összes I/O csapja 5 voltos tűrőképességű, és használható a magasról az alacsonyra, vagy az alacsonyról a magasra történő feszültségre.

Célszerű felhúzó ellenállásokat elhelyezni a TCA9548A összes csatornáján, még akkor is, ha a feszültség azonos. Ennek oka a belső NMOS kapcsoló. A magas feszültséget nem nagyon továbbítja, másrészt nagyon jól továbbítja az alacsony feszültséget. A TCA9548A feszültségátalakításra is használható, lehetővé téve a különböző buszfeszültségek használatát minden SCn/SDn páron úgy, hogy az 1,8 V, 2,5 V vagy 3,3 V alkatrészek kommunikálni tudjanak az 5 V-os alkatrészekkel. Ezt úgy érik el, hogy külső felhúzó ellenállásokkal húzzák fel a buszt a master és minden slave csatorna kívánt feszültségére.

Ha a mikrovezérlő buszütközést vagy más nem megfelelő működést észlel, a TCA9548A alaphelyzetbe állítható a RESET érintkező alacsony szintjének beállításával.

5. lépés:

Kép
Kép
Kép
Kép
Kép
Kép

A TCA9548 lehetővé teszi, hogy egyetlen mikrovezérlő kommunikáljon akár '64 érzékelővel ', amelyek mindegyike azonos vagy eltérő I2C címmel rendelkezik, és egyedi csatornát rendel hozzá minden érzékelő szolga al-buszhoz.

Amikor arról beszélünk, hogy két vezetéken keresztül több eszközre kell adatokat küldeni, akkor meg kell találnunk a módját, hogy hogyan kezeljük őket. Ugyanaz, mint a postás, aki egyetlen úton érkezik, és különböző házakba dobja a postacsomagokat, mert különböző címek vannak ráírva.

Legfeljebb 8 ilyen multiplexer csatlakoztatható 0x70-0x77 címekre annak érdekében, hogy 64 azonos I2C címzett részt vezéreljen. A három A0, A1 és A2 címbit VIN -hez történő csatlakoztatásával különböző címkombinációkat kaphat. Így néz ki a TCA9548A címbájta. Az első 7 bites összekapcsolva létrehozza a szolga címet. A slave cím utolsó bitje határozza meg a végrehajtandó műveletet (olvasás vagy írás). Ha magas (1), akkor olvasás van kiválasztva, míg alacsony (0) írási műveletet választ.

6. lépés: Hogyan küldi és fogadja a mester az adatokat

Hogyan küldi és fogadja a mester az adatokat
Hogyan küldi és fogadja a mester az adatokat
Hogyan küldi és fogadja a mester az adatokat
Hogyan küldi és fogadja a mester az adatokat

Az alábbiakban ismertetjük az általános eljárást, amellyel a master hozzáférhet egy slave eszközhöz:

1. Ha egy mester adatokat akar küldeni egy slave -nek (WRITES):

-A mester-adó START feltételt küld, majd a szolga-vevő címét és az R/W értékét 0-ra állítja

-A master-adó adatokat küld a „8 bites vezérlőregiszterekben” a slave-vevőnek, amikor a slave tudomásul veszi, hogy készen áll

-A fő-adó leállítja az átvitelt STOP feltétellel

2. Ha a mester adatokat akar fogadni vagy olvasni egy slave -től (READS):

-A Master-vevő egy START feltételt küld, majd a slave-vevő és az R/W címét 1-re állítja

-A Master-vevő elküldi a kért regisztert a slave-adónak

-A master-vevő adatokat fogad a slave-adótól

- Az összes bájt beérkezése után a Mester NACK jelzést küld a slave -nek a kommunikáció leállításához és a busz elengedéséhez

- A Master-vevő STOP feltétellel fejezi be az átvitelt

A busz tétlennek minősül, ha mind az SDA, mind az SCL vonalak magasak a STOP feltétel után.

7. lépés: Kód

Kód
Kód

Most, Int a kódot a "Wire" könyvtár bevonásával és a multiplexerek címének meghatározásával kezdhetjük.

#include "Wire.h"

#include "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Kódolók címe

Ezután ki kell választanunk a portot, amelyhez kommunikálni szeretnénk, és el kell küldenünk az adatokat ezen a funkción keresztül:

void selectI2CChannels (uint8_t i) {

ha (i> 7) visszatér;

Wire.beginTransmission (MUX_Address);

Drót.írás (1 << i);

Wire.endTransmission ();

}

Ezután inicializáljuk a kijelzőt a beállítási részben az "u8g.begin ();" a MUX "tcaselect (i);"

Az inicializálás után azt tehetünk, amit akarunk, csak a "tcaselect (i);" függvény meghívásával. ahol "i" a multiplexelt busz értéke, majd ennek megfelelően elküldi az adatokat és az órát.

8. lépés: I2C szkenner

I2C szkenner
I2C szkenner

Csak abban az esetben, ha nem biztos az I2C pajzs eszközcímében, futtassa a mellékelt „I2C Scanner” kódot, hogy megtalálja az eszköz hexadecimális címét. Arduino -ba betöltve a vázlat beolvassa az I2C hálózatot, és megjeleníti a válaszoló címeket.

9. lépés: Kábelezés és bemutató

Vezetékek és bemutató
Vezetékek és bemutató
Vezetékek és bemutató
Vezetékek és bemutató

Vezeték:

Kezdjük a multiplexer csatlakoztatásával a NodeMCU kártyához. Csatlakozás:

VIN - 5V (vagy 3.3V)

GND a földre

SDA - D2 és

SCL - D1 csapok

Arduino tábla csatlakoztatásához:

VIN - 5V (vagy 3.3V)

GND a földre

SDA -tól A4 -ig és

SCL - A5 csapok

Miután a MUX csatlakoztatva van a mikrovezérlőhöz, csak csatlakoztatnia kell az érzékelőket az SCn / SDn párokhoz.

Most nézzük meg ezt a gyors bemutatót, amelyben 8 OLED kijelzőt csatlakoztattam a TCA9548A multiplexerhez. Mivel ezek a kijelzők I2C kommunikációt használnak, mindössze 2 érintkezővel kommunikálnak az Arduino -val.

10. lépés: Előnyök és hátrányok

Előnyök és hátrányok
Előnyök és hátrányok

ELŐNYÖK

* A kommunikáció csak két buszvonalat (vezetéket) igényel

* Egy egyszerű master/slave kapcsolat létezik az összes komponens között

* Nincsenek szigorú adatátviteli követelmények, mint például az RS232 esetében, a master buszórát generál

* A hardver kevésbé bonyolult, mint az UART -ok

* Több mestert és több rabszolgát támogat

* Az ACK/NACK bit megerősíti, hogy minden képkocka sikeresen átvitt

* Az I2C egy "valódi, több mesterből álló busz", amely választottbírósági és ütközési érzékelést biztosít

* Minden, a buszhoz csatlakoztatott eszköz szoftver címezhető egyedi címmel

* A legtöbb I2C eszköz képes kommunikálni 100 kHz vagy 400 kHz frekvencián

* Az I²C olyan perifériákhoz alkalmas, ahol az egyszerűség és az alacsony gyártási költség fontosabb, mint a sebesség

* Jól ismert és széles körben használt protokoll

Hátrányok

* Lassabb adatátviteli sebesség, mint az SPI

* Az adatkeret mérete 8 bit

* Bonyolultabb hardver szükséges a megvalósításhoz, mint az SPI technológia

Ajánlott: