Sisällysluettelo:

TCA9548A I2C -multiplekserimoduuli - Arduinolla ja solmulla MCU: 11 vaihetta
TCA9548A I2C -multiplekserimoduuli - Arduinolla ja solmulla MCU: 11 vaihetta

Video: TCA9548A I2C -multiplekserimoduuli - Arduinolla ja solmulla MCU: 11 vaihetta

Video: TCA9548A I2C -multiplekserimoduuli - Arduinolla ja solmulla MCU: 11 vaihetta
Video: I2C мультиплексор TCA9548A или как подключить несколько часов к Arduino? 2024, Kesäkuu
Anonim
Image
Image

Oletko joutunut tilanteeseen, jossa jouduit kytkemään kaksi, kolme tai useampia I2C -antureita Arduinoosi vain ymmärtääksesi, että antureilla on kiinteä tai sama I2C -osoite. Lisäksi samassa SDA/SCL -nastassa ei voi olla kahta laitetta, joilla on sama osoite!

Mitä vaihtoehtoja sinulla on? Laita ne kaikki TCA9548A 1-8-I2C-multiplekseriin saadaksesi kaikki puhumaan keskenään samalla bussilla! TCA9548A Breakout mahdollistaa kommunikoinnin useiden I2C -laitteiden kanssa, joilla on sama osoite, mikä helpottaa niiden käyttöä.

Vaihe 1: Laitteistovaatimus

Käsitellyt aiheet
Käsitellyt aiheet

Tätä opetusohjelmaa varten tarvitsemme:

- Leipälauta

- TCA9548A I2C -multiplekseri

- Arduino Uno/Nano mikä tahansa kätevä

- NodeMCU

- Muutama 0.91 & 0.96 I2C OLED -näyttö

- Kaapelit ja

- USB -kaapeli koodin lataamiseen

Vaihe 2: Katetut aiheet

Aloitamme keskustelumme ymmärtämällä I2C -tekniikan perusteet

Sitten opimme TCA9548A -multiplekseristä ja siitä, kuinka isäntä ja orja lähettää ja vastaanottaa tietoja I2C -tekniikan avulla. Sitten tarkastelemme, kuinka voimme ohjelmoida ja käyttää multiplekseria projektissamme Arduinon ja NodeMCU: n avulla Seuraavaksi näytän sinulle nopeasti demo 8 I2C OLED -näytön avulla ja lopuksi opetusohjelma päättyy keskustelemalla TCA9548A -multiplekserin eduista ja haitoista

Vaihe 3: I2C -väylän perusteet

I2C -väylän perusteet
I2C -väylän perusteet
I2C -väylän perusteet
I2C -väylän perusteet
I2C -väylän perusteet
I2C -väylän perusteet

Integroitu piiri, lausuttu I-neliö-C (I²C) tai I2C on kaksijohtiminen väylätekniikka (itse asiassa 4 johtoa, koska tarvitset myös VCC: n ja maadoituksen), jota käytetään useiden prosessorien ja antureiden välisessä viestinnässä.

Kaksi johtoa ovat:

* SDA - Sarjatiedot (tietolinja) ja

* SCL - sarjakello (kellolinja)

Muista, että molemmat linjat ovat "synkronisia" "kaksisuuntaisia" "avoimia tyhjennyksiä" ja "vedettyjä ylös vastuksilla".

I2C -väyläteknologian suunnitteli alun perin Philips Semiconductors 80 -luvun alussa, jotta se voisi helposti kommunikoida samalla piirilevyllä olevien komponenttien välillä.

I2C: n avulla voit liittää useita orjia yhteen isäntään (kuten SPI) tai useat isännät ohjaavat yhtä tai useita orjia. Sekä isännät että orjat voivat lähettää ja vastaanottaa tietoja. I2C -väylän laite voi siis olla yhdessä seuraavista neljästä tilasta:

* Päälähetys - isäntäsolmu lähettää dataa orjalle* Päävastaanotto - isäntäsolmu vastaanottaa tietoja orjalta

* Orjalähetys - orjasolmu lähettää dataa isännälle

* Orjavastaanotto - orjasolmu vastaanottaa dataa isännältä

I2C on "lyhyen matkan" sarjaliikenneprotokolla, joten tiedot siirretään "bitti kerrallaan" yksittäistä johtoa tai SDA-linjaa pitkin. Bittien ulostulo synkronoidaan bittinäytteenottoon kellosignaalin avulla, joka "jaetaan" isännän ja orjan välillä. Kellosignaalia ohjaa aina isäntä. Isäntä luo kellon ja aloittaa yhteydenpidon orjien kanssa.

Yhteenvetona siis>

Käytettyjen johtojen määrä: 2

Synkroninen tai asynkroninen: Synkroninen

Sarja tai rinnakkainen: Sarja

Kellosignaalia ohjaa: Pääsolmu

Käytetyt jännitteet: +5 V tai +3,3 V

Maisterien enimmäismäärä: Rajoittamaton

Orjien enimmäismäärä: 1008

Suurin nopeus: Vakio -tila = 100 kbps

Nopea tila = 400 kbps

Nopea tila = 3,4 Mbps

Erittäin nopea tila = 5 Mbps

Vaihe 4: TCA9548A I2C -multiplekserimoduuli

TCA9548A I2C -multiplekserimoduuli
TCA9548A I2C -multiplekserimoduuli
TCA9548A I2C -multiplekserimoduuli
TCA9548A I2C -multiplekserimoduuli
TCA9548A I2C -multiplekserimoduuli
TCA9548A I2C -multiplekserimoduuli

TCA9548A on kahdeksan kanavan (kaksisuuntainen) I2C-multiplekseri, joka mahdollistaa kahdeksan erillisen I2C-laitteen ohjaamisen yhdellä isäntä I2C-väylällä. Sinun tarvitsee vain kytkeä I2C -anturit SCn / SDn -multipleksoidulle väylälle. Jos esimerkiksi sovelluksessa tarvitaan kahdeksan identtistä OLED-näyttöä, yksi kustakin näytöstä voidaan liittää kullekin näistä kanavista: 0-7.

Multiplexer yhdistää mikro-ohjaimen VIN-, GND-, SDA- ja SCL-linjoihin. Suojakortti hyväksyy VIN -arvon 1.65v - 5.5v. Sekä SDA- että SCL-tulolinjat on kytketty VCC: hen 10K: n vetovastuksen kautta (Pull-up-vastuksen koko määräytyy I2C-linjojen kapasitanssin mukaan). Multiplekseri tukee sekä normaaleja (100 kHz) että nopeita (400 kHz) I2C -protokollia. Kaikki TCA9548A: n I/O-nastat kestävät 5 volttia, ja niitä voidaan käyttää myös muuntamiseen korkeasta matalaan tai matalasta korkeaan jännitteeseen.

On hyvä idea asettaa vetovastus kaikkiin TCA9548A-kanaviin, vaikka jännitteet olisivat samat. Syynä tähän on sisäinen NMOS -kytkin. Se ei lähetä suurjännitettä kovin hyvin, toisaalta se lähettää erittäin hyvin matalat jännitteet. TCA9548A: ta voidaan käyttää myös jännitteenmuunnokseen, mikä mahdollistaa eri väyläjännitteiden käytön jokaisessa SCn/SDn-parissa siten, että 1,8 V: n, 2,5 V: n tai 3,3 V: n osat voivat kommunikoida 5 V: n osien kanssa. Tämä saavutetaan käyttämällä ulkoisia vetovastauksia vetämään väylä halutulle jännitteelle isännälle ja kullekin orjakanavalle.

Jos mikro-ohjain havaitsee väyläkonfliktin tai muun epäasianmukaisen toiminnan, TCA9548A voidaan nollata vahvistamalla alhainen arvo RESET-nastaan.

Vaihe 5:

Kuva
Kuva
Kuva
Kuva
Kuva
Kuva

TCA9548 sallii yhden mikro-ohjaimen kommunikoida jopa '64 anturin 'kanssa, joilla kaikilla on sama tai eri I2C-osoite, määrittämällä yksilöllinen kanava kullekin anturin orjaväylälle.

Kun puhumme tietojen lähettämisestä kahden johdon kautta useille laitteille, tarvitsemme tavan käsitellä ne. Se on sama kuin postimies, joka tulee yhdelle tielle ja pudottaa postipaketit eri taloihin, koska niihin on kirjoitettu eri osoitteet.

Sinulla voi olla enintään 8 näistä multipleksereistä kytkettyinä yhteen 0x70-0x77-osoitteisiin, jotta voit hallita 64 samaa I2C-osoitettua osaa. Yhdistämällä kolme osoitebittiä A0, A1 ja A2 VIN: ään saat eri yhdistelmän osoitteita. TCA9548A: n osoitetavu näyttää tältä. Ensimmäiset 7 bittiä muodostavat orjaosoitteen. Orjaosoitteen viimeinen bitti määrittää suoritettavan operaation (luku tai kirjoitus). Kun se on korkea (1), luku valitaan, kun taas matala (0) valitsee kirjoitusoperaation.

Vaihe 6: Kuinka päällikkö lähettää ja vastaanottaa tietoja

Kuinka päällikkö lähettää ja vastaanottaa tietoja
Kuinka päällikkö lähettää ja vastaanottaa tietoja
Kuinka päällikkö lähettää ja vastaanottaa tietoja
Kuinka päällikkö lähettää ja vastaanottaa tietoja

Seuraavassa on yleinen menettely, jolla isäntä pääsee orjalaitteeseen:

1. Jos isäntä haluaa lähettää tietoja orjalle (WRITES):

-Päälähetin lähettää START-tilan, jota seuraa orjavastaanottimen osoitteet ja R/W asetettu arvoon 0

-Päälähetin lähettää tiedot 8-bittisissä ohjausrekistereissä orjavastaanottimelle, kun orja myöntää olevansa valmis

-Päälähetin lopettaa siirron STOP-ehdolla

2. Jos isäntä haluaa vastaanottaa tai lukea tietoja orjalta (READS):

-Päävastaanotin lähettää START-ehdon, jota seuraa orjavastaanottimen osoitteet ja R/W-arvoksi 1

-Päävastaanotin lähettää pyydetyn rekisterin luettavaksi orjalähettimelle

-Päävastaanotin vastaanottaa tietoja orjalähettimeltä

- Kun kaikki tavut on vastaanotettu, Master lähettää NACK -signaloinnin orjalle kommunikoinnin lopettamiseksi ja väylän vapauttamiseksi

- Pää-vastaanotin lopettaa siirron STOP-ehdolla

Väylä katsotaan käyttämättömäksi, jos sekä SDA- että SCL -linjat ovat korkeita STOP -tilan jälkeen.

Vaihe 7: Koodi

Koodi
Koodi

Nyt Int -koodin avulla voidaan aloittaa sisällyttämällä "Wire" -kirjasto ja määrittelemällä multiplekserien osoite.

#sisältää "Wire.h"

#include "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Encoders address

Sitten meidän on valittava portti, johon haluamme kommunikoida, ja lähetettävä tiedot siitä tällä toiminnolla:

void selectI2CChannels (uint8_t i) {

jos (i> 7) palaa;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Seuraavaksi alustamme näytön asetusosiossa kutsumalla "u8g.begin ();" jokaiselle näytölle, joka on liitetty MUX -laitteeseen "tcaselect (i);"

Alustamisen jälkeen voimme tehdä mitä haluamme vain kutsumalla funktiota "tcaselect (i);" jossa "i" on multipleksoidun väylän arvo ja lähettää sitten tiedot ja kellon vastaavasti.

Vaihe 8: I2C -skanneri

I2C -skanneri
I2C -skanneri

Jos et ole varma I2C -kilven laiteosoitteesta, suorita liitteenä oleva I2C -skannerikoodi löytääksesi laitteen heksadesimaaliosoitteen. Kun luonnos ladataan Arduinolle, luonnos skannaa I2C -verkon ja näyttää vastaavat osoitteet.

Vaihe 9: Johdotus ja esittely

Johdotus ja esittely
Johdotus ja esittely
Johdotus ja esittely
Johdotus ja esittely

Johdotus:

Aloitetaan yhdistämällä multiplekseri NodeMCU -korttiin. Kytkeä:

VIN - 5V (tai 3.3V)

GND maahan

SDA - D2 ja

SCL - D1 nastat

Liitä Arduino -kortti:

VIN - 5V (tai 3.3V)

GND maahan

SDA - A4 ja

SCL - A5 nastat

Kun MUX on kytketty mikro-ohjaimeen, sinun tarvitsee vain liittää anturit SCn / SDn-pareihin.

Tarkastellaan nyt tätä nopeaa esittelyä, jossa olen yhdistänyt 8 OLED -näyttöä TCA9548A -multiplekseriin. Koska nämä näytöt käyttävät I2C -tiedonsiirtoa, ne kommunikoivat Arduinon kanssa vain kahdella nastalla.

Vaihe 10: Edut ja haitat

Hyödyt ja haitat
Hyödyt ja haitat

EDUT

* Kommunikointi vaatii vain kaksi väylää (johdot)

* Kaikkien komponenttien välillä on yksinkertainen isäntä/orja -suhde

* Ei tiukkoja siirtonopeusvaatimuksia, kuten esimerkiksi RS232, isäntä luo väyläkellon

* Laitteisto on vähemmän monimutkainen kuin UART -laitteet

* Tukee useita isäntiä ja useita orjia

* ACK/NACK -bitti vahvistaa, että jokainen kehys on siirretty onnistuneesti

* I2C on "todellinen monipäällikköväylä", joka tarjoaa välimies- ja törmäystunnistuksen

* Jokainen väylään liitetty laite on ohjelmisto-osoitettavissa yksilöllisellä osoitteella

* Useimmat I2C -laitteet voivat kommunikoida 100 kHz: n tai 400 kHz: n taajuudella

* I²C sopii oheislaitteille, joissa yksinkertaisuus ja alhaiset valmistuskustannukset ovat nopeutta tärkeämpiä

* Tunnettu ja laajalti käytetty protokolla

EHDOT

* Hitaampi tiedonsiirtonopeus kuin SPI

* Datakehyksen koko on rajoitettu 8 bittiin

* Toteutus vaatii monimutkaisemman laitteiston kuin SPI -tekniikka

Suositeltava: