Satura rādītājs:

TCA9548A I2C multipleksora modulis - ar Arduino un NodeMCU: 11 soļi
TCA9548A I2C multipleksora modulis - ar Arduino un NodeMCU: 11 soļi

Video: TCA9548A I2C multipleksora modulis - ar Arduino un NodeMCU: 11 soļi

Video: TCA9548A I2C multipleksora modulis - ar Arduino un NodeMCU: 11 soļi
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Novembris
Anonim
Image
Image

Vai esat kādreiz nonācis situācijā, kad jums bija jāpievieno divi, trīs vai vairāk I2C sensori savam Arduino, lai tikai saprastu, ka sensoriem ir fiksēta vai vienāda I2C adrese. Turklāt jums nevar būt divas ierīces ar vienu un to pašu adresi vienā SDA/SCL tapā!

Tātad, kādas ir jūsu iespējas? Novietojiet tos visus uz TCA9548A 1 līdz 8 I2C multipleksoru, lai viņi visi sarunātos vienā autobusā! TCA9548A Breakout nodrošina saziņu ar vairākām I2C ierīcēm, kurām ir viena un tā pati adrese, padarot to saskarni vienkāršu.

1. darbība. Aparatūras prasības

Tēmas, uz kurām attiecas
Tēmas, uz kurām attiecas

Šai apmācībai mums ir nepieciešams:

- Maizes dēlis

- TCA9548A I2C multipleksors

- Arduino Uno/Nano, kas ir ērts

- NodeMCU

- Daži 0,91 un 0,96 I2C OLED displeji

- džemperu kabeļi un

- USB kabelis, lai augšupielādētu kodu

2. darbība: aptvertās tēmas

Mēs sāksim mūsu diskusiju, izprotot I2C tehnoloģijas pamatus

Tad mēs uzzināsim par multipleksoru TCA9548A un to, kā meistars un vergs sūta un saņem datus, izmantojot I2C tehnoloģiju. demo, izmantojot 8 I2C OLED displejus, un visbeidzot mēs pabeigsim apmācību, apspriežot TCA9548A multipleksora priekšrocības un trūkumus

3. darbība: I2C kopnes pamati

I2C kopnes pamati
I2C kopnes pamati
I2C kopnes pamati
I2C kopnes pamati
I2C kopnes pamati
I2C kopnes pamati

Integrētās shēmas izrunātais I-kvadrāts-C (I²C) vai I2C ir divu vadu kopņu tehnoloģija (patiesībā 4 vadi, jo jums ir nepieciešams arī VCC un zemējums), ko izmanto saziņai starp vairākiem procesoriem un sensoriem.

Abi vadi ir:

* SDA - Sērijas dati (datu līnija) un

* SCL - sērijas pulkstenis (pulksteņa līnija)

Atcerieties, ka abas šīs līnijas ir “sinhronas” “divvirzienu” “atvērtas kanalizācijas” un ir “uzvilktas ar rezistoriem”.

I2C kopņu tehnoloģiju sākotnēji izstrādāja Philips Semiconductors 80. gadu sākumā, lai varētu viegli sazināties starp komponentiem, kas atrodas vienā shēmas plates.

Izmantojot I2C, jūs varat savienot vairākus vergus ar vienu galveno (piemēram, SPI), vai arī jums var būt vairāki vadītāji, kas kontrolē vienu vai vairākus vergus. Gan saimnieki, gan vergi var pārsūtīt un saņemt datus. Tātad I2C kopnes ierīce var būt vienā no šiem četriem stāvokļiem:

* Galvenais pārraide - galvenais mezgls sūta datus vergam* Galvenais saņemšana - galvenais mezgls saņem datus no verga

* Vergu pārraide - vergu mezgls sūta datus kapteinim

* Vergu saņemšana - vergu mezgls saņem datus no kapteiņa

I2C ir “neliela attāluma” sērijas sakaru protokols, tāpēc dati tiek pārsūtīti “pa bitiem” pa vienu vadu vai SDA līniju. Bitu izvade tiek sinhronizēta ar bitu paraugu ņemšanu ar pulksteņa signālu, kas ir “kopīgs” starp galveno un vergu. Pulksteņa signālu vienmēr kontrolē kapteinis. Meistars ģenerē pulksteni un uzsāk sakarus ar vergiem.

Tātad, apkopojot>

Izmantoto vadu skaits: 2

Sinhronais vai asinhronais: sinhronais

Sērijas vai paralēles: sērijas

Pulksteņa signālu kontrolē: galvenais mezgls

Izmantotie spriegumi: +5 V vai +3,3 V

Maksimālais maģistru skaits: neierobežots

Maksimālais vergu skaits: 1008

Maksimālais ātrums: standarta režīms = 100 kbps

Ātrais režīms = 400 kbps

Ātrgaitas režīms = 3,4 Mb / s

Īpaši ātrs režīms = 5 Mb / s

4. darbība: TCA9548A I2C multipleksora modulis

TCA9548A I2C multipleksora modulis
TCA9548A I2C multipleksora modulis
TCA9548A I2C multipleksora modulis
TCA9548A I2C multipleksora modulis
TCA9548A I2C multipleksora modulis
TCA9548A I2C multipleksora modulis

TCA9548A ir astoņu kanālu (divvirzienu) I2C multipleksors, kas ļauj astoņas atsevišķas I2C ierīces vadīt ar vienu I2C kopni. Jums vienkārši jāpievieno I2C sensori SCn / SDn multipleksētajām kopnēm. Piemēram, ja lietojumprogrammā ir nepieciešami astoņi identiski OLED displeji, katram no šiem displejiem var pievienot vienu no šiem kanāliem: 0-7.

Multiplekseris savienojas ar mikrokontrollera VIN, GND, SDA un SCL līnijām. Izlaušanas dēlis pieņem VIN no 1.65v līdz 5.5v. Gan ievades SDA, gan SCL līnijas ir savienotas ar VCC, izmantojot 10K pievilkšanas rezistoru (Pievilkšanas rezistora lielumu nosaka I2C līniju kapacitātes apjoms). Multiplekseris atbalsta gan parastos (100 kHz), gan ātros (400 kHz) I2C protokolus. Visas TCA9548A I/O tapas ir izturīgas pret 5 voltiem, un tās var izmantot arī, lai pārveidotu no augsta uz zemu vai zemu līdz augstu spriegumu.

Visiem TCA9548A kanāliem ir ieteicams uzvilkt pretestības rezistorus, pat ja spriegums ir vienāds. Iemesls tam ir iekšējais NMOS slēdzis. Tas ļoti labi nepārraida augstspriegumu, no otras puses, tas ļoti labi pārraida zemu spriegumu. TCA9548A var izmantot arī sprieguma pārveidošanai, ļaujot katram SCn/SDn pārim izmantot dažādus kopnes spriegumus tā, lai 1,8 V, 2,5 V vai 3,3 V daļas varētu sazināties ar 5 V daļām. Tas tiek panākts, izmantojot ārējos uzvilkšanas rezistorus, lai autobusu paceltu līdz vajadzīgajam spriegumam galvenajam un katram palīgkanālam.

Ja mikrokontrolleris konstatē kopnes konfliktu vai citu nepareizu darbību, TCA9548A var atiestatīt, nosakot zemo vērtību RESET tapai.

5. darbība

Attēls
Attēls
Attēls
Attēls
Attēls
Attēls

TCA9548 ļauj vienam mikrokontrollerim sazināties ar līdz pat 64 sensoriem, kuriem visiem ir viena un tā pati vai atšķirīga I2C adrese, piešķirot unikālu kanālu katrai sensoru sekotāja apakšsistēmai.

Kad mēs runājam par datu nosūtīšanu pa 2 vadiem uz vairākām ierīcēm, mums ir nepieciešams veids, kā tos risināt. Tas pats, kas pastnieks ierodoties pa vienu ceļu un izmetot pasta paketes uz dažādām mājām, jo uz tām ir rakstītas dažādas adreses.

Lai kontrolētu 64 vienas un tās pašas I2C adresētās daļas, maksimāli 8 no šiem multipleksoriem varētu būt savienoti kopā ar 0x70-0x77 adresēm. Savienojot trīs adreses bitus A0, A1 un A2 ar VIN, jūs varat iegūt atšķirīgu adrešu kombināciju. Šādi izskatās TCA9548A adreses baits. Pirmie 7 biti apvienojas, veidojot verga adresi. Pakalpojuma adreses pēdējais bits nosaka veicamo darbību (lasīšanu vai rakstīšanu). Ja tas ir augsts (1), tiek izvēlēta lasīšana, bet zema (0) - rakstīšanas darbība.

6. darbība. Kā meistars nosūta un saņem datus

Kā meistars sūta un saņem datus
Kā meistars sūta un saņem datus
Kā meistars sūta un saņem datus
Kā meistars sūta un saņem datus

Tālāk ir sniegta vispārīga procedūra, kā kapteinis var piekļūt vergu ierīcei:

1. Ja meistars vēlas nosūtīt datus vergam (WRITES):

-Galvenais raidītājs nosūta START nosacījumu, kam seko vergu uztvērēja adreses un R/W ir iestatīts uz 0

-Galvenais raidītājs nosūta datus 8 bitu vadības reģistros vergu uztvērējam, kad vergs apstiprina, ka ir gatavs

-Galvenais raidītājs pārtrauc pārsūtīšanu ar STOP nosacījumu

2. Ja meistars vēlas saņemt vai lasīt datus no verga (READS):

-Galvenais uztvērējs nosūta START nosacījumu, kam seko vergu uztvērēja adreses, un R/W ir iestatīts uz 1

-Galvenais uztvērējs nosūta pieprasīto reģistru nolasīšanai vergu raidītājam

-Galvenais uztvērējs saņem datus no palīgraida

- Kad visi baiti ir saņemti, meistars nosūta NACK signālu vergam, lai pārtrauktu sakarus un atbrīvotu kopni

- Galvenais uztvērējs pārtrauc pārsūtīšanu ar STOP nosacījumu

Autobuss tiek uzskatīts par dīkstāvi, ja gan SDA, gan SCL līnijas pēc STOP nosacījuma ir augstas.

7. darbība: kods

Kods
Kods

Tagad Int kods ļauj sākt, iekļaujot bibliotēku "Wire" un nosakot multipleksoru adresi.

#ietver "Wire.h"

#include "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Kodētāju adrese

Pēc tam mums jāizvēlas ports, ar kuru vēlamies sazināties, un jānosūta dati par to, izmantojot šo funkciju:

void selectI2CChannels (uint8_t i) {

ja (i> 7) atgriežas;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Tālāk mēs inicializēsim displeju iestatīšanas sadaļā, izsaucot "u8g.begin ();" katram displejam, kas pievienots MUX "tcaselect (i);"

Pēc inicializācijas mēs varam darīt visu, ko vēlamies, vienkārši izsaucot funkciju "tcaselect (i);" kur "i" ir multipleksētās kopnes vērtība un pēc tam attiecīgi nosūta datus un pulksteni.

8. darbība: I2C skeneris

I2C skeneris
I2C skeneris

Tikai gadījumā, ja neesat pārliecināts par sava I2C vairoga ierīces adresi, palaidiet pievienoto “I2C skenera” kodu, lai atrastu savas ierīces heksadecimālo adresi. Kad skice tiek ielādēta Arduino, tā skenēs I2C tīklu, parādot atbildes adreses.

9. solis: Elektroinstalācija un demonstrācija

Elektroinstalācija un demonstrācija
Elektroinstalācija un demonstrācija
Elektroinstalācija un demonstrācija
Elektroinstalācija un demonstrācija

Elektroinstalācija:

Sāksim, savienojot multipleksoru ar NodeMCU plati. Savienot:

VIN līdz 5V (vai 3.3V)

GND uz zemes

SDA līdz D2 un

SCL līdz D1 tapas attiecīgi

Lai izveidotu Arduino plati, izveidojiet savienojumu:

VIN līdz 5V (vai 3.3V)

GND uz zemes

SDA līdz A4 un

SCL līdz A5 tapas attiecīgi

Kad MUX ir pievienots mikrokontrolleram, jums vienkārši jāpievieno sensori SCn / SDn pāriem.

Tagad apskatīsim šo ātro demonstrāciju, kurā esmu savienojis 8 OLED displejus ar TCA9548A multipleksoru. Tā kā šie displeji izmanto I2C sakarus, tie sazinās ar Arduino, izmantojot tikai 2 tapas.

10. solis: priekšrocības un trūkumi

Priekšrocības un trūkumi
Priekšrocības un trūkumi

Priekšrocības

* Komunikācijai nepieciešamas tikai divas autobusu līnijas (vadi)

* Starp visām sastāvdaļām pastāv vienkāršas saimnieka/verga attiecības

* Nav stingru pārraides ātruma prasību, piemēram, ar RS232, galvenais ģenerē kopnes pulksteni

* Aparatūra ir mazāk sarežģīta nekā UART

* Atbalsta vairākus saimniekus un vairākus vergus

* Bits ACK/NACK apstiprina, ka katrs kadrs ir veiksmīgi pārsūtīts

* I2C ir “īsta vairāku kapteiņu kopne”, kas nodrošina šķīrējtiesas un sadursmes noteikšanu

* Katra ierīce, kas pievienota kopnei, ir programmatiski adresējama ar unikālu adresi

* Lielākā daļa I2C ierīču var sazināties 100 kHz vai 400 kHz frekvencē

* I²C ir piemērots perifērijas ierīcēm, kurās vienkāršība un zemas ražošanas izmaksas ir svarīgākas par ātrumu

* Labi zināms un plaši izmantots protokols

TRŪKUMI

* Lēnāks datu pārsūtīšanas ātrums nekā SPI

* Datu rāmja izmērs ir ierobežots līdz 8 bitiem

* Īstenošanai nepieciešama sarežģītāka aparatūra nekā SPI tehnoloģija

Ieteicams: