TCA9548A I2C Multiplexer
Omschrijving
Met dit kleine bordje kun je tot maximaal 8 i2c devices aansturen op één datalijn! Ook als de I2C apparaten allemaal hetzelfde I2C adres hebben zijn ze toch afzonderlijk aan te sturen met deze 8-kanaals TCA9548A.
Deze multiplexer maakt de volgend adressen aan: 0x70 t/m 0x77.
Het is mogelijk om meerdere I2C OLED displays aan te sturen middels de I2C multiplexer. Met één TCA9548A kunnen 8 OLED displays worden aangestuurd.
Hoe werkt het (uitleg)
Je kan de multiplexer op 8 adressen adresseren.
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76 en 0x77.
De corresponderende pins zijn:
0x70 -> SD0/SC0
0x71 -> SD1/SC1
0x72 -> SD2/SC2
0x73 -> SD3/SC3
0x74 -> SD4/SC4
0x75 -> SD5/SC5
Ox76 -> SD6/SC6
Ox77 -> SD7/SC7
Dus bijv 0x70 stuurt de module aan die op SD0/SC0 zit.
SDx is SDA poort x
SCx is SCL poort x
In code
Voeg aan je project de volgende functie toe:
void tcaselect(uint8_t i) {
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
}
- De werking is als volgt:
Zet de juiste poort (aanroep tcaselect(x) ) - Roep de desbetreffende module aan zoals je normaal gewend bent.
Om een poort te activeren roep de volgende functie aan:
tcaselect(x) waarbij x de waarde 0 t/m 7 kan hebben, dat is resp. SC0 en SD0 t/m SC7 en SD7
Specificaties
- 1-naar-8 Bidirectionele translating switches
- Compatibel met I2C-bus en SMBus
- Active-low reset-ingang
- Drie adrespinnen, waardoor maximaal acht
- TCA9548A-apparaten op de I2C-bus kunnen worden geselecteerd
- Kanaalselectie via een I2C-bus, in elke combinatie
- Initieel alle schakelkanalen gedeselecteerd
- Laag RON-schakelaars
- Toegestaan spanningsniveau mogelijk tussen bussen van 1,8 V, 2,5 V, 3,3 V en 5 V
- Geen storing bij opstarten
- Ondersteunt hot insertion
- Lage stand-bystroom
Bedrijfsspanningsbereik van 1,65 V tot 5,5 V - 5 V. Tolerante ingangen
- 0- tot 400 kHz Klokfrequentie
- Latch-up-prestaties hoger dan 100 mA Per JESD 78, klasse II
Aansluit schema / Pinouts
Pin | Omschrijving |
VIN | Spanning + 1,65 ~ +5,5 Volt |
GND | Ground (min) |
SDA | Input SDA (naar Arduino SDA) |
SCL | Input SCL (naar Arduino SCL) |
RST | Reset |
A0 |
Adres bits 0x70 t/m 0x77. |
A1 | |
A2 | |
SD0 t/m SD7 | Output SDA 0 t/m 7 |
SC0 t/m SC7 | Output SCL 0 t/m 7 |
Schema
Een leuk test projectje mat 3 RTC klokjes (2x ds 1307 en 1 ds 3231).
Ik gebruikte hem om te kijken hoe nauwkeurig ze zijn. De test liep ongeveer 1 week.
Uitkomst:
ds 3231 was de beste 3 sec. afwijking.
ds 1307 een 53 sec. de andere 85 sec. beide liepen voor.
Verder als spanning bron heb ik de ‘Verter 5V USB Buck-Boost‘ gebruikt om van een 3,7 V Lipo accu 5 Volt te maken.
Downloads
RTC test:
TCA9548A I2C Multiplexer RTC test (248 downloads )
I2C adres scanner:
TCA9548A ADDR i2c scanner (234 downloads )