Ideal I2C Pullup Value for Gen3 Devices?

After seeing communication issues over I2C which was caused by not knowing the Gen3 devices have built-in 13K pullups that are activated when I2C is used.

To avoid communication issues you have to make sure the pull-up resistance is good.

I have a Gen3 project that has 4 different chips talking over I2C.

The question I have is about what the target Pullup value should be considering the 13k internal pullups?

Any advice is appreciated.

Below is the post where I first figured out why I was having problems.

There is no one answer because it depends on the speed of the bus and the capacitance of the wire connecting it. However it’s generally 4.7K to 10K. Sometimes 2.2K. Things get a little questionable at less than 2K or more than 10K.

If you’re using a simple I2C breakout board from Adafruit or SparkFun, it probably has a 10K pull-up on it, so 13K (on Gen 3 devices) in parallel with 10K is 5.65K, so that’s about right.

Two 10K pull-ups in parallel with 13K is 3.61K. Still good.

Three 10K pull-ups in parallel with 13K is 2.65K. Getting low, but fine.

Sometimes you’ll find a device that already has a 4.7K pull-up. With one in parallel with 13K that’s not bad as it’s 3.45K.

Where you run into trouble is if the device has a 2.2K pull-up. With that in parallel with 13K you have 1.88K and that’s too low.