Kazalo:

TCA9548A I2C Multiplekser modul - z Arduinom in NodeMCU: 11 korakov
TCA9548A I2C Multiplekser modul - z Arduinom in NodeMCU: 11 korakov

Video: TCA9548A I2C Multiplekser modul - z Arduinom in NodeMCU: 11 korakov

Video: TCA9548A I2C Multiplekser modul - z Arduinom in NodeMCU: 11 korakov
Video: Разрешение конфликтов адресов I2C — мультиплексор I2C TCA9548A 2024, November
Anonim
Image
Image

Ste kdaj prišli v situacijo, ko ste morali na svoj Arduino priključiti dva, tri ali več senzorjev I2C, samo da bi ugotovili, da imajo tipala fiksni ali enak naslov I2C. Poleg tega ne morete imeti dveh naprav z istim naslovom na istih zatičih SDA/SCL!

Kakšne so torej vaše možnosti? Vse jih postavite na multipleksor TCA9548A 1 do 8 I2C, da se vsi pogovarjajo na istem vodilu! TCA9548A Breakout omogoča komunikacijo z več napravami I2C z istim naslovom, kar olajša vmesnik z njimi.

1. korak: Zahteve po strojni opremi

Zajete teme
Zajete teme

Za to vadnico potrebujemo:

- Ogledna plošča

- TCA9548A I2C Multiplekser

- Arduino Uno/Nano, kar je pri roki

- NodeMCU

- Nekaj zaslonov OLED 0,91 in 0,96 I2C

- Mostični kabli in

- USB kabel za nalaganje kode

Korak: Zajete teme

Razpravo bomo začeli z razumevanjem osnov tehnologije I2C

Nato se bomo naučili o multipleksatorju TCA9548A in o tem, kako glavni in podrejeni pošiljata in sprejemata podatke s tehnologijo I2C. Nato bomo preverili, kako lahko programiramo in uporabljamo multiplekser v našem projektu z uporabo Arduina in NodeMCU Nato vam bom pokazal hiter predstavitev z 8 zasloni I2C OLED, na koncu pa bomo vadnico zaključili z razpravo o prednostih in slabostih multipleksorja TCA9548A

3. korak: Osnove vodila I2C

Osnove vodila I2C
Osnove vodila I2C
Osnove vodila I2C
Osnove vodila I2C
Osnove vodila I2C
Osnove vodila I2C

Vmesno integrirano vezje z izrazitim I-kvadrat-C (I²C) ali I2C je tehnologija dvožičnega vodila (pravzaprav 4 žice, ker potrebujete tudi VCC in ozemljitev), ki se uporablja za komunikacijo med več procesorji in senzorji.

Dve žici sta:

* SDA - Serijski podatki (podatkovna vrstica) in

* SCL - Serijska ura (vrstica ure)

Ne pozabite, da sta ti dve liniji "sinhroni" "dvosmerni" "odprti odtok" in "vlečeni navzgor z upori".

Tehnologijo vodila I2C je prvotno oblikoval Philips Semiconductors v zgodnjih 80. letih, da bi omogočila enostavno komunikacijo med komponentami, ki so na istem vezju.

Z I2C lahko povežete več podrejenih naprav z enim samim nadrejenim (na primer SPI) ali pa imate več nadrejenih, ki nadzorujejo enega ali več podrejenih. Tako gospodarji kot podrejeni lahko prenašajo in sprejemajo podatke. Tako je lahko naprava na vodilu I2C v enem od teh štirih stanj:

* Glavni prenos - glavno vozlišče pošilja podatke podrejenemu* Glavno sprejemanje - glavno vozlišče sprejema podatke od podrejenega

* Slave prenos - pomožno vozlišče pošilja podatke glavnemu

* Slave sprejem - pomožno vozlišče sprejema podatke od glavnega

I2C je "protokol za serijsko komunikacijo" na kratke razdalje, zato se podatki prenašajo "bit-by-bit" po eni žici ali liniji SDA. Izhod bitov je sinhroniziran z vzorčenjem bitov z urnim signalom, ki se "deli" med glavnim in podrejenim. Signal ure vedno nadzira glavni. Poveljnik generira uro in začne komunikacijo s podrejenimi.

Torej, če povzamem>

Število uporabljenih žic: 2

Sinhrono ali asinhrono: Sinhrono

Serijski ali vzporedni: serijski

Signal ure nadzira: Glavno vozlišče

Uporabljene napetosti: +5 V ali +3.3 V

Največje število mojstrov: neomejeno

Največje število podrejenih: 1008

Največja hitrost: standardni način = 100kbps

Hitri način = 400kbps

Način visoke hitrosti = 3,4 Mbps

Ultra hiter način = 5 Mbps

Korak: TCA9548A I2C Multiplekser modul

TCA9548A I2C Multipleksni modul
TCA9548A I2C Multipleksni modul
TCA9548A I2C Multipleksni modul
TCA9548A I2C Multipleksni modul
TCA9548A I2C Multipleksni modul
TCA9548A I2C Multipleksni modul

TCA9548A je osemkanalni (dvosmerni) multipleksor I2C, ki omogoča upravljanje osmih ločenih naprav I2C z enim gostiteljskim vodilom I2C. Samo priključiti senzorje I2C na multipleksna vodila SCn / SDn. Če na primer v aplikaciji potrebujete osem enakih zaslonov OLED, lahko na vsakega od teh kanalov povežete enega od vsakega zaslona: 0-7.

Multiplekser se poveže z linijami VIN, GND, SDA in SCL mikrokrmilnika. Odklopna plošča sprejema VIN od 1.65v do 5.5v. Tako vhodni vodi SDA kot SCL sta povezani z VCC prek 10K vlečnega upora (velikost vlečnega upora je določena s količino kapacitivnosti na vodilih I2C). Multiplekser podpira tako običajne (100 kHz) kot hitre (400 kHz) protokole I2C. Vsi V/I zatiči TCA9548A so 5-voltni in jih je mogoče uporabiti tudi za prevajanje iz visokih v nizke ali nizke v visoke napetosti.

Priporočljivo je, da vlečne upore postavite na vse kanale TCA9548A, tudi če so napetosti enake. Razlog za to je notranje stikalo NMOS. Ne prenaša visoko napetosti, po drugi strani pa zelo dobro prenaša nizke napetosti. TCA9548A se lahko uporablja tudi za prevajanje napetosti, kar omogoča uporabo različnih napetosti vodila na vsakem paru SCn/SDn, tako da lahko deli 1,8-V, 2,5-V ali 3,3-V komunicirajo s 5-V deli. To dosežemo z uporabo zunanjih vlečnih uporov, da potegnemo vodilo do želene napetosti za glavni in vsak podrejeni kanal.

Če mikrokrmilnik zazna konflikt vodila ali drugo nepravilno delovanje, lahko TCA9548A ponastavite tako, da potrdite nizko vrednost na pin RESET.

5. korak:

Slika
Slika
Slika
Slika
Slika
Slika

TCA9548 omogoča, da en sam mikrokrmilnik komunicira z največ '64 senzorji', vse z istim ali drugačnim naslovom I2C, tako da vsakemu pod-vodilu senzorja dodeli edinstven kanal.

Ko govorimo o pošiljanju podatkov po dveh žicah na več naprav, potrebujemo način, kako jih nasloviti. Enako kot poštar, ki prihaja na eno samo cesto in odlaga pakete pošte v različne hiše, ker imajo na njih napisane različne naslove.

Za nadzor 64 istih naslovljenih delov I2C bi lahko imeli največ 8 teh multiplektorjev, povezanih skupaj na naslove 0x70-0x77. S priključitvijo treh naslovnih bitov A0, A1 in A2 na VIN lahko dobite različne kombinacije naslovov. Tako izgleda bajt naslova TCA9548A. Prvih 7 bitov skupaj tvori podrejeni naslov. Zadnji bit naslova pomožnika določa operacijo (branje ali pisanje), ki jo je treba izvesti. Ko je visoko (1), je izbrano branje, nizko (0) pa izbere operacijo pisanja.

6. korak: Kako poveljnik pošilja in sprejema podatke

Kako poveljnik pošilja in sprejema podatke
Kako poveljnik pošilja in sprejema podatke
Kako poveljnik pošilja in sprejema podatke
Kako poveljnik pošilja in sprejema podatke

Spodaj je splošen postopek za glavni dostop do podrejene naprave:

1. Če želi poveljnik poslati podatke podrejenemu (NAPIŠE):

-Glavni oddajnik pošlje pogoj START, ki mu sledijo naslovi pomožnega sprejemnika in R/W nastavljeno na 0

-Glavni oddajnik pošlje podatke v "8-bitnih upravljalnih registrih" podrejenemu sprejemniku, ko podrejeni potrdil, da je pripravljen

-Glavni oddajnik prekine prenos s pogojem STOP

2. Če hoče master sprejeti ali prebrati podatke od podrejenega (READS):

-Glavni sprejemnik pošlje pogoj START, ki mu sledijo naslovi podrejenega sprejemnika in R/W nastavljeno na 1

-Glavni sprejemnik pošlje zahtevani register v branje pomožnemu oddajniku

-Glavni sprejemnik sprejema podatke od podrejenega oddajnika

- Ko so vsi bajti prejeti, Master pošlje signalizacijo NACK podrejenemu, da ustavi komunikacijo in sprosti vodilo

- Glavni sprejemnik prekine prenos s pogojem STOP

Vodilo se šteje za nedejavno, če sta liniji SDA in SCL po stanju STOP visoki.

7. korak: Koda

Koda
Koda

Zdaj, koda omogoča, da začnemo z vključitvijo knjižnice "Wire" in z definiranjem naslova multiplekserjev.

#include "Wire.h"

#vključi "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Naslov kodirnikov

Nato moramo izbrati vrata, na katera želimo komunicirati, in s to funkcijo poslati podatke na njih:

void selectI2CChannels (uint8_t i) {

če (i> 7) vrne;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Nato bomo zaslon v razdelku za nastavitev inicializirali tako, da pokličemo "u8g.begin ();" za vsak zaslon, priključen na MUX "tcaselect (i);"

Ko smo enkrat inicializirani, lahko naredimo, kar hočemo, samo s klicem funkcije "tcaselect (i);" kjer je "i" vrednost multipleksiranega vodila in nato ustrezno pošlje podatke in uro.

8. korak: I2C skener

I2C skener
I2C skener

Če niste prepričani o naslovu naprave vašega I2C ščita, zaženite priloženo kodo 'I2C Scanner', da poiščete šestnajstiški naslov vaše naprave. Ko je naložena v Arduino, bo skica skenirala omrežje I2C in prikazala naslove, ki se odzivajo.

9. korak: Ožičenje in predstavitev

Ožičenje in demo
Ožičenje in demo
Ožičenje in demo
Ožičenje in demo

Ožičenje:

Začnimo s priključitvijo multiplekserja na ploščo NodeMCU. Poveži:

VIN do 5V (ali 3.3V)

GND na tla

SDA do D2 in

Zatiči SCL do D1

Za ploščo Arduino povežite:

VIN do 5V (ali 3.3V)

GND na tla

SDA do A4 in

Zatiči SCL na A5

Ko je MUX priključen na mikrokrmilnik, morate senzorje priključiti na pare SCn / SDn.

Zdaj pa si oglejmo to hitro predstavitev, v kateri sem na multiplekser TCA9548A priključil 8 zaslonov OLED. Ker ti zasloni uporabljajo komunikacijo I2C, komunicirajo z Arduinom z uporabo samo 2 zatičev.

10. korak: prednosti in slabosti

Prednosti in slabosti
Prednosti in slabosti

PREDNOSTI

* Za komunikacijo sta potrebni le dve vodili (žice)

* Med vsemi komponentami obstajajo preprosti odnosi master/slave

* Ni strogih zahtev po hitrosti prenosa podatkov, kot na primer pri RS232, glavni ustvari uro vodila

* Strojna oprema je manj zapletena kot UART

* Podpira več gospodarjev in več podrejenih

* ACK/NACK bit potrjuje, da je vsak okvir uspešno prenesen

* I2C je „pravo vodilo z več glavnimi vodili“, ki zagotavlja arbitražo in odkrivanje trkov

* Vsaka naprava, priključena na vodilo, je programsko naslovljiva z edinstvenim naslovom

* Večina naprav I2C lahko komunicira pri 100kHz ali 400kHz

* I²C je primeren za zunanje naprave, kjer sta preprostost in nizki proizvodni stroški pomembnejši od hitrosti

* Dobro znan in široko uporabljen protokol

PREDNOSTI

* Počasnejša hitrost prenosa podatkov kot SPI

* Velikost podatkovnega okvirja je omejena na 8 bitov

* Za izvedbo je potrebna bolj zapletena strojna oprema kot tehnologija SPI

Priporočena: