0
\$\begingroup\$

I am using Arduino nano to drive multiple i2c devices, actually, they are premade modules which are available on eBay. ads1115 ADC, ds3231 RTC, 20x4 character LCD i2c module, at24c02 EEPROM module

all these modules have I2C SDA & SCL pull-up resistors in the module, please correct me if I am wrong.

doubt - if I connect these all devices to same SDA and SCl i2c bus what will happen to pullup resistances? according to the theory, since they are configured in parallel resistances will go low isn't it? means pull up resistance will go low?

how this will affect to my end device?

Is there a specified distance between SDA/SCL pins and pull up resistor?

\$\endgroup\$
  • \$\begingroup\$ If you use modules with pre-soldered pullup resistors, you can manually remove all pullup resistors, except for 1 module. You need between 1k and 10k pullup for I2c, 4.7k being very standard. \$\endgroup\$ – Atizs Mar 11 at 14:34
  • \$\begingroup\$ related: I2C pull-up resistors on modules and breakout boards \$\endgroup\$ – Nick Alexeev Mar 12 at 2:41
1
\$\begingroup\$

Yes, you are correct. Resistance goes low and that is not good for your devices, as the maximal current going through pull-down transistors will increase for several times.

But it also depends on your wiring configuration, wires length and protocol bitrate. Typically you can have several pull-up resistors closer to the I2C devices.

Please reed this article: I2C Bus Pullup Resistor Calculation

And this answer: Is there a correct resistance value for I2C pull-up resistors?

Check the resistors values. If the resulting resistance is above 2 kOhm @ 400kHz-1MHz, then you are more or less safe. On 100kHz you can use higher resistor values up to 10 kOhm in total.

\$\endgroup\$
  • \$\begingroup\$ is there a specified distance between SDA/SCL pins and pull up resistor? my bus will be less than 100kHz \$\endgroup\$ – iopertyki Mar 11 at 14:43
  • 1
    \$\begingroup\$ @iopertyki There is no "specified distance" as far as I know. I would say that this can be calculated somehow, if you know resistance/capacitance of wires/input capacitance/exact frequency, but as far as you don't know these parameters I would say that up to several tens of centimeters is okay to use only one resistor, but several of them are also fine. If frequency is lower than 100 kHz try to make total resistance closer to 10 kOhm or slightly less. But 2 kOhm and more also should work. You have to test on your own equipment. \$\endgroup\$ – cyclone125 Mar 11 at 14:59
1
\$\begingroup\$

If all of your modules have pullup resistors then the effective pullup resistance will be the equivalent parallel value of those resistors. This value may be too low to allow your devices to work together.

If you want a more specific answer then you need to provide links to the actual manufacturer's datasheets (not the ebay vendor page) for all of the modules you want to connect. We need to see specifications for the individual ICs as well as schematics for the modules you want to use. If you can't find that information you should look for different modules.

\$\endgroup\$
-1
\$\begingroup\$

One would typically only have pullups on the last device in the string of devices for best results. Keep your wiring short and neat. Don't forget to connect all Gnds.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.