i2c Pull-up resistors for multiple chips

Thread Starter

beic

Joined Jun 13, 2016
26
Hi there,

I wish to connect multiple i2c chips together on the same PCB board, these chips are DS1307, DS1621 and AT24C256.

My question is, do I need to put 6 x 4.7k pull-up resistor (2 resistor / chip) or 2 x would be Ok for those three chips as shared?

Also what will happen if I would attach a finished sensor board with existing pull-up resistors to the mentioned PCB board above?

Thank you for your time and answer,

Kind regards,
Viktor
 

Papabravo

Joined Feb 24, 2006
16,775
Hi there,

I wish to connect multiple i2c chips together on the same PCB board, these chips are DS1307, DS1621 and AT24C256.

My question is, do I need to put 6 x 4.7k pull-up resistor (2 resistor / chip) or 2 x would be Ok for those three chips as shared?

Also what will happen if I would attach a finished sensor board with existing pull-up resistors to the mentioned PCB board above?

Thank you for your time and answer,

Kind regards,
Viktor
The puulup resistors will all be in parallel. This will reduce to total resistance making the pullup stronger but also more difficult to pull low. As I understand things you want exactly one pullup of a given value on a board with multiple chips. The idea being that the total trace length of SDA and SCL will not be long enough to create a transmission line requiring termination at each end. For a maximum SCL frequency of 400 kHz., and a total trace length of 12" or so, this will be an accurate assumption.

If you are interested in the math behind the statement compute the wavelength of 400 kHz. It is huge. Now estimate the frequency components of the rising and falling edges as being 100x the 400 kHz, which is 40 MHz., and compute the wavelength of 40 MHz. and notice that 12" is a small fraction of a wavelength.

The question of what to do about board to board I2C is a different one entirely. What you need to avoid is having the total resistance of all the pullups being too small. On a board to board connection there will likely be more distributed capacitance which will contribute to slower rise and fall times. I think the situation has no universal answer, but must be evaluated on a case by case basis.
 
Last edited:

Thread Starter

beic

Joined Jun 13, 2016
26
My board would look like this, just started to design it, do you think 2x pull-up resistor would be ideal for those three chips?

1616776864156.png
 

Thread Starter

beic

Joined Jun 13, 2016
26
1. About 3-4cm max. with Dupont and Pin headers calculated in.
2. ATmega328P will drive SCL and SDA pins.
 

Papabravo

Joined Feb 24, 2006
16,775
I think one set of pullups on each board will give you maximum flexibility. So if you use 4.7K on each line (SDA & SCL) on both boards that will be a total pullup resistance of 4.7K || 4.7K = 2.35KΩ for the two boards plugged together. Now if you want to design additional peripheral boards of the same size make them have 4.7K pullups and they will be compatible with the ATmega board. Double check the TI document to see that 2.35KΩ is greater than Rp(min) and less than Rp(max). It the total trace length is a couple of centimeters I would guess your total capacitance is on the order of 30-50 pF., maybe less. As always you need to confirm that you have the expected signal integrity when you get the final boards. You might wan to provide some empty resistor pads on both boards so you can add a second resistor to each line without turning the board. The goal is to only stuff one set of pads, but have the second set available if necessary.
 

Thread Starter

beic

Joined Jun 13, 2016
26
Okay, I understand that part now for sharing.

But, I don't have any pull-up resistors on the main ATmega board, only on the shield mentioned above.

I wanted to ask that if I would connect additional pre-built i2c (China) modules to my shield.
 

Papabravo

Joined Feb 24, 2006
16,775
Okay, I understand that part now for sharing.

But, I don't have any pull-up resistors on the main ATmega board, only on the shield mentioned above.

I wanted to ask that if I would connect additional pre-built i2c (China) modules to my shield.
If the ATmega board will have no resistors then they must be included on the shield. It still might be a good idea to have an extra space for a second resistor on each line to maximize the shield's utility. If you can't afford the space then I wouldn't worry about it. You still need to decide the values of Rp(min) and Rp(max) for your particular setup. I would try to stay away from the extremes if possible.
 
Top