I know that in an I2C environment, one needs to add pull-ups to the SDA and SCL lines. I'm seeing more and more devices that have those pull-ups on them. So the question is: is it ok to have more than one set of pull-ups along the chain? For example, if I add 10K pull-ups at the beginning of the chain (right at the master), then plug in two devices that have their own pull-ups, one with 4.7K and another with 10K, will that cause problems?
The pull-up resistors in the set- up your setup are basically arranged on the bus in parallel configuration so 2x 10k and one 4.7 k comes out to 2.42 Ohm. That should still be ok.
Usually you only need one pair of pull-up resistors on the I2C bus.
There are a couple of excellent resources that explain things in more detail:
Yeah, the problem is these devices that come with the pull-ups already installed on them and no way to disable them.
I am experimenting with I2C at the moment , and hope to have 30 chips ( close together ) running off the same SCL , with 2k2 pullups.
The SDA are fed via analog multiplexers - CD4051 .
I have kept the pullups low resisance to try and counteract the capacitance of the cable and the 30 chips.
I only have a couple of chips connected at the moment while I get the software tested, but I might have to slow the I2C clock down to 10 KHz ( from 100 KHz ) if I run into timing problems.
So your 10k and 4k7 should cause no problems, my 2k2 is working fine.
They won't cause problems ... now. If I end up with 50 devices, each with 10K (max) pull-ups, I'm not sure how well that'll work.
the problem is these devices that come with the pull-ups already installed on them and no way to disable them.
A soldering iron is a good way to disable them. Failing that get devices without pull ups on. They are only on ready made boards not the actual chips. Good board have links so you can disable the pullups.
Ohms law and the current capacity of the port driving the 12C bus will determine the min value for the pull-up's. The more current available the faster the port can drive the bus and as noted bus capacitance can be controlled by making more current available for the bus by lowering the pull-up resistance.