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.