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.

PCA9306: pca9306

Part Number: PCA9306
Other Parts Discussed in Thread: TCA9617B

1、The I2C topology is as follows: The rate of accessing the battery is 100k, the rate of other devices is 400k, and there is no problem in I2C communication

2、In the following I2C topology, PCA9306 is added. The input pull-up resistance of PCA9306 is 2k, the power supply is 3V3, the output is 1k pull-up, and the power supply is 5v. When I2C uses 100k to access the battery, the ACK cannot be pulled down,However, when other I2C devices access over 400k rates, there is no problem

3、When the pull-up resistance of the output is adjusted from 1k to 10k, the ACK of I2C can be lowered

Can you explain why?

  • This device is a passive switch. When another I²C device pulls the line low, The Sxx1/Sxx2 pins are connected directly, and that device must sink the current through the pull-up resistors on both sides. In your circuit, this adds up to 6.65 mA, which is more than the I²C limit of 3 mA.

    Apparently, the device that ACKs has a weaker output than the other devices.

    To isolate the two bus segments from each other, use a level-translating I²C buffer like the TCA9617B.

  • Hi Dang,

    I agree with what Clemens stated. 

    The PCA9306 uses passive elements in level translation. The only component separating the two sides of the device is a passFET. This means that pull-up resistors present on the Vref1 side will appear in parallel with the resistors connected to the Vref2 side. 

    The 1kohm || 1kohm = 500 ohms which is a fairly strong pull-up resistor, and is the reason you are seeing such a high VOL during the ACK bit, The device that the MCU is talking to has a weaker open-drain driver than the master device, and therefore doesn't have the current strength to be able to pull the VOL lower against strong pull-up resistors. 

    This is why when you switch to 10kohm pull-ups, the load becomes weaker, and therefore the open drain driver of the slave device can successfully ACK the SDA to a logic low below the acceptable VIL threshold. 

    This is just another way to say what Clemens said in his response.

    Regards,

    Tyler

  • thanks 

    1、The input pull-up resistance of PCA9306 is 2k, the power supply is 3V3, the output is 1k pull-up, and the power supply is 5v

    2、The 2kohm || 1kohm = 1.5 ohms 

    3、 fast mode(400k)and typical mode(100k)require different pull-up resistors,How to ensure the reliability of my current 6k(2kohm || 10kohm = 6 ohms ) pull-up resistor? Can I calculate and deduce the rationality of this 10k resistor?

  •  In your circuit, this adds up to 6.65 mA, which is more than the I²C limit of 3 mA

    ---How is this value calculated? Can you help explain it? The manual did not see it. In addition, 100khz and 400khz requirements are not the same, the pull-up resistance value is too large to affect 400k mode?

  • 3.3 V / 2 kΩ + 5 V / 1 kΩ = 5.56 mA

    You need strong pull-up resistors only when you have a large bus with a high capacitance. You can see in the second waveform that with 10 kΩ, the rising edges are slower (but they are still OK).

  • Hi Dang,

     In your circuit, this adds up to 6.65 mA, which is more than the I²C limit of 3 mA

    ---How is this value calculated? Can you help explain it? The manual did not see it. In addition, 100khz and 400khz requirements are not the same, the pull-up resistance value is too large to affect 400k mode?

    See Clemens comments on the math. 

    You are correct that this value is more than the limit of I2C of 3mA. This tells us that the overall pull-up resistance is adding too much leakage current to the I2C bus, and devices on the bus may not be guaranteed to drive such a strong load. I2C standardized devices are designed to sink IOL = 3mA @ VOL = 0.4V. This is the general strength metric of the open drain driver within any I2C compatible device. When we add too much pull-up strength, the open drain driver for some of these slave devices may or may not be able to sink that much current. 

    Here is an application note describing how to calculate the min and max pull-up resistances for the I2C bus. 

    https://www.ti.com/lit/an/slva689/slva689.pdf?ts=1695393838427&ref_url=https%253A%252F%252Fwww.google.com%252F

    Regards,

    Tyler

  • Hi Dang,

    The answer was rejected, but I do not see a further reply. I will put the thread to "waiting for customer." 

    Regards,

    Tyler