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.

TCA9548A: I2C 0 level too high

Part Number: TCA9548A
Other Parts Discussed in Thread: TCA9517

Hy,

in an application I connect a controller with 5V logic to 14xLDC2112 with 1.8V logic using a TCA9548A I2C switch. In addition there is one 5V eeprom on the remaining I2C channel of the switch. All I2C pull ups are 1k8.

Now I observe a very high 0 level output (550mv) from the TCA9548A:

Even when changing pull ups to 10k, 0 level is too high, also positive edges degenerate

TCA9548A is powered by the 1.8V supply.

System works fine under regular conditions but is very susceptible to interference, i.e. by EMC

- What could be the root cause of the high 0 level?

- Any idea on how to get rid of the problem?

Any help appreciated,

Harald

  • This device is a passive switch. The pull-up resistors of all enabled channels act in parallel. Apparently, the output drivers of the controller are too weak for that load.

    How many channels are enabled? What is the total load?

    You can insert an I²C buffer between the controller and the rest of the bus. Use, e.g., the TCA9517, with the B side at the controller.

  • Harald,

    The debugging that you are conducting makes sense. It looks like when you have stronger pull-up, it is more difficult to drive low and the VOL level seems to be higher. When 10k is used, overall VOL seems to go lower, but RC constant increases which is the cause for the degenerate rising edge. 

    When you say the system works fine under "regular conditions" what exactly do you mean by this? 

    I agree with Clemens' statements. This problem could possibly be a loading issue. Several active channels could cause several pull-ups to appear in parallel, making it difficult to drive a LOW signal. In addition to his comments, can you provide a schematic?

    Regards,

    Tyler

  • Hy Tyler, hy Clemens,

    thanks a lot for looking into my issue.

    > The pull-up resistors of all enabled channels act in parallel.

    There is only one channel enabled at a time. On all channels, the identical devices are mounted with the same I2C address, so it is not possible to enable several channels simultaneously. So the total load is only: Controller - TCA9548A - 2x I2C Sensor at a time.

    > When you say the system works fine under "regular conditions" what exactly do you mean by this? 

    We came across this issue as consultant during EMC testing. The overall system has undergone field tests already but failed during EMC. We could not find the root cause of the EMC problems but found out, that the system is very susceptible to any interference and we suspect the false 0 level of I2C as one possible explanation. We proved that by generating the exact symptoms by both, performing EMC tests and manipulating I2C lines. So we assume, once the I2C levels are in order, the EMC issue is gone as well.

    Most valuable information so far is, that the TCA9548A is a "passive switch". So it is the controller, that is responsible for the poor 0 level, not the I2C switch, is that correct?

    Your quick and competent responses are highly appreciated!

    Regards

    Harald

  • Sorry; with "load", I meant the total pull-up current.

    Which controller is this? Would it be possible to configure stronger I²C output drivers? If not, add an I²C buffer.

  • Hi Harald,

    Sounds good. I understand that the total load is only: Controller - TCA9548A - 2x I2C sensors at a time. 

    Most valuable information so far is, that the TCA9548A is a "passive switch". So it is the controller, that is responsible for the poor 0 level, not the I2C switch, is that correct?

    Yes. TCA9548A is a passive device, it is not driving a signal, but simply connecting/disconnecting I2C bus channels via command byte. 

    The the functional block diagram, we can see that the internal structure is a series of pass FET's that connect the different channels to the main SDA/SCL bus. There is no architecture that suggests that the signal is re/driven. 

    This is why we are suggesting that it may be the controller's inability to drive to a 0 level condition. I agree with Clemens' question "what controller is being used, can we configure controller output with stronger I2C output drivers." I next thing we should try to rule out is the controller. If we can't drive 0 level conditions with the current drive strength of the controller, then our next best bet is an I2C buffer to effectively re-drive the signal. Make the buffer do the work of aiding in driving a 0 level condition since possibly the controller can't drive 0 level by itself. 

    Regards,

    Tyler