Բովանդակություն:

TCA9548A I2C Multiplexer մոդուլ - Arduino- ով և NodeMCU- ով ՝ 11 քայլ
TCA9548A I2C Multiplexer մոդուլ - Arduino- ով և NodeMCU- ով ՝ 11 քայլ

Video: TCA9548A I2C Multiplexer մոդուլ - Arduino- ով և NodeMCU- ով ՝ 11 քայլ

Video: TCA9548A I2C Multiplexer մոդուլ - Arduino- ով և NodeMCU- ով ՝ 11 քայլ
Video: How to Make PLC LCD HMI || FLProg 2024, Նոյեմբեր
Anonim
Image
Image

Դուք երբևէ պատահե՞լ է այնպիսի իրավիճակի, երբ ստիպված լինեիք երկու, երեք կամ ավելի I2C սենսորներ միացնել ձեր Arduino- ին ՝ միայն հասկանալու համար, որ տվիչներն ունեն ֆիքսված կամ նույն I2C հասցեն: Ավելին, դուք չեք կարող ունենալ նույն հասցեով երկու սարք նույն SDA/SCL կապում:

Այսպիսով, որո՞նք են ձեր տարբերակները: Տեղադրեք դրանք բոլորը TCA9548A 1-ից -8 I2C մուլտիպլեքսերի վրա, որպեսզի նրանք բոլորը միմյանց հետ խոսեն նույն ավտոբուսում: TCA9548A Breakout- ը հնարավորություն է տալիս հաղորդակցվել մի քանի I2C սարքերի հետ, որոնք ունեն նույն հասցեն, ինչը հեշտացնում է նրանց հետ ինտերֆեյսը:

Քայլ 1: Սարքավորման պահանջ

Topածկված թեմաներ
Topածկված թեմաներ

Այս ձեռնարկի համար մեզ անհրաժեշտ է.

- Breadboard

- TCA9548A I2C մուլտիպլեքսեր

- Arduino Uno/Nano այն, ինչ ձեռնտու է

- NodeMCU

- Մի քանի 0.91 և 0.96 I2C OLED էկրան

- Թռիչքային մալուխներ, և

- USB մալուխ ՝ ծածկագիրը վերբեռնելու համար

Քայլ 2: Topածկված թեմաներ

Մենք մեր քննարկումը կսկսենք ՝ հասկանալով I2C տեխնոլոգիայի հիմունքները

Այնուհետև մենք կիմանանք TCA9548A Multiplexer- ի և այն մասին, թե ինչպես է վարպետն ու ստրուկը տվյալներ ուղարկում և ստանում ՝ օգտագործելով I2C տեխնոլոգիան: Հետո մենք ստուգելու ենք, թե ինչպես կարող ենք ծրագրավորել և օգտագործել մեր նախագծում մուլտիպլեքսերը Arduino- ի և NodeMCU- ի միջոցով: Հաջորդը, ես ձեզ արագ ցույց կտամ ցուցադրում ՝ օգտագործելով 8 I2C OLED էկրան և վերջապես մենք կավարտենք ձեռնարկը ՝ քննարկելով TCA9548A Multiplexer- ի առավելություններն ու թերությունները

Քայլ 3. I2C ավտոբուսի հիմունքները

I2C ավտոբուսի հիմունքները
I2C ավտոբուսի հիմունքները
I2C ավտոբուսի հիմունքները
I2C ավտոբուսի հիմունքները
I2C ավտոբուսի հիմունքները
I2C ավտոբուսի հիմունքները

Ինտեգրված սխեմա, որն արտասանվում է I-squared-C (I²C) կամ I2C, երկու մետաղալար ավտոբուսի տեխնոլոգիա է (իրականում 4 լար, քանի որ ձեզ նույնպես անհրաժեշտ է VCC և Ground), որն օգտագործվում է բազմաթիվ պրոցեսորների և տվիչների միջև հաղորդակցության համար:

Երկու լարերն են.

* SDA - Սերիական տվյալներ (տվյալների տող) և

* SCL - Սերիական ժամացույց (ժամացույցի գիծ)

Հիշեք, որ այս երկու տողերն էլ «համաժամանակյա» են «երկկողմանի» «բաց արտահոսք» և «ձգված են ռեզիստորներով»:

I2C ավտոբուսների տեխնոլոգիան ի սկզբանե նախագծվել է Philips Semiconductors- ի կողմից 80 -ականների սկզբին `միևնույն տախտակի վրա գտնվող բաղադրիչների միջև հեշտ հաղորդակցվելու համար:

I2C- ով դուք կարող եք մի քանի ստրուկներ միացնել մեկ վարպետին (ինչպես SPI- ն) կամ կարող եք ունենալ բազմաթիվ վարպետներ, որոնք վերահսկում են միայնակ կամ բազմաթիվ ստրուկներ: Տերը և ստրուկները կարող են փոխանցել և ստանալ տվյալներ: Այսպիսով, I2C ավտոբուսի սարքը կարող է լինել այս չորս վիճակներից մեկում.

* Հիմնական փոխանցում - հիմնական հանգույցը տվյալներ է ուղարկում ստրուկին

* Ստրուկի փոխանցում - ստրուկի հանգույցը տվյալներ է ուղարկում վարպետին

* Ստրուկի ստացում - ստրուկի հանգույցը տվյալներ է ստանում վարպետից

I2C- ն «կարճ հեռավորության» «սերիական հաղորդակցության արձանագրություն» է, ուստի տվյալները «բիթ-բիթ» են փոխանցվում մեկ լարի կամ SDA գծի երկայնքով: Բիթերի ելքը համաժամացվում է բիթերի նմուշառման հետ `տիրոջ և ստրուկի միջև« կիսված »ժամացույցի ազդանշանի միջոցով: Theամացույցի ազդանշանը միշտ վերահսկվում է վարպետի կողմից: Վարպետը ստեղծում է ժամացույցը և սկսում հաղորդակցություն ստրուկների հետ:

Այսպիսով, ամփոփելու համար>

Օգտագործված լարերի քանակը `2

Սինխրոն կամ Ասինխրոն. Սինխրոն

Սերիալ կամ զուգահեռ `սերիալ

Ockամացույցի ազդանշանը վերահսկվում է ՝ Master Node- ի կողմից

Օգտագործված լարումները ՝ +5 Վ կամ +3,3 Վ

Մագիստրոսների առավելագույն թիվը `անսահմանափակ

Ստրուկների առավելագույն թիվը `1008

Առավելագույն արագություն. Ստանդարտ ռեժիմ = 100 կբիթ / վրկ

Արագ ռեժիմ = 400 kbps

Բարձր արագության ռեժիմ = 3.4 Մբիթ / վրկ

Ուլտրա արագ ռեժիմ = 5 Մբիթ / վրկ

Քայլ 4: TCA9548A I2C Multiplexer մոդուլ

TCA9548A I2C Multiplexer մոդուլ
TCA9548A I2C Multiplexer մոդուլ
TCA9548A I2C Multiplexer մոդուլ
TCA9548A I2C Multiplexer մոդուլ
TCA9548A I2C Multiplexer մոդուլ
TCA9548A I2C Multiplexer մոդուլ

TCA9548A- ն ութ ալիքով (երկկողմանի) I2C մուլտիպլեքսեր է, որը թույլ է տալիս ութ առանձին I2C սարքեր կառավարել մեկ ընդունող I2C ավտոբուսի միջոցով: Պարզապես պետք է I2C սենսորները միացնել SCn / SDn բազմապլան ավտոբուսներին: Օրինակ, եթե ծրագրում անհրաժեշտ է ութ միանման OLED էկրան, յուրաքանչյուր ցուցադրումից մեկը կարող է միացվել այս ալիքներից յուրաքանչյուրին ՝ 0-7:

Multiplexer- ը միանում է միկրոհսկիչի VIN, GND, SDA և SCL գծերին: Բեկումի տախտակն ընդունում է VIN ՝ 1.65 վ -ից մինչև 5.5 վ: Երկու մուտքային SDA և SCL գծերը միացված են VCC- ին 10K ձգվող դիմադրության միջոցով (քաշվող դիմադրության չափը որոշվում է I2C գծերի հզորության չափով): Multiplexer- ն աջակցում է ինչպես նորմալ (100 կՀց), այնպես էլ արագ (400 կՀց) I2C արձանագրություններին: TCA9548A- ի բոլոր I/O կապումներն ունեն 5 վոլտ հանդուրժողականություն և կարող են օգտագործվել նաև բարձրից ցածրից կամ ցածրից բարձր լարման թարգմանելու համար:

Լավ գաղափար է TCA9548A- ի բոլոր ալիքների վրա ձգվող դիմադրիչներ դնելը, նույնիսկ եթե լարումները նույնն են: Դրա պատճառն ներքին NMOS անջատիչն է: Այն շատ լավ չի փոխանցում բարձր լարման, մյուս կողմից այն շատ լավ է փոխանցում ցածր լարման: TCA9548A- ն կարող է օգտագործվել նաև Լարման թարգմանության համար ՝ թույլ տալով օգտագործել տարբեր ավտոբուսային լարումներ յուրաքանչյուր SCn/SDn զույգի վրա այնպես, որ 1.8-V, 2.5-V կամ 3.3-V մասերը կարողանան հաղորդակցվել 5-V մասերի հետ: Դա ձեռք է բերվում արտաքին ձգվող դիմադրիչների միջոցով `ավտոբուսը վարպետի և յուրաքանչյուր ստրուկի ալիքի համար մինչև ցանկալի լարման հասցնելու համար:

Եթե միկրոհսկիչը հայտնաբերում է ավտոբուսի կոնֆլիկտ կամ այլ ոչ պատշաճ գործողություն, ապա TCA9548A- ն կարող է վերականգնվել `RESET- ի պինին ցածր պնդելով:

Քայլ 5:

Պատկեր
Պատկեր
Պատկեր
Պատկեր
Պատկեր
Պատկեր

TCA9548- ը թույլ է տալիս մեկ միկրոհսկիչին հաղորդակցվել մինչև «64 սենսորների» հետ, որոնք ունեն նույն կամ տարբեր I2C հասցե ՝ յուրաքանչյուր սենսորային ստրոբուսին հատկացնելով յուրահատուկ ալիք:

Երբ մենք խոսում ենք երկու սարքերի վրա տվյալներ ուղարկելու մասին բազմաթիվ սարքեր, ապա մեզ անհրաժեշտ է դրանց հասցեագրման միջոց: Դա նույնն է, ինչ փոստատարը գա մեկ ճանապարհով և փոստի փաթեթները գցի տարբեր տներ, քանի որ դրանց վրա տարբեր հասցեներ են գրված:

Այս մուլտիպլեքսերներից առավելագույնը 8-ը կարող եք միացված լինել 0x70-0x77 հասցեների վրա `նույն I2C հասցեագրված մասերից 64-ը վերահսկելու համար: A0, A1 և A2 հասցեների երեք բիթերը VIN- ին միացնելով կարող եք ստանալ հասցեների տարբեր համադրություն: Այսպես է թվում TCA9548A հասցեի բայթը: Առաջին 7 բիթերը միավորվում են ՝ ստեղծելով ստրուկի հասցեն: Ստրուկի հասցեի վերջին բիթը սահմանում է կատարվելիք գործողությունը (կարդալ կամ գրել): Երբ այն բարձր է (1), ընտրվում է ընթերցում, իսկ ցածրը (0) ՝ գրելու գործողություն:

Քայլ 6. Ինչպես է վարպետն ուղարկում և ստանում տվյալներ

Ինչպես է վարպետը ուղարկում և ստանում տվյալներ
Ինչպես է վարպետը ուղարկում և ստանում տվյալներ
Ինչպես է վարպետն ուղարկում և ստանում տվյալներ
Ինչպես է վարպետն ուղարկում և ստանում տվյալներ

Ստորև բերված է վարպետի ՝ ստրուկ սարք մուտք գործելու ընդհանուր ընթացակարգը.

1. Եթե վարպետը ցանկանում է տվյալներ ուղարկել ստրուկին (ԳՐՈESՄ է).

-Գլխավոր հաղորդիչը ուղարկում է START վիճակ, որին հաջորդում են ստրուկ-ստացողի հասցեները և R/W- ը `0:

-Գլխավոր հաղորդիչը «8-բիթանոց կառավարման մատյաններում» տվյալներ է ուղարկում ստրուկ-ստացողին, երբ ստրուկը ընդունում է, որ պատրաստ է

-Գլխավոր հաղորդիչը դադարեցնում է փոխանցումը STOP պայմանով

2. Եթե վարպետը ցանկանում է ստանալ կամ կարդալ տվյալներ ստրուկից (READS).

-Գլխավոր ստացողը ուղարկում է START վիճակ, որին հաջորդում են ստրուկ-ստացողի հասցեները և R/W- ը `1:

-Գլխավոր ընդունիչն ուղարկում է պահանջվող գրանցամատյանը `ստրուկ-հաղորդիչին կարդալու համար

-Վարպետ-ստացողը տվյալներ է ստանում ստրուկ-հաղորդիչից

- Բոլոր բայթերը ստանալուց հետո վարպետը NACK ազդանշան է ուղարկում ստրուկին `դադարեցնելու հաղորդակցությունները և ազատելու ավտոբուսը

- Գլխավոր ստացողը դադարեցնում է փոխանցումը STOP պայմանով

Ավտոբուսը համարվում է անգործուն, եթե և՛ SDA, և՛ SCL գծերը բարձր են STOP- ի վիճակից հետո:

Քայլ 7: Կոդ

Կոդ
Կոդ

Այժմ, Int կոդը թույլ է տալիս սկսել ՝ ներառելով «Մետաղալար» գրադարանը և բազմապատկիչների հասցեն սահմանելով:

#ներառել «Wire.h»

#ներառել «U8glib.h»

#սահմանեք MUX_Հասցե 0x70 // TCA9548A Կոդավորիչների հասցե

Այնուհետև մենք պետք է ընտրենք այն նավահանգիստը, որին ցանկանում ենք հաղորդակցվել և դրա վերաբերյալ տվյալները ուղարկել այս գործառույթի միջոցով.

անվավեր selectI2CChannels (uint8_t i) {

եթե (i> 7) վերադարձ;

Wire.beginTransmission (MUX_ Հասցե);

Wire.write (1 << i);

Wire.endTransmission ();

}

Հաջորդը մենք նախաստորագրելու ենք ցուցադրման կարգաբերման բաժինը `զանգահարելով« u8g.begin (); »; MUX- ին կցված յուրաքանչյուր ցուցադրման համար "tcaselect (i);"

Նախաստորագրվելուց հետո մենք կարող ենք անել այն, ինչ ուզում ենք, պարզապես գործառույթը կանչելով «tcaselect (i);»: որտեղ «i» - ը բազմապատկված ավտոբուսի արժեքն է, այնուհետև տվյալներն ու ժամացույցը համապատասխանաբար ուղարկելը:

Քայլ 8: I2C սկաներ

I2C սկաներ
I2C սկաներ

Եթե վստահ չեք ձեր I2C վահանի սարքի հասցեի մասին, ապա գործարկեք կցված «I2C սկաների» ծածկագիրը ՝ ձեր սարքի վեցանկյուն հասցեն գտնելու համար: Arduino- ում բեռնվելիս էսքիզը սկանավորելու է I2C ցանցը ՝ ցուցադրելով արձագանքող հասցեները:

Քայլ 9: Էլեկտրամոնտաժ և ցուցադրում

Մոնտաժում և ցուցադրում
Մոնտաժում և ցուցադրում
Մոնտաժում և ցուցադրում
Մոնտաժում և ցուցադրում

Հաղորդալարեր.

Եկեք սկսենք մուլտիպլեքսերը միացնելով NodeMCU տախտակին: Միացնել:

VIN- ից 5V (կամ 3.3V)

GND գետնին

SDA- ից D2 և

Համապատասխանաբար SCL- ից D1 կապում

Arduino տախտակի համար միացեք.

VIN- ից 5V (կամ 3.3V)

GND գետնին

SDA դեպի A4 և

Համապատասխանաբար SCL- ից A5 կապում

Երբ MUX- ը միացված է միկրոհսկիչին, պարզապես անհրաժեշտ է սենսորները միացնել SCn / SDn զույգերին:

Այժմ, եկեք ստուգենք այս արագ ցուցադրումը, որում ես միացրել եմ 8 OLED էկրան TCA9548A Multiplexer- ին: Քանի որ այս էկրաններն օգտագործում են I2C հաղորդակցություն, նրանք շփվում են Arduino- ի հետ ՝ օգտագործելով ընդամենը 2 կապում:

Քայլ 10: Առավելություններն ու թերությունները

Առավելություններն ու թերությունները
Առավելություններն ու թերությունները

Առավելությունները

* Կապի համար անհրաժեշտ է ընդամենը երկու ավտոբուսային գիծ (լարեր)

* Բոլոր բաղադրիչների միջև գոյություն ունեն պարզ վարպետ/ստրուկ հարաբերություններ

* Բաուդ արագության խիստ պահանջներ չկան, ինչպես օրինակ RS232- ով, վարպետը ստեղծում է ավտոբուսի ժամացույց

* Սարքավորումը ավելի քիչ բարդ է, քան UART- ները

* Աջակցում է բազմաթիվ վարպետների և բազմաթիվ ստրուկների

* ACK/NACK բիթը տալիս է հաստատում, որ յուրաքանչյուր շրջանակ հաջողությամբ փոխանցվում է

* I2C- ն «իսկական բազմավաստակ ավտոբուս» է, որն ապահովում է արբիտրաժ և բախումների հայտնաբերում

* Ավտոբուսին միացված յուրաքանչյուր սարք ծրագրային հասցեավորված է յուրահատուկ հասցեով

* I2C սարքերի մեծ մասը կարող է հաղորդակցվել 100kHz կամ 400kHz հաճախականությամբ

* I²C- ը հարմար է ծայրամասային սարքավորումների համար, որտեղ պարզությունն ու արտադրության ցածր արժեքը ավելի կարևոր են, քան արագությունը

* Հայտնի և լայնորեն կիրառվող արձանագրություն

Թերություններ

* Տվյալների փոխանցման ավելի դանդաղ արագություն, քան SPI- ն

* Տվյալների շրջանակի չափը սահմանափակված է 8 բիթով

* Իրականացման համար անհրաժեշտ է ավելի բարդ սարքավորում, քան SPI տեխնոլոգիան

Խորհուրդ ենք տալիս: