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.

PCA9546A with 5V and 3.3V devices

Other Parts Discussed in Thread: PCA9546A, TCA9546A

We use PCA9546A with one 5V device and 3 devices which are 3.3V.

The PCA9546A doesn't acknowledge its address if the pull ups on the 5V bus are connected to 5V but it works fine if the pull ups on the 5V are connected to 3.3V.

What could be the issue? The pull ups are 2K resistors on all 4 buses.

Thanks,

Valentin

  • Hi Valentin,
    In your setup are you connecting the 5V and 3.3V device on different channels? What is the VCC you are using for the PCA9546A? Are you making sure that both the 3.3V and 5V channels are not turned on at the same time?
    If possible can you share a schematic of the PCA9546A and the way you have connected the 5V and 3.3V devices?

    Thanks,
    Rajan
  • Hi Rajan,
    Yes, the 5V channel has a single 5V device. The first 3.3V channel has only one device and the second 3.3V channel has 3xLMP91000 connected to it. The third channel is not used at this time.
    Yes, we are sure there are no two channels turned ON at the same time, but even if they would be it should still work, right?
    There isn't really to much to the schematic just the PCA9546 with 2K pull ups to 3.3V for 3.3V channels and to 5V for 5V channel and a PCA reset with 2K pull up to 3.3V and also a GPIO which is high. The PC9546 Vcc is connected to 3.3V - should this be connected to 5V?
    Thanks,
    Valentin
  • Hi Valentin,
    This is interesting.
    Can you try using larger value pull-up resistor (e.g. 10k). When the 5V channel is on, the pullup resistor on the 5V channel and the master side are in parallel, which strengthens the equivalent pull-up. I doubt that this will become strong enough to overdrive the ACK pull-down transistor on the SDA, but its worth trying.

    Is the master side also connected to 3.3V pull-up? Also, I recommend using the TCA9546A over the PCA9546A. VCC is good at lower voltage (3.3V in this case)

    Thanks,
    Rajan
  • Hi Rajan,

    The master side is connected to 3.3V pull-up.

    What we learned is that if we increase the current on the master side (it was set in a "low speed mode") then we don't have this issue anymore, the PCA9546 will respond to its own address even if the pull-up on the 5V channel are to 5V not  3.3V.

    However, we still have an issue. The PCA9546 is set to select channel 1 (3.3V channel) and we are communicating with a single 3.3V device on that channel. The communication works fine for 4 ( master WR + master RD) transactions. On the 5th master WR transaction instead of slave address 0xEC (like I see on previous transactions) what I see is 0xF0 (see bellow scope capture) even though in the firmware I see 0xEC value sent from processor.

    Do we have something wrong with our pull-up values?

    Valentin

  • Hi Valentin,
    It does not look like a pull-up resistor issue as the I2C transactions look ok and you are able to communicate in the first 4 transactions. In the first 4 transactions are you able to turn any channel on/off? Can you take the scope shot at the input (SCL/SDA) and output channel of the PCA9546 during this transaction?

    Thanks,
    Rajan
  • Hi Rajan,
    Yes I can turn channels ON/Off. The i2c bus signals look identical at the input and output channel. The problem must be somewhere in the firmware framework of the master - we'll look more into it.
    Is TCA9546 a better part? and if yes, why?
    Thanks,
    Valentin
  • Hi Valentin,
    Ok.
    Yes, TCA9546A is a better part as it removes the errata from the PCA9546A and also supports lower voltage (1.8V).

    Thanks,
    Rajan