I have a I2C switch PCA9546 that lets me connect I2C devices with the same address to a host device. My slave and host device can go up to speed of 1 MHz, but I do not know if the switch allows for me to be able to communicate at this speed.

The datasheet says:

0 to 400-kHz Clock Frequency

but I think this is referring to communicating with the switch itself to toggle the devices. I could also not find a reference saying/implying that the host and slave devices must be at 400 kHz max.

enter image description here

The block diagram of the IC seems to support my theory, as MOSFETs are used to open and close channels.

So does this mean I can communicate at 1 MHz (assuming I meet the bus spec required for this speed) of the host and slave device. I will have to slow down the speed when communicating with the switch itself. Can anybody confirm or contradict this?


1 Answer 1


The datasheet states clearly that the maximum clock frequency is 400kHz. I can find no indication that there would be a different clock rate for communications to the device itself.

So, no, you can not operate at a clock frequency of 1MHz and expect reliable operation.

  • 1
    \$\begingroup\$ Exactly. Even if the pass gates would pass the 1 MHz interface signals just fine, there is no guarantee that the I2C interface of the switch works. It may fail seeing too fast transactions properly and might think some transaction was meant for the switch even if it wasn't. So the rule is clear; it is a chip meant for up to 400 kHz buses only. \$\endgroup\$
    – Justme
    Apr 7, 2020 at 12:26
  • \$\begingroup\$ @Justme From what you said , putting the i2c aside, is it a bad practice to mix slave devices with different speed on the same buss? like 100kHz, 400kHz, and 1MHz devices on the buss and you will communicate with them at their own max speed \$\endgroup\$
    – Jake quin
    Apr 7, 2020 at 13:21
  • \$\begingroup\$ Yes, it is absolutely bad engineering practice, even if it appears to work. Same thing, you don't know what happens when the slower speed device tries to make sense of the higher speed traffic on the bus. So the bus speed, on a certain bus segment, must be limited to the slowest device on segment. If you must mix devices, and want to use highest speeds with devices that are capable, use a I2C bus switch/mux to isolate slower devices while talking at high speeds. \$\endgroup\$
    – Justme
    Apr 7, 2020 at 13:26
  • \$\begingroup\$ Yes, I agree with @Justme, don't mix devices of different speeds on the same I2C bus. \$\endgroup\$ Apr 7, 2020 at 18:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.