Obsah:

Modul multiplexera TCA9548A I2C - s Arduino a NodeMCU: 11 krokov
Modul multiplexera TCA9548A I2C - s Arduino a NodeMCU: 11 krokov

Video: Modul multiplexera TCA9548A I2C - s Arduino a NodeMCU: 11 krokov

Video: Modul multiplexera TCA9548A I2C - s Arduino a NodeMCU: 11 krokov
Video: PCF8574 GPIO Extender - With Arduino and NodeMCU 2024, November
Anonim
Image
Image

Dostali ste sa niekedy do situácie, keď ste museli k svojmu Arduinu zapojiť dva, tri alebo viac senzorov I2C, aby ste si uvedomili, že senzory majú pevnú alebo rovnakú adresu I2C. Navyše nemôžete mať dve zariadenia s rovnakou adresou na rovnakých pinoch SDA/SCL!

Aké sú teda vaše možnosti? Dajte ich všetky do multiplexera TCA9548A 1 až 8 I2C TCA9548A, aby ich všetky mohli navzájom hovoriť v tej istej zbernici! TCA9548A Breakout umožňuje komunikáciu s viacerými zariadeniami I2C, ktoré majú rovnakú adresu, a uľahčuje tak s nimi prepojenie.

Krok 1: Hardvérová požiadavka

Zahrnuté témy
Zahrnuté témy

Na tento tutoriál potrebujeme:

- Breadboard

- Multiplexor TCA9548A I2C

- Arduino Uno/Nano, čo je praktické

- NodeMCU

- Niekoľko displejov OLED 0,91 a 0,96 I2C

- prepojovacie káble a

- Kábel USB na nahranie kódu

Krok 2: Zahrnuté témy

Začneme našu diskusiu porozumením základov technológie I2C

Potom sa dozvieme o multiplexore TCA9548A a o tom, ako master a slave odosiela a prijíma údaje pomocou technológie I2C. Potom sa pozrieme na to, ako môžeme programovať a používať multiplexor v našom projekte pomocou Arduino a NodeMCU. Ďalej vám ukážem rýchly demo pomocou 8 I2C OLED displejov a nakoniec tutoriál ukončíme diskusiou o výhodách a nevýhodách multiplexera TCA9548A

Krok 3: Základy zbernice I2C

Základy zbernice I2C
Základy zbernice I2C
Základy zbernice I2C
Základy zbernice I2C
Základy zbernice I2C
Základy zbernice I2C

Interintegrovaný obvod vyslovovaný I-squared-C (I²C) alebo I2C je technológia dvojvodičovej zbernice (v skutočnosti je to 4vodičová, pretože potrebujete aj VCC a uzemnenie), ktorá sa používa na komunikáciu medzi viacerými procesormi a snímačmi.

Dva drôty sú:

* SDA - Sériové údaje (dátový riadok) a

* SCL - Sériové hodiny (hodinový riadok)

Pamätajte si, že obidva tieto riadky sú „synchrónne“, „obojsmerné“a „vypúšťané“a sú „natiahnuté s odpormi“.

Technológia zbernice I2C bola pôvodne navrhnutá spoločnosťou Philips Semiconductors na začiatku 80. rokov, aby umožňovala jednoduchú komunikáciu medzi komponentmi, ktoré sa nachádzajú na tej istej doske s plošnými spojmi.

S I2C môžete k jednému masteru (napríklad SPI) pripojiť viac podradených zariadení alebo môžete mať viacero nadradených zariadení ovládajúcich jedného alebo viacerých podradených zariadení. Master aj slave môžu prenášať a prijímať údaje. Zariadenie na zbernici I2C môže byť teda v jednom z týchto štyroch stavov:

* Hlavný prenos - hlavný uzol odosiela údaje do podriadeného zariadenia* Hlavný príjem - hlavný uzol prijíma údaje z podriadeného zariadenia

* Podriadený prenos - podradený uzol odosiela údaje do hlavného zariadenia

* Slave príjem - podriadený uzol prijíma údaje z masteru

I2C je sériový komunikačný protokol „na krátku vzdialenosť“, takže údaje sa prenášajú „bit po bite“po jednom vodiči alebo linke SDA. Výstup bitov je synchronizovaný so vzorkovaním bitov hodinovým signálom „zdieľaným“medzi masterom a slave. Hodinový signál je vždy riadený majstrom. Master vygeneruje hodiny a zaháji komunikáciu s otrokmi.

Aby som to zhrnul>

Počet použitých drôtov: 2

Synchrónne alebo asynchrónne: Synchrónne

Sériové alebo paralelné: Sériové

Hodinový signál riadený: Master Node

Použité napätie: +5 V alebo +3,3 V

Maximálny počet majstrov: Neobmedzený

Maximálny počet otrokov: 1008

Maximálna rýchlosť: Štandardný režim = 100 kbps

Rýchly režim = 400 kbps

Vysokorýchlostný režim = 3,4 Mbps

Ultra rýchly režim = 5 Mbps

Krok 4: Modul multiplexera TCA9548A I2C

Modul multiplexera TCA9548A I2C
Modul multiplexera TCA9548A I2C
Modul multiplexera TCA9548A I2C
Modul multiplexera TCA9548A I2C
Modul multiplexera TCA9548A I2C
Modul multiplexera TCA9548A I2C

TCA9548A je osemkanálový (obojsmerný) multiplexor I2C, ktorý umožňuje ovládať osem samostatných zariadení I2C jednou hostiteľskou zbernicou I2C. Stačí pripojiť senzory I2C k multiplexovaným autobusom SCn / SDn. Napríklad, ak je v aplikácii potrebných osem rovnakých OLED displejov, jeden z každého displeja môže byť pripojený ku každému z týchto kanálov: 0-7.

Multiplexor sa pripája k linkám VIN, GND, SDA a SCL mikroovládača. Odlomová doska akceptuje VIN od 1,65v do 5,5v. Vstupné vedenia SDA aj SCL sú k VCC pripojené pomocou 10K pull-up rezistora (veľkosť pull-up rezistora je daná veľkosťou kapacity na linkách I2C). Multiplexor podporuje bežné (100 kHz) aj rýchle (400 kHz) protokoly I2C. Všetky I/O piny TCA9548A sú tolerantné voči 5 voltom a môžu byť tiež použité na preklad z vysokého na nízke alebo z nízkeho na vysoké napätie.

Je dobré umiestniť pull-up odpory na všetky kanály TCA9548A, aj keď sú napätia rovnaké. Dôvodom je interný prepínač NMOS. Neprenáša veľmi dobre vysoké napätie, na druhej strane veľmi dobre prenáša nízke napätie. TCA9548A môže byť tiež použitý na preklad napätia, ktorý umožňuje použitie rôznych zbernicových napätí na každom páre SCn/SDn tak, že časti 1,8 V, 2,5 V alebo 3,3 V môžu komunikovať s časťami 5 V. To sa dosiahne použitím externých výsuvných odporov na vytiahnutie zbernice na požadované napätie pre hlavný a každý podradený kanál.

Ak mikrokontrolér zistí konflikt zbernice alebo inú nesprávnu činnosť, je možné TCA9548A resetovať nastavením nízkeho kolíka na RESET.

Krok 5:

Obrázok
Obrázok
Obrázok
Obrázok
Obrázok
Obrázok

TCA9548 umožňuje jednému mikroprocesoru komunikovať až s '64 senzormi ', všetkými s rovnakou alebo odlišnou adresou I2C, priradením jedinečného kanála ku každej zbernici slave snímača.

Keď hovoríme o odosielaní údajov dvoma káblami na viac zariadení, potrebujeme spôsob, ako ich adresovať. Je to rovnaké, ako keby poštár prichádzal po jednej ceste a hádzal poštové balíky do rôznych domov, pretože sú na nich napísané rôzne adresy.

Môžete mať maximálne 8 týchto multiplexorov spojených dohromady na adresách 0x70-0x77, aby ste mohli ovládať 64 rovnakých adresovaných častí I2C. Pripojením troch bitov adresy A0, A1 a A2 k VIN získate rôznu kombináciu adries. Takto vyzerá adresový bajt TCA9548A. Prvých 7 bitov sa skombinuje a vytvorí adresu slave. Posledný bit adresy slave definuje operáciu (čítanie alebo zápis), ktorá sa má vykonať. Keď je vysoká (1), vyberie sa čítanie, zatiaľ čo nízka (0) vyberie operáciu zápisu.

Krok 6: Ako majster odosiela a prijíma údaje

Ako majster odosiela a prijíma údaje
Ako majster odosiela a prijíma údaje
Ako majster odosiela a prijíma údaje
Ako majster odosiela a prijíma údaje

Nasleduje všeobecný postup, akým má majster prístup k podradenému zariadeniu:

1. Ak chce kapitán odoslať údaje podriadenému systému (WRITES):

-Hlavný vysielač vysiela podmienku START, za ktorou nasledujú adresy podriadeného prijímača a R/W nastavené na 0

-Hlavný vysielač odosiela údaje v „8-bitových riadiacich registroch“podriadenému prijímaču, keď podriadený potvrdí, že je pripravený

-Hlavný vysielač ukončí prenos s podmienkou STOP

2. Ak chce kapitán prijímať alebo čítať údaje z podriadeného zariadenia (READS):

-Master-receiver vysiela podmienku START, za ktorou nasledujú adresy podriadeného prijímača a R/W nastavené na 1

-Master-receiver pošle požadovaný register na čítanie do podradeného vysielača

-Hlavný prijímač prijíma údaje z podradeného vysielača

- Akonáhle sú prijaté všetky bajty, Master pošle NACK signalizáciu podriadenému, aby zastavil komunikáciu a uvoľnil zbernicu

- Master-receiver ukončí prenos s podmienkou STOP

Autobus sa považuje za nečinný, ak sú linky SDA aj SCL po stave STOP vysoké.

Krok 7: Kód

Kód
Kód

Teraz kód Int umožňuje začať zahrnutím knižnice „Wire“a definovaním adresy multiplexorov.

#include "Wire.h"

#include "U8glib.h"

#define Adresa MUX_Address 0x70 // TCA9548A Adresa snímača

Potom musíme vybrať port, s ktorým chceme komunikovať, a odoslať naň údaje pomocou tejto funkcie:

zrušiť selectI2CChannels (uint8_t i) {

ak (i> 7) vráti;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Ďalej budeme inicializovať zobrazenie v sekcii nastavenia volaním „u8g.begin ();“pre každý displej pripojený k MUX „tcaselect (i);“

Po inicializácii potom môžeme robiť, čo chceme, iba volaním funkcie „tcaselect (i);“kde „i“je hodnota multiplexovanej zbernice a potom sa podľa toho odošlú údaje a hodiny.

Krok 8: Skener I2C

Skener I2C
Skener I2C

V prípade, že si nie ste istí adresou zariadenia vášho štítu I2C, spustite priložený kód „skenera I2C“a vyhľadajte hexadecimálnu adresu svojho zariadenia. Po načítaní do Arduina skica naskenuje sieť I2C a zobrazí adresy, ktoré odpovedajú.

Krok 9: Zapojenie a ukážka

Elektroinštalácia a ukážka
Elektroinštalácia a ukážka
Elektroinštalácia a ukážka
Elektroinštalácia a ukážka

Elektrické vedenie:

Začnime pripojením multiplexora k doske NodeMCU. Pripojiť:

VIN až 5 V (alebo 3,3 V)

GND na zem

SDA až D2 a

Kolíky SCL až D1

Pre dosku Arduino pripojte:

VIN až 5 V (alebo 3,3 V)

GND na zem

SDA na A4 a

Piny SCL až A5

Akonáhle je MUX zapojený do mikrokontroléra, stačí pripojiť senzory k párom SCn / SDn.

Teraz sa pozrime na toto rýchle demo, v ktorom som k multiplexeru TCA9548A pripojil 8 OLED displejov. Pretože tieto displeje používajú komunikáciu I2C, komunikujú s Arduino iba pomocou 2 pinov.

Krok 10: Výhody a nevýhody

Výhody a nevýhody
Výhody a nevýhody

VÝHODY

* Komunikácia vyžaduje iba dve zbernicové linky (vodiče)

* Medzi všetkými komponentmi existuje jednoduchý vzťah master/slave

* Žiadne prísne požiadavky na prenosovú rýchlosť, ako napríklad pri RS232, master generuje hodiny zbernice

* Hardvér je menej komplikovaný ako UART

* Podporuje viacerých majstrov a viacerých otrokov

* Bit ACK/NACK poskytuje potvrdenie o úspešnom prenose každého rámca

* I2C je „skutočná zbernica s viacerými mastermi“, ktorá poskytuje detekciu arbitráží a kolízií

* Každé zariadenie pripojené k zbernici je softvérovo adresovateľné jedinečnou adresou

* Väčšina zariadení I2C môže komunikovať na frekvencii 100 kHz alebo 400 kHz

* I²C je vhodný pre periférne zariadenia, kde jednoduchosť a nízke výrobné náklady sú dôležitejšie ako rýchlosť

* Známy a široko používaný protokol

NEVÝHODY

* Pomalšia rýchlosť prenosu dát ako SPI

* Veľkosť dátového rámca je obmedzená na 8 bitov

* Na implementáciu je potrebný komplikovanejší hardvér ako technológia SPI

Odporúča: