The I2C multiplexer allows the connecting of multiple I2C devices with the same address onto a single I2C bus.
Whilst you can get the same I2C multiplexer IC (TCA9548A) on generic breakout boards, the pHAT creates a compact solution which is great for remote monitoring and graphing when coupled with a Raspberry Pi Zero W (can be used with any model of Pi).
For each multiplexed output there are 4 pins:
- SDAx (data)
- SCLx (data)
- GND (ground)
- V (power)
The EEPROM automatically loads the correct i2c-mux overlay and turns it into 8 individual I2C busses (/dev/i2c-3 to /dev/i2c-10) allowing direct communication with the I2C devices as normal (i2cdetect / i2cget / i2cset / Python SMBUS, etc).
New version feature - address selection
You can now use address selection solder jumpers on the bottom of the board (A0/A1/A2) allowing more than one I2C multiplexer to be used.
By default the A0/A1/A2 are pulled low (centre pad connected to the pad closest to the Pi GPIO header).
- A0=LOW, A1=LOW, A2=LOW is address 0x70
- A0=HIGH, A1=LOW, A2=LOW is address 0x71
- etc. (see "Address Reference" table in the datasheet for more information)
To pull high you will first need to cut the trace between the centre pad and the pad closest to the Pi GPIO header, then bridge the centre pad with the pad furthest from the Pi GPIO header.
Note: The "V" output can be altered from the default 3.3 volts to 5 volts by cutting the PCB trace between V and 3v3 and bridging V to 5v. The 3.3v supply is taken directly from the Pi 3v3 rail so care should be taken not to overload it.
Please note the PCB colour may be green or white - our supplier's stock varies!