V súčasnosti sa I2C komunikácia stala jednou z najpoužívanejších metód na pripojenie viacerých zariadení k mikrokontroléru, akým je Arduino. On TCA9548A je 2-kanálový rozširovač zbernice I8C, ktorý rieši jeden z najbežnejších problémov pri tomto type pripojení: konflikt adries I2C. Tento článok vám pomôže pochopiť, ako tento extender funguje a ako ho môžete integrovať do svojich projektov Arduino.
Ak ste sa niekedy stretli so zariadeniami, ktoré zdieľajú rovnakú adresu na zbernici I2C, viete, aké frustrujúce môže byť snažiť sa s nimi komunikovať bez toho, aby došlo ku konfliktom. S použitím TCA9548A, môžeme sa týmto problémom vyhnúť a rozšíriť počet zariadení pripojených k jednej I2C zbernici. Poďme podrobne preskúmať možnosti, ktoré ponúka tento multiplexer.
Čo je TCA9548A?
El TCA9548A je 2-kanálový rozširovač zbernice I8C vyvinutý špeciálne pre zariadenia ako Arduino. Jeho hlavnou funkciou je umožniť pripojenie niekoľkých zberníc k jednej I2C zbernici, čo z neho robí základný prvok pre efektívne riadenie komunikácie s viacerými zariadeniami. Dal by sa dokonca prirovnať k multiplexeru, no navrhnutý špeciálne pre I2C komunikáciu.
Toto zariadenie má vstup I2C zbernice pozostávajúci z dvoch liniek, SDA (dáta) a SCL (hodiny), pripojených k 8 nezávislým výstupom, z ktorých každý má svoje zodpovedajúce SDA a SCL. To umožňuje mikrokontrolér komunikuje až s 8 zariadeniami, pričom si vyberáte, s ktorým z nich budete v každom okamihu interagovať.
Okrem toho je bežné používať TCA9548A na správu zariadení, ktoré zdieľajú rovnakú I2C adresu, čo je bežné v určitých senzoroch a displejoch, ktoré neumožňujú zmenu ich adresy. Pomocou tohto multiplexora môžete aktivovať kanál a komunikovať so zariadením bez rušenia iných kanálov.
Výhody a výhody
Medzi najdôležitejšie výhody TCA9548A Je tu možnosť pracovať s I2C zbernicami rôznych napäťových úrovní bez nutnosti použitia logických adaptérov. To umožňuje komunikácia so zariadeniami pracujúcimi pri 1.8V, 2.5V, 3.3V a 5V, ktorá rozširuje možnosti integrácie v rôznych projektoch.
Ďalšou kľúčovou vlastnosťou je, že multiplexer možno ovládať priamo zo vstupnej zbernice I2C, vďaka čomu je ovládanie z mikrokontroléra veľmi jednoduché. Jeho prevádzkové napätie sa pohybuje od 1.65 V do 5.5 V a podporuje zbernice I2C s frekvenciou až 400 kHz, vďaka čomu je vhodný pre rôzne zariadenia.
Pripojenie a konfigurácia
Pripojenie TCA9548A je celkom jednoduché. Potrebujete iba pripojiť vstupnú zbernicu k linkám SDA a SCL Arduina spolu s príslušnými napájacími kolíkmi (napríklad GND a 5V). Na druhom konci môžete pripojiť až 8 I2C zariadení, každé na svojich príslušných kanáloch s SDA a SCL.
Zaujímavou funkciou je, že môžete upraviť I2C adresu TCA9548A z 0x70 na 0x77 pomocou pinov A0, A1 a A2. To je užitočné, ak potrebujete použiť viac ako jeden multiplexor v rovnakom projekte. Tiež, ak z nejakého dôvodu potrebujete resetovať multiplexer, môžete tak urobiť nastavením RST pin LOW, ktorý je štandardne nastavený na pull-up.
Je nevyhnutné mať na pamäti, že so zvyšujúcou sa dĺžkou káblov alebo zložitosťou pripojených zariadení môže byť potrebné pridať pull-up odpory, aby sa zabezpečil správny prenos dát na zbernici I2C.
Príklad kódu pre skenovanie I2C zariadení
Pred interakciou so zariadeniami pripojenými k TCA9548A, je najprv dôležité zabezpečiť správnu detekciu multiplexora. Ak to chcete urobiť, môžete vykonať skenovanie zbernice I2C. Nižšie uvádzame základný príklad detekcie samotného multiplexora na zbernici.
#include "Wire.h"
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("Escaneando bus I2C...");
for (byte address = 8; address <= 119; address++) {
Wire.beginTransmission(address);
byte error = Wire.endTransmission();
if (error == 0) {
Serial.print("Encontrado dispositivo en dirección 0x");
Serial.println(address, HEX);
}
}
Serial.println("Escaneo finalizado");
}
void loop() {
delay(1000);
}
Vyššie uvedený kód skenuje možné adresy zbernice I2C a hľadá TCA9548A alebo iné pripojené zariadenia. Po identifikácii multiplexora môžete pokračovať vo výbere kanálu, ktorý potrebujete aktivovať.
Výber kanálu TCA9548A
Keď máme multiplexer nakonfigurovaný a detekovaný, musíme vybrať správny kanál na komunikáciu s požadovaným zariadením. To sa dá ľahko urobiť napísaním bajtu, ktorý aktivuje konkrétny kanál. Tu je príklad, ako vybrať kanál:
#define TCAADDR 0x70
void tcaselect(uint8_t i) {
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
}
void setup() {
Wire.begin();
Serial.begin(115200);
for (uint8_t t=0; t<8; t++) {
tcaselect(t);
Serial.print("Escaneando salida ");
Serial.println(t);
}
}
Pomocou tohto kódu si môžete vybrať a komunikovať s ktorýmkoľvek zariadením pripojeným k TCA9548A, jeden po druhom. Nezabudnite, že kód môžete upraviť aj na skenovanie výstupov každého kanála a hľadať ďalšie zariadenia.
El TCA9548A je vynikajúci nástroj na rozšírenie možností zbernice I2C vo vašich projektoch Arduino, ktorý vám umožní pripojiť viacero zariadení s rovnakou adresou alebo rôznymi napäťovými úrovňami efektívnym a jednoduchým spôsobom.