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.

I2C Multiplexer Question

Other Parts Discussed in Thread: TCA9546A, TCA9543A, TCA9544A, PCA9306

Hi All,

I recently received some I2C multiplexer samples and after testing their general functionality I have found an issue with these ICs for my application and was wondering if there is a way to fix it already available.

For reference, I have tested: TCA9543A, TCA9546A, and TCA9544A.

My issue is as follows:

I set up the ICs as the datasheet suggests and used an Aardvark to communicate to the IC and a second to send/receive data on one of the I2C channels of the ICs. I write to the IC address and configure it to use all channels. At this point I am able to send and receive data through the IC. My issue is that if one of the channels then writes to the IC address and reconfigures it to use no channels the configuration saves. Is there a way to prevent the downstream I2C channels from writing to the IC?

Brief Application Description:

I have a unit with a micro controller communicating to a master device through a back plane that can have up to 4 units attached. Each unit also has 2 external access ports to write to the micro through I2C. The job of the I2C multiplexer would be to allow 2 I2C channels to speak to the micro. A line of code would be added to the micro to initially configure the IC and then normal operation would commence. My problem is that if a customer accidentally or even purposefully writes to the multiplexer and configures it incorrectly the unit will no longer have I2C communication to these excess ports.

Thanks,

  • Hey Matthew,

    This is the first time I've heard of this kind of potential problem occurring. This seems like an issue due to the fact you potentially have two or more masters which can communicate to this device but only one is connected to the main channel while the others would be on the accessory channels that can be disabled.

    "Is there a way to prevent the downstream I2C channels from writing to the IC?"
    There is no way that I know of to do this without some kind of discrete solution. If we were to go this route I would consider using digital logic to compare all the SCL lines from the main channel and accessory channels and identify when this occurs and then enable another switch to allow for communication.

    We know that if the main channel sees a low, the accessory channels which are enabled will see a low and vice versa. If the switch was disabled so that all the channels were not enabled then only one channel would be low while the others will remain high (pull up resistor). In this case we know that the switch has been disabled and we are now in the problem situation you've pointed out. Using an XOR logic would tell us when one side is high while the other side is low (this would indicate we're seeing the switch has been turned off by accident). From there we could probably use a flipflop to store this data and have it turn on a switch that connects a new channel (I would use PCA9306 as it has an enable pin and can be thought of as a switch with the sue of the enable pin).

    This solution does not prevent the situation from occur but allows for communication for when it does happen. The easier alternative would be to allow for a switch for the user could connect (with a shunt and two header pins) to connect the external mcu to the main mcu I2C bus.

    Thanks,
    -Bobby