Electronic – I2C PCB Layout Considerations

i2clayoutpcb

I wanted to ask, what general layout guidelines and/or routing concerns exist for I2C in a PCB design?

Edit – Consider a 31mil thick, 4Layer PCB with stack up:

  • L1 = signal – 0.5oz + 1oz plating
  • L2 = ground – 1oz
  • L3 = Pwr/ground – 1oz
  • L4 = pwr/ground – 0.5oz + 1oz plating
  • FR4 dielectric

Let's say you need to route across a 10 inch PCB (just for example sake) covering 2 inches on Layer1, 6 inches on Layer3, and 2 inches on layer1. What would be the design guidelines for this?

At high frequency, your SCK (clock) can couple easier to adjacent nets than at lower frequency. The same could apply to SDA (data), however this would be in regards to driver strength of the chip and the rise time associated with the signal. Are there any other oddities that exist with I2C in regards to behavior?

With this in mind, is it best to route SDA and SCK on different layers (assuming high freq) to avoid coupling between them? What is considered high frequency for these signals? Is there a standard routing methodology anyone uses? Typical to put a guard trace in betweeen them to minimize the coupling? What about vias in the middle of the traces to test pads?

Best Answer

Wihtout knowing the constraints of your board real-estate and existing layout (i.e. is this a new design where you have free-reign, or must you shoehorn in I2C).

One technique I've had success with is separating on either side of SDA/SCL with a guard trace (ground). This way any emissions from the edges of those signals would be greatly attenuated and would be much less likely to couple into each other or into other signals. (Think the boyscout rule).

The other thing you'll have to evaulate is how much parasitic capacitance there would be in total from end to end. The I2C spec has an upper limit on capacitance to ensure the proper rise/fall/setup times, depending on the data rate. To calculate this you'll need to at least have an estimate of the trace length and a lookup table depending on your board layer stackup, the PCB material (FR4?), and the dimensions of the traces.

If there are any ESD susceptibility parts near the I2C now, move them!, or be prepared to either re-spin/engineer or add I2C retries in your code.