This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PCA9548A: full-separate channel design

Part Number: PCA9548A
Other Parts Discussed in Thread: TCA9548A, PCA9306

Hi, team,

Is there any I2C switch that can separate all channels? It means that if one channel is pull LOW by some logic mistake, all other channels can still work normally, the device can detects and isolates abnormal channel.

Thanks.

Johnny

  • Hi Johnny,

    I'm not sure there is a single chip that would do this, but we will look into available solutions and get back to you tomorrow. Am I correct in understanding that you are looking for a way to connect various slave nodes to a single master? How many channels would need switching?

    Max
  • Max,

    Yes, and 8 channel is preferred. Thanks.

    Johnny

  • Hey Johnny,

    I'll be taking over for Max.

    It looks like you seemed to already of picked out our 8 channel MUX though I would recommend TCA9548A as it is the same as the PCA line up but is more cost competitive, has a wider Vcc range, addresses POR errata in the PCA line up, and is pin to pin with our PCA family.

    Your original request seems to not be about a 8 channel MUX but a mux that can detect when a bus latches (like if SDA pulls low and stays low forever) and disable the channel. Am i correct? If so, we do not have a MUX with that kind of set feature built in.

    The simplest solution I can see to this problem is to place a level shifter with an enable pin (like PCA9306) in front of each channel and have the master check the I2C lines for this issue. If the master detects this, it can disable each channel through the level shifter until it is able to detect which one was causing the issue. After the channel which was causing issues has been isolated, the master would need to send 9 pulses on SCL to try to unglitch any slaves on the bus which were initally listening to the corrupted data.  <-- This would still work but here's a better approach:

    TCA9548A has a reset pin, if the master sees the SDA line is latched then it can send a GPIO signal to the RESET which will disable all the channels. When the master releases the reset pin, it can then go through and enable each channel one by one until it locates which channel is latched low and then remember it in software to not enable that channel. Afterwards it would just reset the device one more time and operate as normal. Using this approach you would also want to enable all the channels that are not stuck and send 9 clock pulses to make sure the I2C device state machines are not glitched.

    Thanks,

    -Bobby

    EDIT: I am looking at another approach so I will get back to you on this. Please check this post a little bit later.