
Sisällysluettelo:
- Vaihe 1: Laitteistovaatimus
- Vaihe 2: Katetut aiheet
- Vaihe 3: I2C -väylän perusteet
- Vaihe 4: TCA9548A I2C -multiplekserimoduuli
- Vaihe 5:
- Vaihe 6: Kuinka päällikkö lähettää ja vastaanottaa tietoja
- Vaihe 7: Koodi
- Vaihe 8: I2C -skanneri
- Vaihe 9: Johdotus ja esittely
- Vaihe 10: Edut ja haitat
- Vaihe 11: Kiitos
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:44


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

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



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 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:



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


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

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

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:
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

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:
Plug & Play CO2 -anturin näyttö solmulla MCU/ESP8266 kouluille, lastentarhoille tai kotiisi: 7 vaihetta

Plug & Play -CO2 -anturinäyttö NodeMCU/ESP8266 -kouluilla, kouluille, lastentarhoille tai kotiisi: Näytän sinulle, kuinka nopeasti rakentaa pistoke ja amp; toista CO2 -anturi, jossa kaikki projektin elementit liitetään DuPont -johtoihin. On vain 5 pistettä, jotka on juotettava, koska en juottanut ennen tätä projektia ollenkaan
Eleohjattu yleiskaukosäädin solmulla MCU: 12 vaihetta

Eleohjattu yleiskaukosäädin solmulla MCU: Hei kaikille ja tervetuloa tähän projektiin! Olen melko laiska ihminen ja laiska painajainen on katsoa televisiota, kun huomaat, että kaukosäädin on liian kaukana! Tajusin, että kaukosäädin ei ole koskaan liian kaukana, jos minulla on se käsillä
Kauko -ohjattu ajastin solmulla MCU: 14 vaihetta

Kaukosäädetty ajastin NodeMCU: lla: Tässä aiomme luoda ajastimen käyttämällä NodeMCU: ta ja Adafruitia. Aiomme näyttää ajastimemme LED -nauhalla ja voimme hallita sitä puhelimella tai tietokoneella! Tavoitteemme: Luo ajastin käyttämällä LED -nauhaa, jonka voimme: käynnistää, pau
Liitäntä servomoottoriin solmulla MCU: 6 vaihetta (kuvilla)

Liitäntä servomoottoriin NodeMCU: n kanssa: Hei kaikki, tämä on ensimmäinen Instructable -projektini, joten haluatko aloittaa NodeMCU: n käytön? Tänään haluan kertoa teille, miten pääset alkuun NodeMCU: n kanssa. Mennään! NodeMCU: n ESP8266-12E-aluksella on b
Hätäpainike solmulla MCU: 7 vaihetta

Hätäpainike NodeMCU: n avulla: Hätäpainike auttaa sinua saamaan apua hätätilanteissa, paina vain painiketta ja se lähettää automaattisesti Facebookiin tai twitteriin viestin, jonka laitat sen koodiin, voit lisätä toisen painikkeen, jos sinulla on lääketieteellinen ehto