Satura rādītājs:
- 1. darbība. Aparatūras prasības
- 2. darbība: aptvertās tēmas
- 3. darbība: I2C kopnes pamati
- 4. darbība: TCA9548A I2C multipleksora modulis
- 5. darbība
- 6. darbība. Kā meistars nosūta un saņem datus
- 7. darbība: kods
- 8. darbība: I2C skeneris
- 9. solis: Elektroinstalācija un demonstrācija
- 10. solis: priekšrocības un trūkumi
- 11. solis: Paldies
Video: TCA9548A I2C multipleksora modulis - ar Arduino un NodeMCU: 11 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
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
Š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
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 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
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
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
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
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:
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
* 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:
Pamācība: Kā Arduino kontrolē vairākas vienas adreses ierīces, izmantojot TCA9548A I2C multipleksoru: 3 soļi
Pamācība: Kā Arduino kontrolē vairākas vienas adreses ierīces, izmantojot TCA9548A I2C multipleksoru: Apraksts: TCA9548A I2C multipleksora modulis ļauj savienot ierīces ar vienu un to pašu I2C adresi (līdz 8 vienādām adresēm I2C), kas savienotas ar vienu mikrokontrolleri. Multiplekseris darbojas kā vārtsargs, pārsūtot komandas uz izvēlēto kopu
Uber I2C LCD kontroliera modulis: 6 soļi
Uber I2C LCD kontrollera modulis: preambulaŠajā pamācībā ir sīki aprakstīts, kā izveidot HD44780 LCD vadības moduli (1. attēls iepriekš). Modulis ļauj lietotājam programmatiski kontrolēt visus LCD aspektus, izmantojot I2C, kas ietver: LCD un displejs, kontrasts un apgaismojuma intensitāte
1602 LCD tastatūras vairoga modulis ar I2C mugursomu: 6 soļi
1602 LCD tastatūras vairoga modulis ar I2C mugursomu: Lielāka projekta ietvaros es vēlējos, lai būtu LCD displejs un tastatūra dažu vienkāršu izvēlņu navigācijai. Es izmantošu daudzus Arduino I/O portus citiem darbiem, tāpēc es gribēju LCD I2C saskarni. Tāpēc es nopirku aparatūru
ESP8266 -NODEMCU $ 3 WiFi modulis Nr. 2 - bezvadu tapas, kas kontrolē tīmekļa lapu: 9 soļi (ar attēliem)
ESP8266 -NODEMCU 3 USD WiFi modulis Nr. 2 - bezvadu tapas, kas kontrolē, izmantojot TĪMEKĻA LAPA: Ir sasniegta jauna šo mikrodatoru pasaule, un šī lieta ir ESP8266 NODEMCU. Šī ir pirmā daļa, kas parāda, kā jūs varētu instalēt esp8266 vidi savā arduino IDE, izmantojot sākuma video un kā daļas
ESP8266-NODEMCU 3 USD WiFi modulis Nr. 1- Darba sākšana ar WiFi: 6 soļi
ESP8266-NODEMCU 3 USD WiFi modulis Nr. 1- Darba sākšana ar WiFi: ir sasniegta jauna šo mikro skaitļošanas pasaule, un šī lieta ir ESP8266 NODEMCU. Šī ir pirmā daļa, kas parāda, kā jūs varētu instalēt esp8266 vidi savā arduino IDE, izmantojot sākuma video un kā detaļas