PCA9548A – An I2C Switch to Combat I2C Address Collisions
The I2C bus can handle up to 128 devices. Physical constraints such as the limited number of address pins available limit the number of present I2C devices. With the PCA9548A, TI and NXP provide a comfortable solution to work around this problem.
The PCA9548A creates a classic switch. The figure shows that the host communicates using a normal SCL and SDA connection.
Advanced Communication for Multi-drop I2C
In circuit, the PCA9548A requires the presence of pull-up and pull-down resistors on each channel. To optimize power consumption, Texas Instruments and NXP do not provide a pull-up complement: resistors on unneeded channels can be omitted, thereby reducing the power budget.
The decision to use individual pull-up resistors further eliminates the need for I2C voltage translation. Each channel’s operating voltage can be set by the voltage to which its pull-up resistors are attached—the data sheet explicitly mentions that parts of different voltage levels can be combined.
Communication takes place via a control register on the PCA9548A, which—obviously—is always visible to the host. It can be used as a bit field similar to the figure shown below, permitting the selection of which I2C devices are to be connected to the host.
Interestingly, the datasheet explicitly mentions that circuit designers are permitted to enable multiple channels simultaneously. This can create interesting situations if individual, similarly addressed devices send responses simultaneously.
Three Casing Options for Maximum Flexibility
PCB layouters seeking to deploy the PCA9548A can do so in three housings. The SO24 housing, which usually is the easiest to solder by hand during prototyping, can be purchased by ordering the SKU PCA9548A. The SKU PCA9548AD leads to the TSSOP24 housing, while the PCA9548ABS SKU leads to the space-saving HVQFN24 variant of the I2C bus switch.
As for speed, the PCA9548A will usually be used with sensors. For them, the standard I2C bus’s maximum speed of 400 kHz tends to be more than enough - the chip fully supports this high-speed mode.
In terms of protection, the PCA9548A is certified in accordance with various standards. If the external application is uncritical, additional I2C bus protection circuitry can be avoided, leading to a lower total cost of ownership for the solution as a whole.
Conclusion
If an I2C-based design suffers from address exhaustion, the PCA9548A is an affordable and effective way to solve the problem. Once integrated, handling multiple sensors with the same I2C bus address is as simple as sending a single I2C right to the switch’s control register.