TCA9548A the perfect I2C sensor, and you want to wire up two or three or more of them to your Arduino when you realize “Uh oh, this chip has a fixed I2C address, and from what I know about I2C, you cannot have two devices with the same address on the same SDA/SCL pins!” Are you out of luck? You would be, if you didn’t have this ultra-cool TCA9548A I2C 1-to-8 I2C multiplexer.
Finally, a way to get up to 8 same-address I2C devices hooked up to one microcontroller – this multiplexer acts as a gatekeeper, shuttling the commands to the selected set of I2C pins with your command.
Using it is fairly straight-forward: the multiplexer itself is on I2C address 0x70 (but can be adjusted from 0x70 to 0x77) and you simply write a single byte with the desired multiplexed output number to that port, and bam – any future I2C packets will get sent to that port. In theory, you could have 8 of these multiplexers on each of 0x70-0x77 addresses in order to control 64 of the same-I2C-addressed-part.
Like all Adafruit breakouts, we put this nice chip on a breakout for you so you can use it on a breadboard with capacitors, and pullups and pulldowns to make usage a snap. Some header is required and once soldered in you can plug it into a solderless-breadboard. The chip itself is 3V and 5V compliant so you can use it with any logic level.
- Operating voltage : 1.65 V to 5.5 V and can be used at any logic level.
- Pin descriptions:
- SCL: I2C clock input – connect this to the microcontroller I2C clock pin
- SDA: I2C data input – connect this to the microcontroller I2C data pin
- RST: Multiplexer reset pin – connect to ground to reset
- A0 A1 A2: I2C address selection pins – connect to VCC or GND to set the multiplexer’s own I2C addressSDx and SCx : I2C clock and data output pairs – connect these pins to the devices you want to multiplex. Note that these pins do not have pull-up resistors attached – if using with devices which don’t have internal pull-up resistors, resistors must be added.