Turinys:

TCA9548A I2C multiplekserio modulis - su „Arduino“ir „Node“MCU: 11 žingsnių
TCA9548A I2C multiplekserio modulis - su „Arduino“ir „Node“MCU: 11 žingsnių

Video: TCA9548A I2C multiplekserio modulis - su „Arduino“ir „Node“MCU: 11 žingsnių

Video: TCA9548A I2C multiplekserio modulis - su „Arduino“ir „Node“MCU: 11 žingsnių
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Birželis
Anonim
Image
Image

Ar kada patekote į situaciją, kai turėjote prijungti du, tris ar daugiau I2C jutiklių prie „Arduino“, kad suprastumėte, jog jutikliai turi fiksuotą arba tą patį I2C adresą. Be to, jūs negalite turėti dviejų įrenginių tuo pačiu adresu tame pačiame SDA/SCL kaištyje!

Taigi, kokios yra jūsų galimybės? Įdėkite juos visus į TCA9548A nuo 1 iki 8 I2C multiplekserį, kad jie visi kalbėtųsi tuo pačiu autobusu! „TCA9548A Breakout“suteikia galimybę bendrauti su keliais I2C įrenginiais, turinčiais tą patį adresą, todėl su jais paprasta bendrauti.

1 žingsnis: aparatinės įrangos reikalavimas

Apimtos temos
Apimtos temos

Šiai pamokai mums reikia:

- Bandomoji Lenta

- TCA9548A I2C multiplekseris

- „Arduino Uno“/„Nano“viskas, kas jums patogu

- „NodeMCU“

- Keletas 0,91 ir 0,96 I2C OLED ekranų

- jungiamieji kabeliai ir

- USB kabelis, skirtas įkelti kodą

2 veiksmas: aptariamos temos

Diskusiją pradėsime suprasdami I2C technologijos pagrindus

Tada mes sužinosime apie TCA9548A multiplekserį ir tai, kaip šeimininkas ir vergas siunčia ir gauna duomenis naudojant I2C technologiją. Tada patikrinsime, kaip galime užprogramuoti ir naudoti multiplekserį savo projekte, naudodami „Arduino“ir „NodeMCU“. Toliau parodysiu jums greitai demonstracinė versija naudojant 8 „I2C OLED“ekranus ir galiausiai baigsime vadovėlį aptardami „TCA9548A Multiplexer“pranašumus ir trūkumus

3 žingsnis: I2C magistralės pagrindai

I2C magistralės pagrindai
I2C magistralės pagrindai
I2C magistralės pagrindai
I2C magistralės pagrindai
I2C magistralės pagrindai
I2C magistralės pagrindai

Interintegruota grandinė, išreikšta I kvadratu-C (I²C) arba I2C, yra dviejų laidų magistralės technologija (iš tikrųjų 4 laidai, nes jums taip pat reikia VCC ir įžeminimo), naudojama komunikacijai tarp kelių procesorių ir jutiklių.

Du laidai yra:

* SDA - serijiniai duomenys (duomenų linija) ir

* SCL - serijinis laikrodis (laikrodžio linija)

Atminkite, kad abi šios linijos yra „sinchroninės“„dvikryptės“„atviro nutekėjimo“ir yra „ištrauktos su rezistoriais“.

I2C magistralės technologiją iš pradžių sukūrė „Philips Semiconductors“devintojo dešimtmečio pradžioje, kad būtų galima lengvai bendrauti tarp komponentų, esančių toje pačioje plokštėje.

Naudodami „I2C“galite prijungti kelis vergus prie vieno pagrindinio tinklo (pvz., SPI) arba turėti kelis valdiklius, valdančius vieną ar kelis vergus. Tiek šeimininkai, tiek vergai gali perduoti ir gauti duomenis. Taigi, I2C magistralės įrenginys gali būti vienoje iš šių keturių būsenų:

* Pagrindinis perdavimas - pagrindinis mazgas siunčia duomenis į vergą* Pagrindinis priėmimas - pagrindinis mazgas gauna duomenis iš vergo

* Slave perdavimas - vergas mazgas siunčia duomenis pagrindiniam

* Vergas priimamas - vergas mazgas gauna duomenis iš pagrindinio

„I2C“yra „trumpo atstumo“„nuoseklaus ryšio protokolas“, todėl duomenys perduodami „po bitą“vienu laidu arba SDA linija. Bitų išvestis sinchronizuojama su bitų atranka pagal laikrodžio signalą, „bendrinamą“tarp pagrindinio ir pavaldinio. Laikrodžio signalą visada valdo meistras. Šeimininkas sukuria laikrodį ir inicijuoja ryšį su vergais.

Taigi, apibendrinant>

Naudotų laidų skaičius: 2

Sinchroninis arba asinchroninis: sinchroninis

Serijinis arba lygiagretusis: serijinis

Laikrodžio signalą valdo: pagrindinis mazgas

Naudojama įtampa: +5 V arba +3,3 V

Maksimalus meistrų skaičius: neribotas

Maksimalus vergų skaičius: 1008

Maksimalus greitis: standartinis režimas = 100 kbps

Greitas režimas = 400 kbps

Didelio greičio režimas = 3,4 Mbps

Itin greitas režimas = 5 Mbps

4 žingsnis: TCA9548A I2C multiplekserio modulis

TCA9548A I2C multiplekserio modulis
TCA9548A I2C multiplekserio modulis
TCA9548A I2C multiplekserio modulis
TCA9548A I2C multiplekserio modulis
TCA9548A I2C multiplekserio modulis
TCA9548A I2C multiplekserio modulis

TCA9548A yra aštuonių kanalų (dvikryptis) I2C multiplekseris, leidžiantis aštuonis atskirus I2C įrenginius valdyti vienu I2C magistraliniu prietaisu. Jums tiesiog reikia prijungti I2C jutiklius prie SCn / SDn multipleksuotų magistralių. Pavyzdžiui, jei programoje reikalingi aštuoni identiški OLED ekranai, prie kiekvieno iš šių kanalų galima prijungti po vieną ekraną: 0-7.

„Multiplexer“jungiasi prie mikrovaldiklio VIN, GND, SDA ir SCL linijų. Išardymo plokštė priima VIN nuo 1.65v iki 5.5v. Tiek įvesties SDA, tiek SCL linijos yra prijungtos prie VCC per 10K ištraukiamąjį rezistorių (ištraukimo rezistoriaus dydį lemia I2C linijų talpa). Multiplekseris palaiko tiek įprastus (100 kHz), tiek greitus (400 kHz) I2C protokolus. Visi TCA9548A įvesties/išvesties kaiščiai yra 5 voltų tolerancijos ir taip pat gali būti naudojami iš aukštos įtampos į žemą arba žemą į aukštą įtampą.

Patartina į visus TCA9548A kanalus įdėti traukiamus rezistorius, net jei įtampa yra vienoda. To priežastis yra vidinis NMOS jungiklis. Jis ne itin gerai perduoda aukštą įtampą, kita vertus, jis labai gerai perduoda žemą įtampą. TCA9548A taip pat gali būti naudojamas įtampos vertimui, leidžiant kiekvienoje SCn/SDn poroje naudoti skirtingą magistralės įtampą, kad 1,8 V, 2,5 V arba 3,3 V dalys galėtų bendrauti su 5 V dalimis. Tai pasiekiama naudojant išorinius traukiamus rezistorius, kad magistralė būtų pritraukta iki norimos pagrindinio ir kiekvieno pavaldinio kanalo įtampos.

Jei mikrovaldiklis aptinka magistralės konfliktą ar kitą netinkamą veikimą, TCA9548A galima atkurti iš naujo nustatant žemą RESET kaiščio tašką.

5 žingsnis:

Vaizdas
Vaizdas
Vaizdas
Vaizdas
Vaizdas
Vaizdas

TCA9548 leidžia vienam mikrovaldikliui bendrauti su iki „64 jutiklių“, turinčių tą patį arba skirtingą I2C adresą, priskiriant unikalų kanalą kiekvienam jutiklio antriniam magistraliui.

Kai mes kalbame apie duomenų siuntimą dviem laidais į kelis įrenginius, mums reikia būdo juos spręsti. Tas pats, kaip paštininkas, atėjęs vienu keliu ir numetęs pašto paketus į skirtingus namus, nes ant jų parašyti skirtingi adresai.

Galite valdyti ne daugiau kaip 8 iš šių multiplekserių, sujungtų 0x70-0x77 adresais, kad galėtumėte valdyti 64 tas pačias I2C adresuotas dalis. Prijungę tris adresų bitus A0, A1 ir A2 prie VIN, galite gauti skirtingą adresų derinį. Taip atrodo TCA9548A adreso baitas. Pirmieji 7 bitai sujungiami ir sudaro vergo adresą. Paskutinis pavaldinio adreso bitas apibrėžia atliekamą operaciją (skaitymą ar rašymą). Kai jis yra aukštas (1), pasirenkamas skaitymas, o žemas (0) - rašymo operacija.

6 veiksmas: kaip kapitonas siunčia ir priima duomenis

Kaip kapitonas siunčia ir priima duomenis
Kaip kapitonas siunčia ir priima duomenis
Kaip kapitonas siunčia ir priima duomenis
Kaip kapitonas siunčia ir priima duomenis

Toliau pateikiama bendra tvarka, kaip kapitonas gali pasiekti slaptąjį įrenginį:

1. Jei šeimininkas nori siųsti duomenis vergui (WRITES):

-Pagrindinis siųstuvas siunčia START sąlygą, po kurios seka pavaldinio imtuvo adresai ir R/W nustatyta į 0

-Pagrindinis siųstuvas siunčia duomenis iš „8 bitų valdymo registrų“į verginį imtuvą, kai vergas pripažįsta, kad yra pasirengęs

-Pagrindinis siųstuvas nutraukia perdavimą su STOP sąlyga

2. Jei šeimininkas nori gauti ar perskaityti duomenis iš vergo (READS):

-Pagrindinis imtuvas siunčia START sąlygą, o po to-verginio imtuvo adresus ir R/W nustatytą į 1

-Pagrindinis imtuvas siunčia prašomą registrą skaityti vergui-siųstuvui

-Pagrindinis imtuvas gauna duomenis iš vergo siųstuvo

- Gavęs visus baitus, meistras siunčia NACK signalą vergui, kad nutrauktų ryšius ir atleistų magistralę

- Pagrindinis imtuvas nutraukia perdavimą su STOP sąlyga

Autobusas laikomas nenaudojamu, jei tiek STA, tiek SCL linijos yra aukštos po STOP.

7 žingsnis: kodas

Kodas
Kodas

Dabar „Int“kodą galima pradėti įtraukiant „Wire“biblioteką ir nustatant multiplekserių adresą.

#įtraukti „Wire.h“

#include "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Kodavimo adresas

Tada turime pasirinkti prievadą, su kuriuo norime bendrauti, ir siųsti duomenis apie jį naudodami šią funkciją:

void selectI2CChannels (uint8_t i) {

jei (i> 7) grįžti;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Toliau inicijuosime ekraną sąrankos skiltyje, paskambinę „u8g.begin ();“kiekvienam ekranui, prijungtam prie MUX "tcaselect (i);"

Kai inicijuojame, tada galime daryti viską, ką norime, tiesiog paskambinę funkcijai „tcaselect (i);“kur „i“yra multipleksuotos magistralės vertė, o tada atitinkamai siunčiami duomenys ir laikrodis.

8 veiksmas: „I2C“skaitytuvas

I2C skaitytuvas
I2C skaitytuvas

Tik tuo atveju, jei nesate tikri dėl savo I2C skydo įrenginio adreso, paleiskite pridėtą „I2C Scanner“kodą, kad surastumėte savo prietaiso šešioliktainį adresą. Įkeltas į „Arduino“eskizas nuskaitys I2C tinklą ir parodys atsakančius adresus.

9 žingsnis: laidai ir demonstracija

Laidai ir demonstracija
Laidai ir demonstracija
Laidai ir demonstracija
Laidai ir demonstracija

Laidai:

Pradėkime prijungdami multiplekserį prie „NodeMCU“plokštės. Prisijungti:

VIN iki 5V (arba 3.3V)

GND į žemę

SDA į D2 ir

SCL į D1 atitinkamai

Norėdami prijungti „Arduino“plokštę, prijunkite:

VIN iki 5V (arba 3.3V)

GND į žemę

SDA į A4 ir

SCL į A5 kaiščius atitinkamai

Kai MUX prijungtas prie mikrovaldiklio, jums tereikia prijungti jutiklius prie SCn / SDn porų.

Dabar patikrinkime šią greitą demonstraciją, kurioje aš prijungiau 8 OLED ekranus prie TCA9548A multipleksoriaus. Kadangi šie ekranai naudoja I2C ryšį, jie bendrauja su „Arduino“naudodami tik 2 kaiščius.

10 žingsnis: privalumai ir trūkumai

Privalumai ir trūkumai
Privalumai ir trūkumai

PRIVALUMAI

* Ryšiui reikia tik dviejų magistralinių linijų (laidų)

* Tarp visų komponentų egzistuoja paprasti šeimininko/vergo santykiai

* Nėra griežtų duomenų perdavimo spartos reikalavimų, pavyzdžiui, naudojant RS232, pagrindinis generuoja magistralės laikrodį

* Aparatūra yra mažiau sudėtinga nei UART

* Palaiko kelis šeimininkus ir kelis vergus

* ACK/NACK bitas patvirtina, kad kiekvienas kadras sėkmingai perkeltas

* „I2C“yra tikra kelių magistralių magistralė, suteikianti arbitražo ir susidūrimo aptikimo galimybę

* Kiekvienas prie magistralės prijungtas įrenginys yra programinės įrangos adresas unikaliu adresu

* Dauguma I2C įrenginių gali bendrauti 100 kHz arba 400 kHz dažniu

* I²C tinka periferiniams įrenginiams, kuriuose paprastumas ir mažos gamybos sąnaudos yra svarbesnės už greitį

* Gerai žinomas ir plačiai naudojamas protokolas

TRŪKUMAI

* Lėtesnis duomenų perdavimo greitis nei SPI

* Duomenų rėmelio dydis yra apribotas iki 8 bitų

* Įdiegti reikia sudėtingesnės aparatūros nei SPI technologija

Rekomenduojamas: