Sisukord:
- Samm: riistvaranõue
- 2. samm: kaetud teemad
- 3. samm: I2C bussi põhitõed
- Samm: TCA9548A I2C multipleksermoodul
- 5. samm:
- Samm: kuidas kapten andmeid saadab ja võtab vastu
- Samm: kood
- Samm: I2C skanner
- 9. samm: juhtmestik ja demo
- Samm: eelised ja puudused
- Samm: aitäh
Video: TCA9548A I2C multipleksermoodul - koos Arduino ja sõlmega MCU: 11 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Kas olete kunagi sattunud olukorda, kus pidite oma Arduino külge ühendama kaks, kolm või enam I2C -andurit, et mõista, et anduritel on kindel või sama I2C -aadress. Veelgi enam, teil ei saa olla kahte sama aadressiga seadet samadel SDA/SCL -tihvtidel!
Niisiis, millised on teie võimalused? Pange need kõik TCA9548A 1 kuni 8 I2C multiplekserisse, et nad kõik saaksid sama bussiga omavahel rääkida! TCA9548A Breakout võimaldab suhelda mitme I2C seadmega, millel on sama aadress, mis muudab nendega liidestamise lihtsaks.
Samm: riistvaranõue
Selle õpetuse jaoks vajame:
- Leivalaud
- TCA9548A I2C multiplekser
- Arduino Uno/Nano, mis on käepärast
- NodeMCU
- Vähesed 0,91 ja 0,96 I2C OLED -ekraanid
- hüppajakaablid ja
- USB -kaabel koodi üleslaadimiseks
2. samm: kaetud teemad
Alustame oma arutelu I2C tehnoloogia põhitõdede mõistmisega
Seejärel õpime tundma multiplekserit TCA9548A ja seda, kuidas ülem ja alam saadab ja võtab vastu andmeid, kasutades tehnoloogiat I2C. Seejärel kontrollime, kuidas saame oma projektis multiplekserit programmeerida ja kasutada, kasutades Arduino ja NodeMCU. Järgmisena näitan teile kiiresti demo, kasutades 8 I2C OLED -ekraani ja lõpuks lõpetame õpetuse, arutades multiplekseri TCA9548A eeliseid ja puudusi
3. samm: I2C bussi põhitõed
Integreeritud vooluahela hääldatud I-kvadraat-C (I²C) või I2C on kahe juhtmega siinitehnoloogia (tegelikult 4 juhet, kuna vajate ka VCC-d ja maandust), mida kasutatakse mitme protsessori ja anduri vaheliseks suhtlemiseks.
Kaks juhtmest on:
* SDA - seeriaandmed (andmeside) ja
* SCL - jadakell (kellajoon)
Pidage meeles, et mõlemad liinid on sünkroonsed, kahesuunalised, avatud äravooluga ja on takistitega üles tõmmatud.
I2C siinitehnoloogia kujundas algselt Philips Semiconductors 80ndate alguses, et võimaldada hõlpsat suhtlust samal trükkplaadil asuvate komponentide vahel.
I2C abil saate ühendada mitu orja ühe masteriga (nt SPI) või teil võib olla mitu ülemat, kes kontrollivad ühte või mitut orja. Nii meistrid kui ka orjad saavad andmeid edastada ja vastu võtta. Niisiis võib I2C siinil olev seade olla ühes neljast olekust:
* Põhisaatmine - peasõlm saadab andmeid orjale* Põhivastus - peasõlm võtab orjast andmeid vastu
* Alamülekanne - orjasõlm saadab andmeid kaptenile
* Alamvastuvõtt - orjasõlm võtab masterilt andmeid vastu
I2C on „lühikese vahemaa” jadakommunikatsiooni protokoll, seega edastatakse andmeid „bitti haaval” mööda ühte traati või SDA-liini. Bittide väljund sünkroniseeritakse bittide proovivõtmisega kella signaali abil, mis on jagatud meistri ja alluva vahel. Kella signaali juhib alati kapten. Meister loob kella ja alustab sidepidamist orjadega.
Niisiis, kokkuvõtteks>
Kasutatud juhtmete arv: 2
Sünkroonne või asünkroonne: sünkroonne
Seeria või paralleel: jada
Kella signaali juhib: Master Node
Kasutatavad pinged: +5 V või +3,3 V
Maksimaalne meistrite arv: piiramatu
Maksimaalne orjade arv: 1008
Maksimaalne kiirus: standardrežiim = 100 kbps
Kiire režiim = 400 kbps
Kiire režiim = 3,4 Mbps
Ülikiire režiim = 5 Mbps
Samm: TCA9548A I2C multipleksermoodul
TCA9548A on kaheksakanaliline (kahesuunaline) I2C multiplekser, mis võimaldab ühe hosti I2C siiniga juhtida kaheksat eraldi I2C seadet. Peate lihtsalt ühendama I2C andurid SCn / SDn multipleksitud siinidega. Näiteks kui rakenduses on vaja kaheksat ühesugust OLED-ekraani, saab iga kuvariga ühendada ühe neist kanalitest: 0-7.
Multiplekser ühendub mikrokontrolleri VIN, GND, SDA ja SCL liinidega. Väljalülitusplaat aktsepteerib VIN -i vahemikus 1,65 kuni 5,5 volti. Nii SDA kui ka SCL sisendliinid on ühendatud VCC-ga 10K tõmbetakistuse kaudu (Tõmbetakisti suurus määratakse I2C liinide mahtuvuse järgi). Multiplekser toetab nii tavalisi (100 kHz) kui ka kiireid (400 kHz) I2C protokolle. Kõik TCA9548A sisend-/väljundpistikud on 5-voldise taluvusega ja neid saab kasutada ka kõrgepingest madalaks või madalaks kõrgeks pingeks.
TCA9548A kõikidele kanalitele on hea mõte panna tõmbetakistid, isegi kui pinge on sama. Selle põhjuseks on sisemine NMOS -lüliti. See ei edasta kõrgepinget väga hästi, teisest küljest aga väga hästi. TCA9548A-d võib kasutada ka pinge teisendamiseks, võimaldades igal SCn/SDn paaril kasutada erinevaid siinipingeid nii, et 1,8-V, 2,5-V või 3,3-V osad saaksid suhelda 5-V osadega. See saavutatakse väliste tõmbetakistite abil, et tõmmata siini ülem- ja iga alamkanali soovitud pingele.
Kui mikrokontroller tuvastab siini konflikti või muu ebaõige toimingu, saab TCA9548A lähtestada, kinnitades RESET-pinnile madala taseme.
5. samm:
TCA9548 võimaldab ühel mikrokontrolleril suhelda kuni '64 anduriga ', millel kõigil on sama või erinev I2C-aadress, määrates igale anduri alam-siinile ainulaadse kanali.
Kui me räägime andmete saatmisest üle kahe juhtme mitmesse seadmesse, siis vajame viisi nende lahendamiseks. See on sama, kui postiljon tuleb ühel teel ja viskab postipakid erinevatesse majadesse, sest neile on kirjutatud erinevad aadressid.
Teil võib olla kuni 8 sellist multiplekserit ühendatud 0x70-0x77 aadressidega, et juhtida 64 sama I2C aadressiga osa. Ühendades kolm aadressibitti A0, A1 ja A2 VIN -iga, saate erineva aadresside kombinatsiooni. Nii näeb välja TCA9548A aadressibait. Esimesed 7-bitised ühendavad alam-aadressi. Alam -aadressi viimane bitt määratleb toimingu (lugemise või kirjutamise). Kui see on kõrge (1), valitakse lugemine, madal (0) aga kirjutamisoperatsioon.
Samm: kuidas kapten andmeid saadab ja võtab vastu
Alljärgnev on üldine protseduur, kuidas kapten pääseb alamseadmele juurde:
1. Kui ülem soovib orjale andmeid saata (WRITES):
-Peasaatja saadab START-tingimuse, millele järgneb alam-vastuvõtja aadress ja R/W on seatud väärtusele 0
-Peasaatja saadab andmed alamvastuvõtjale 8-bitistes juhtregistrites, kui alam kinnitab, et on valmis
-Peasaatja lõpetab edastamise STOP-tingimusega
2. Kui ülem soovib orjalt andmeid vastu võtta või lugeda (READS):
-Ülem-vastuvõtja saadab START-tingimuse, millele järgneb alam-vastuvõtja aadress ja R/W on seatud väärtusele 1
-Master-vastuvõtja saadab nõutud registri alam-saatjale lugemiseks
-Master-vastuvõtja võtab andmeid alam-saatjalt
- Kui kõik baidid on vastu võetud, saadab kapten orjale NACK -signaali, et lõpetada side ja vabastada siin
- Peamine vastuvõtja lõpetab edastamise STOP-tingimusega
Siini loetakse jõudeolekuks, kui nii SDA- kui ka SCL -liin on pärast STOP -tingimust kõrgel.
Samm: kood
Nüüd lubab kood alustada, kaasates raamatukogu "Wire" ja määratledes multiplekserite aadressi.
#include "Wire.h"
#include "U8glib.h"
#define MUX_Address 0x70 // TCA9548A Kodeerijate aadress
Seejärel peame valima pordi, millega tahame suhelda, ja selle funktsiooni abil selle kohta andmed saatma:
void selectI2CChannels (uint8_t i) {
kui (i> 7) tagasi;
Wire.beginTransmission (MUX_Address);
Wire.write (1 << i);
Wire.endTransmission ();
}
Järgmisena lähtestame seadistuste jaotises ekraani, helistades "u8g.begin ();" iga MUX -i külge kinnitatud ekraani "tcaselect (i);"
Kui oleme lähtestanud, saame teha kõike, mida tahame, kutsudes funktsiooni "tcaselect (i);" kus "i" on multipleksitud siini väärtus ja seejärel andmete ja kella saatmine vastavalt.
Samm: I2C skanner
Igaks juhuks, kui te pole kindel oma I2C -kilbi seadme aadressis, käivitage lisatud 'I2C -skanneri' kood, et leida oma seadme kuusnurkne aadress. Arduino laadimisel skaneerib sketš I2C võrgu, näidates vastavaid aadresse.
9. samm: juhtmestik ja demo
Juhtmestik:
Alustuseks ühendage multiplekser NodeMCU plaadiga. Ühenda:
VIN kuni 5V (või 3.3V)
GND maapinnale
SDA kuni D2 ja
SCL kuni D1 tihvtid
Arduino plaadi jaoks ühendage:
VIN kuni 5V (või 3.3V)
GND maapinnale
SDA kuni A4 ja
SCL kuni A5 tihvtid
Kui MUX on mikrokontrolleriga ühendatud, peate andurid lihtsalt ühendama SCn / SDn paaridega.
Nüüd vaatame seda kiiret demot, milles olen ühendanud 8 OLED -ekraani TCA9548A multiplekseriga. Kuna need kuvarid kasutavad I2C -ühendust, suhtlevad nad Arduinoga vaid 2 tihvti kasutades.
Samm: eelised ja puudused
EELISED
* Side nõuab ainult kahte bussiliini (juhtmeid)
* Kõikide komponentide vahel on lihtsad ülem -alam -suhted
* Rangeid edastuskiiruse nõudeid pole, nagu näiteks RS232 puhul, genereerib kapten siinikella
* Riistvara on vähem keeruline kui UART -id
* Toetab mitut meistrit ja mitut orja
* ACK/NACK bit kinnitab, et iga kaader on edukalt üle kantud
* I2C on tõeline mitme põhibuss, mis pakub vahekohtumenetlust ja kokkupõrke tuvastamist
* Iga siiniga ühendatud seade on tarkvaraliselt adresseeritav unikaalse aadressiga
* Enamik I2C seadmeid suudab suhelda 100 kHz või 400 kHz sagedusel
* I²C sobib välisseadmetele, kus lihtsus ja madalad tootmiskulud on tähtsamad kui kiirus
* Tuntud ja laialdaselt kasutatav protokoll
Miinused
* Aeglasem andmeedastuskiirus kui SPI
* Andmeraami suurus on piiratud 8 bitiga
* Rakendamiseks on vaja keerulisemat riistvara kui SPI -tehnoloogiat
Soovitan:
LoT suitsu-/alkoholiandurite ja tulekahjusignalisatsioonide loomine sõlmega MCU ESP8266 Blynk DHT11, MQ-2, MQ-3: 7 sammu
LoT suitsu-/alkoholiandurite ja tulekahjusignalisatsioonide loomine sõlmegaMCU ESP8266 Blynk DHT11, MQ-2, MQ-3: Lisateavet saate vaadata minu Youtube'i videost
IOT algajatele-sõlmega Mcu: 7 sammu
IOT algajatele-sõlmega Mcu: Tere, mina, Samarth selles õpetuses, õpetan teile, kuidas luua oma IOT-projekte, kasutades NODE MCU wifi moodulit ja rakendust Blynk
Liigutusega juhitav universaalne kaugjuhtimispult sõlmega-MCU: 12 sammu
Žestidega juhitav universaalne kaugjuhtimispult koos sõlmega-MCU: Tere kõigile ja tere tulemast sellesse projekti! Ma olen üsna laisk inimene ja laisa inimese õudusunenägu on telekat vaadata, kui mõistate, et pult on liiga kaugel! Mõistsin, et mu pult ei ole kunagi liiga kaugel, kui mul see käepärast on
Mulla niisutus sõlmega: 7 sammu
Sõlmega mullaniisutaja: Selles juhendis näitan teile, kuidas valmistada aiatervisüsteemi jaoks omatehtud mullaandurit. Näitan teile, mida vajate, annan mõned näited koodidest ja koodi rakendamist. Juhiste lõpus teate, kuidas LED -riba muuta
Liidesega servomootor sõlmega MCU: 6 sammu (piltidega)
Servomootori liidestamine NodeMCU -ga: Tere kõigile, see on minu esimene juhendatav projekt. Nii et soovite NodeMCU -ga alustada? Noh, ma olen siin, et teiega jagada. Täna näitan teile, kuidas alustada NodeMCU -ga. Lähme! NodeMCU pardal ESP8266-12E teeb b