Features
- 4 I2C channels
- Connect multiple I2C devices with the same address to your Raspberry Pi
- Channel selection via I2C-bus, in any combination
- 3 address pins allowing up to 8 I2C Switch development boards on the Raspberry Pi
- Allows voltage level translation between 2.7 V, 3.3 V and 5 V buses
- Supports clock frequencies up to 400 kHz
- Python, MicroPython, C, C++ and Node JS libraries are available
The I2C Switch is a 4-channel bidirectional I2C switch that can be controlled via the I2C bus. Using the I2C switch, you can connect I2C devices with the same address to your Raspberry Pi. For example, when combined with our IO Pi Plus, you could connect up to 16 IO Pi Plus boards to your Raspberry Pi, giving you 512 digital I/O pins.
It is designed for all Raspberry Pi models and other compatible single-board computers with the 40-pin GPIO connector. Using our mounting kit pack, the I2C Switch can be securely fitted to your Raspberry Pi.
The I2C Switch is based on a PCA9546A controller from NXP. The PCA9546A provides quad bi-directional communication between the I2C port on the Raspberry Pi and any attached I2C devices. Each channel can be individually enabled or disabled.
Powered through the host Raspberry Pi using the GPIO port and extended pins on the GPIO connector allowing you to stack the I2C Switch along with other development boards.
Each channel can operate at 2.7V, 3.3V or 5V, allowing you to mix different voltage I2C devices on your Raspberry Pi.
Pull-up resistors must be fitted to each channel's SDA and SCL pins. We recommend using a value between 2.2K and 10K for the pull-up resistors.
The pinout for each channel matches the first 6 pins on the Raspberry Pi GPIO connector with 3.3V, 5V, Ground, SDA and SCL.
The I2C switch supports clock frequencies up to 400KHz.
The reset pin on the PCA9546A is connected to GPIO 27 (pin 13) on the Raspberry Pi GPIO header allowing you to recover from a situation in which one of the downstream I2C buses is stuck in a low state.
Technical Details
Input Ratings & Specifications
- Spec
- Ratings
- Host I2C SDA/SCL voltage
- 3.3 V
- Channel I2C SDA/SCL voltage
- 2.7 V - 5V
- I2C port current
- 25 mA
- Max Clock Frequency
- 400KHz
Schematic
View the schematic PDF.
Mechanical Drawings
Compatibility
We have tested the I2C Switch on the following platforms.
Model |
Status |
Raspberry Pi Pico series |
|
Raspberry Pi Model A / B |
|
Raspberry Pi 1 Model A+ / B+ |
|
Raspberry Pi 2 Model B |
|
Raspberry Pi 3 Model A+ / B / B+ |
|
Raspberry Pi 4 Model B |
|
Raspberry Pi 5 |
|
Raspberry Pi Zero |
|
Raspberry Pi Zero W / Zero 2 W |
|
Raspberry Pi Compute Module 4 IO Board |
|
Raspberry Pi 400 |
|
Asus Tinker Board |
|
Odroid |
|
Code Libraries and Demos
This expansion board has Python, MicroPython, C, C++, and Node JS libraries available to get you started with your next project. You can download all of the libraries from our GitHub repository or click on the logos below for your selected programming language.
Assembly Instructions
The I2C Switch is supplied with the 40-pin GPIO connector unsoldered.
Before using the I2C Switch, you will need to solder the 40-pin GPIO connector.
PCB Header Assembly Jig
Download and print our PCB Header Assembly Jig to hold your circuit board when soldering the header pins.
I2C Address Table
The I2C Switch includes three address selection solder jumpers which can be bridged with solder to give you up to 8 different I2C addresses.
2 |
1 |
0 |
Address |
LOW |
LOW |
LOW |
0x70 |
LOW |
LOW |
HIGH |
0x71 |
LOW |
HIGH |
LOW |
0x72 |
LOW |
HIGH |
HIGH |
0x73 |
HIGH |
LOW |
LOW |
0x74 |
HIGH |
LOW |
HIGH |
0x75 |
HIGH |
HIGH |
LOW |
0x76 |
HIGH |
HIGH |
HIGH |
0x77 |