I'm working on a raspberry pi project that will use about a dozen i2c devices (mostly mcp23017s) and the wiring is getting a little crazy. Are there any downsides to routing SDA and SDL to one of the power rails and using them as a sort of bus?

  • 1
    \$\begingroup\$ There are unlikely to be any significant effects, beyond those that you'd see from a breadboard anyway. \$\endgroup\$ – Chintalagiri Shashank Oct 8 '15 at 16:53
  • \$\begingroup\$ Try not to make bus capacitance too high (do not use unnecessary long/thick wires, etc..). If you are using some sort of breakout board check if they have pull up resistors, if they do, you are adding a bunch of them in parallel at the bus, creating a stronger pull-up (which might help to deal with the capacitance, up to a point, and then create other problems). \$\endgroup\$ – Wesley Lee Oct 8 '15 at 19:51
  • \$\begingroup\$ one good feature of this arrangement is that it reduces the number of junctions between chips on the 1²C bus \$\endgroup\$ – Jasen Nov 8 '15 at 3:09

i2c is time dependant. Most devices have limited pull down capability so that limits the size of the pull up resistor you can use.

Using larger pull up resistors with additional capacitance from the additional devices will limit your rise time.

Your rise time will limit you data rate.

So be sure to understand what is the smallest resistor value all of of your i2c devices can use, what is the total capacitance you have from all the devices, and there what is the fastest speed (or working from desired speed maximum number of devices).

Using the rails on a bread board will increase your stray capacitance, hence limit your rise time and speeds.

You can always check your rise time using a scope to ensure your timing will not be effected.


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.