Mundarija:

TCA9548A I2C Multiplexer moduli - Arduino va NodeMCU bilan: 11 qadam
TCA9548A I2C Multiplexer moduli - Arduino va NodeMCU bilan: 11 qadam

Video: TCA9548A I2C Multiplexer moduli - Arduino va NodeMCU bilan: 11 qadam

Video: TCA9548A I2C Multiplexer moduli - Arduino va NodeMCU bilan: 11 qadam
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Sentyabr
Anonim
Image
Image

Siz qachondir shunday vaziyatga tushib qolganmisizki, datchiklar I2C -ning aniq yoki bir xil manziliga ega ekanligini bilish uchun Arduino -ga ikki, uch yoki undan ko'p I2C sensorlarini ulashingiz kerak bo'ladi. Bundan tashqari, siz bir xil SDA/SCL pinlarida bir xil manzilga ega ikkita qurilmaga ega bo'lolmaysiz!

Xo'sh, sizning variantlaringiz qanday? Hammasini bitta avtobusda bir-birlari bilan gaplashish uchun TCA9548A 1 dan 8 gacha I2C multipleksoriga qo'ying! TCA9548A Breakout bir xil manzilga ega bo'lgan bir nechta I2C qurilmalari bilan aloqa o'rnatishga imkon beradi, ular bilan aloqa o'rnatishni osonlashtiradi.

1 -qadam: Uskuna talablari

Qabul qilingan mavzular
Qabul qilingan mavzular

Bu darslik uchun bizga kerak:

- Non paneli

- TCA9548A I2C multipleksor

- Arduino Uno/Nano nima qulay bo'lsa

- NodeMCU

- Bir nechta 0,91 va 0,96 I2C OLED displeylari

- o'tish kabellari va

- Kodni yuklash uchun USB kabeli

2 -qadam: Mavzular

Biz munozaramizni I2C texnologiyasi asoslarini tushunishdan boshlaymiz

Keyin biz TCA9548A Multiplexer va xo'jayin va qul I2C texnologiyasidan foydalangan holda ma'lumotlarni qanday yuborishi va qabul qilishi haqida bilib olamiz, keyin biz Arduino va NodeMCU yordamida loyihamizda multipleksorni qanday dasturlashimiz va ishlatishimiz mumkinligini ko'rib chiqamiz. demo 8 I2C OLED -displey yordamida va nihoyat biz TCA9548A Multiplexer -ning afzalliklari va kamchiliklarini muhokama qilib, darslikni yakunlaymiz.

3 -qadam: I2C avtobusining asoslari

I2C avtobusining asoslari
I2C avtobusining asoslari
I2C avtobusining asoslari
I2C avtobusining asoslari
I2C avtobusining asoslari
I2C avtobusining asoslari

I-kvadratli C (I²C) yoki I2C deb nomlangan birlashtirilgan elektron sxemasi-bu ikkita protsessor va sensorlar o'rtasida aloqa qilish uchun ishlatiladigan ikkita simli avtobus texnologiyasi (aslida 4 simli, chunki sizga VCC va Ground ham kerak).

Ikkita sim:

* SDA - ketma -ket ma'lumotlar (ma'lumotlar liniyasi) va

* SCL - Seriyali soat (soat chizig'i)

Esingizda bo'lsin, bu ikkala chiziq ham "sinxron" ikki tomonlama "ochiq drenaj" va "qarshilik bilan tortilgan".

I2C avtobus texnologiyasi dastlab 80 -yillarning boshlarida Philips Semiconductors tomonidan bitta elektron platada joylashgan komponentlar o'rtasida oson aloqa o'rnatish uchun ishlab chiqilgan.

I2C yordamida siz bir nechta qullarni bitta masterga ulashingiz mumkin (SPI kabi) yoki bitta yoki bir nechta qulni boshqaradigan bir nechta ustalar bo'lishi mumkin. Xo'jayinlar ham, qullar ham ma'lumotlarni uzatishi va qabul qilishi mumkin. Shunday qilib, I2C avtobusidagi qurilma ushbu to'rt holatning birida bo'lishi mumkin:

* Asosiy uzatish - asosiy tugun ma'lumotni qulga yuboradi* Asosiy qabul - asosiy tugun ma'lumotni quldan oladi

* Qul uzatish - qul tugunlari ma'lumotlarni masterga yuboradi

* Qulni qabul qilish - qul tuguni xo'jayindan ma'lumotlarni oladi

I2C-"qisqa masofali" ketma-ket aloqa protokoli, shuning uchun ma'lumotlar bitta sim yoki SDA chizig'i bo'ylab "bit-byt" uzatiladi. Bitlarning chiqishi xo'jayin va qul o'rtasida "ulashilgan" soat signallari yordamida bitlarni tanlash bilan sinxronlashtiriladi. Soat signali har doim usta tomonidan boshqariladi. Usta soatni ishlab chiqaradi va qullar bilan muloqotni boshlaydi.

Xulosa qilib aytganda>

Ishlatilgan simlar soni: 2

Sinxron yoki asenkron: sinxron

Seriyali yoki parallel: ketma -ket

Soat signalini boshqaruvchi: Master tugun

Ishlatiladigan kuchlanish: +5 V yoki +3,3 V

Magistrlarning maksimal soni: cheksiz

Qullarning maksimal soni: 1008

Maksimal tezlik: standart rejim = 100 kbit / s

Tez rejim = 400 kbit / s

Yuqori tezlik rejimi = 3,4 Mbit / s

Ultra tez rejim = 5 Mbit / s

4 -qadam: TCA9548A I2C multipleksor moduli

TCA9548A I2C multipleksor moduli
TCA9548A I2C multipleksor moduli
TCA9548A I2C multipleksor moduli
TCA9548A I2C multipleksor moduli
TCA9548A I2C multipleksor moduli
TCA9548A I2C multipleksor moduli

TCA9548A-sakkiz kanalli (ikki tomonlama) I2C multipleksor bo'lib, u sakkizta alohida I2C qurilmasini bitta mezbon I2C avtobusi bilan boshqarishga imkon beradi. Siz faqat I2C datchiklarini SCn / SDn multipleksli avtobuslariga ulashingiz kerak. Masalan, agar ilovaga sakkizta bir xil OLED-displey kerak bo'lsa, har bir displeydan bittasi bu kanallarning har biriga ulanishi mumkin: 0-7.

Multiplexer mikro-boshqaruvchining VIN, GND, SDA va SCL liniyalariga ulanadi. Ajratish paneli VINni 1.65v dan 5.5v gacha qabul qiladi. Ikkala kirish SDA va SCL liniyalari VCC ga 10K tortish qarshiligi orqali ulanadi (tortish qarshiligining o'lchami I2C chiziqlaridagi sig'im miqdori bilan belgilanadi). Multipleksor oddiy (100 kHz) va tez (400 kHz) I2C protokollarini qo'llab -quvvatlaydi. TCA9548A-ning barcha kirish-chiqish pinlari 5 voltli bardoshli bo'lib, ular yuqori kuchlanishdan pastgacha yoki pastdan yuqori kuchlanishlarga o'tish uchun ham ishlatilishi mumkin.

TCA9548A ning barcha kanallariga, hatto kuchlanishlari bir xil bo'lsa ham, tortish rezistorlarini qo'yish yaxshi bo'ladi. Buning sababi ichki NMOS kaliti. U yuqori kuchlanishni juda yaxshi o'tkazmaydi, boshqa tomondan past kuchlanishlarni juda yaxshi o'tkazadi. TCA9548A kuchlanish tarjimasi uchun ham ishlatilishi mumkin, bu har bir SCn/SDn juftida har xil avtobus kuchlanishlarini ishlatishga imkon beradi, shunday qilib 1,8-V, 2,5-V yoki 3,3-V qismlari 5-V qismlari bilan aloqa qila oladi. Bunga avtobusni magistral va har bir qul kanal uchun kerakli kuchlanishga olib chiqish uchun tashqi tortuvchi rezistorlar yordamida erishiladi.

Agar mikrokontrolder avtobusda to'qnashuv yoki boshqa noto'g'ri ishlashni aniqlasa, TCA9548A ni RESET pinini past darajaga o'rnatish orqali tiklash mumkin.

5 -qadam:

Rasm
Rasm
Rasm
Rasm
Rasm
Rasm

TCA9548 bitta mikrokontrolderga har bir sensorli sub-avtobusga yagona kanal tayinlash orqali bir xil yoki har xil I2C manzili bo'lgan "64 ta sensorlar" bilan aloqa o'rnatishga imkon beradi.

Ma'lumotni bir nechta qurilmalarga 2 ta sim orqali yuborish haqida gapirganda, biz ularni hal qilish yo'lini topamiz. Bu pochtachining bitta yo'lda kelishi va pochta paketlarini har xil uylarga tashlab yuborishi bilan bir xil, chunki ular ustida turli manzillar yozilgan.

Siz bir xil I2C manzilli 64 qismni boshqarish uchun 0x70-0x77 manzillarga birlashtirilgan 8 ta multipleksorni ulashingiz mumkin. A0, A1 va A2 uchta manzil bitlarini VIN -ga ulash orqali siz manzillarning har xil kombinatsiyasini olishingiz mumkin. TCA9548A manzil bayti shunday ko'rinadi. Birinchi 7-bit birlashib, qul manzilini hosil qiladi. Qul manzilining oxirgi biti bajariladigan operatsiyani (o'qish yoki yozishni) belgilaydi. Agar u baland bo'lsa (1), o'qish tanlanadi, past (0) esa yozish jarayonini tanlaydi.

6 -qadam: usta ma'lumotni qanday yuboradi va oladi

Magistr ma'lumotni qanday yuboradi va oladi
Magistr ma'lumotni qanday yuboradi va oladi
Magistr ma'lumotni qanday yuboradi va oladi
Magistr ma'lumotni qanday yuboradi va oladi

Quyidagi uskuna qul qurilmaga kirishining umumiy tartibi:

1. Agar xo'jayin qulga ma'lumotlarni yubormoqchi bo'lsa (YOZADI):

-Master-transmitter START shartini yuboradi, keyin qul qabul qiluvchining manzillari va R/V 0 ga o'rnatiladi.

-Master-transmitter "8-bitli boshqaruv registrlari" dagi ma'lumotlarni qul qabul qiluvchiga yuboradi, agar qul tayyor ekanligini tan olganda.

-Master-transmitter STOP sharti bilan uzatishni to'xtatadi

2. Agar xo'jayin quldan ma'lumot olishni yoki o'qishni xohlasa (READS):

-Asosiy qabul qilgich START shartini yuboradi, keyin qul qabul qiluvchining manzillari va R/V 1 ga o'rnatiladi.

-Qabul qiluvchi-qabul qiluvchi talab qilingan registrni qul-uzatuvchiga o'qish uchun yuboradi

-Master-qabul qiluvchi ma'lumot uzatuvchi-uzatuvchi ma'lumotni oladi

- Barcha baytlar qabul qilingandan so'ng, Master NACK signalini xizmatkorga uzatishni to'xtatadi va avtobusni qo'yib yuboradi

- Master-qabul qiluvchi STOP sharti bilan uzatishni to'xtatadi

Agar STA holatidan keyin SDA va SCL liniyalari baland bo'lsa, avtobus bo'sh deb hisoblanadi.

7 -qadam: kod

Kod
Kod

Endi Int kodi "Wire" kutubxonasini qo'shish va multipleksorlarning manzilini aniqlash bilan boshlanadi.

#"Wire.h" ni qo'shing

#"U8glib.h" ni qo'shing

#dex MUX_Address 0x70 // TCA9548A Encoders manzilini aniqlang

Keyin biz aloqa qilmoqchi bo'lgan portni tanlashimiz va undagi ma'lumotlarni ushbu funktsiyadan foydalanib yuborishimiz kerak:

bekor qilingan IICChannels (uint8_t i) {

agar (i> 7) qaytsa;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Keyin "u8g.begin ();" deb qo'ng'iroq qilib, sozlash bo'limidagi displeyni ishga tushiramiz. MUX ga biriktirilgan har bir displey uchun "tcaselect (i);"

Boshlangandan so'ng, biz "tcaselect (i);" funktsiyasini chaqirib, xohlagan narsani qilishimiz mumkin. bu erda "i" - multipleksli avtobusning qiymati, so'ngra ma'lumot va soatni mos ravishda yuboradi.

8 -qadam: I2C skaneri

I2C skaner
I2C skaner

Agar siz I2C qalqonining qurilma manziliga ishonchingiz komil bo'lmasa, qurilmangizning oltilik manzilini topish uchun biriktirilgan 'I2C skaneri' kodini ishlating. Arduino -ga yuklanganda, eskiz javob berayotgan manzillarni ko'rsatib, I2C tarmog'ini skanerlaydi.

9 -qadam: simlar va demo

Simlar va demo
Simlar va demo
Simlar va demo
Simlar va demo

Ulanish:

Multiplexerni NodeMCU kartasiga ulashdan boshlaylik. Ulanmoq:

VIN - 5V (yoki 3.3V)

GND erga

SDA dan D2 gacha

SCL - D1 pinlari mos ravishda

Arduino platasi uchun ulang:

VIN - 5V (yoki 3.3V)

GND erga

SDA - A4 va boshqalar

SCL - A5 pinlari

MUX mikro-kontrollerga ulanganidan so'ng, datchiklarni SCn / SDn juftlariga ulash kifoya.

Keling, 8 ta OLED displeyni TCA9548A Multiplexer -ga ulagan tezkor demoni ko'rib chiqaylik. Bu displeylar I2C aloqasidan foydalanganligi uchun ular Arduino bilan atigi 2 ta pin yordamida aloqa o'rnatadilar.

10 -qadam: afzalliklari va kamchiliklari

Afzalliklari va kamchiliklari
Afzalliklari va kamchiliklari

Afzalliklari

* Aloqa uchun faqat ikkita avtobus liniyasi kerak (simlar)

* Barcha komponentlar o'rtasida oddiy xo'jayin/qul munosabatlari mavjud

* RS232 singari, tezlik uzatishda qat'iy talablar yo'q, usta avtobus soatini ishlab chiqaradi

* Uskuna UARTlarga qaraganda ancha murakkab

* Bir nechta xo'jayin va bir nechta qullarni qo'llab -quvvatlaydi

* ACK/NACK biti har bir freym muvaffaqiyatli o'tkazilganligini tasdiqlaydi

* I2C-bu hakamlik va to'qnashuvlarni aniqlashni ta'minlaydigan "haqiqiy ko'p tarmoqli avtobus"

* Avtobusga ulangan har bir qurilma o'ziga xos manzillar bilan dasturiy ta'minot bilan ta'minlanadi

* Aksariyat I2C qurilmalari 100 kHz yoki 400 kHz tezlikda muloqot qila oladi

* I²C periferiya qurilmalariga mos keladi, bu erda ishlab chiqarishning soddaligi va arzonligi tezlikdan muhimroq

* Ma'lum va keng qo'llaniladigan protokol

Kamchiliklari

* Ma'lumot uzatish tezligi SPIga qaraganda sekinroq

* Ma'lumotlar ramkasining o'lchami 8 bit bilan cheklangan

* SPI texnologiyasidan ko'ra murakkabroq uskunalar kerak

Tavsiya: