PCB Layout & Signal Integrity
I2C is slow, but its edges aren't. A 3 ns falling edge doesn't care that your bus runs at 100 kHz — it couples, rings, and radiates like any fast signal. A few layout habits keep it civilized.
Routing rules
- Daisy-chain device to device; keep taps/stubs under ~1 cm. No star topologies.
- Route SDA and SCL together but not coupled — same path, ≥ 2–3× trace-width spacing (or a ground trace between them at Fm+).
- Keep a continuous ground reference under both lines; never cross a plane split. The return current at the edge rate flows directly beneath the trace.
- Budget length against capacitance: ~1 pF/cm means 50 cm of routing is already 50 pF before any device pins.
- Minimize vias (~0.5 pF each) — they add up on a 20-device chain.
- Keep the pair away from noisy aggressors (switching nodes, motor phases, RF antennas) — I2C inputs have no differential rejection.
Crosstalk: SCL is SDA's worst enemy
The most common I2C SI failure is SCL coupling into SDA: a fast SCL falling edge induces a glitch on a tightly coupled SDA that a receiver can read as a START or a data-bit error. It shows up as "occasional NACKs" that vanish when you slow the bus down.
Left: healthy spacing and return path. Right: the classic failure — tight coupling with a return path detour amplifying the glitch.
Series damping resistors
22–100 Ω in series at each driver pin slows the falling edge and damps ringing on longer runs. They also add protection against latch-up from hot-plugged lines. Two cautions: they add to VOL (the far device's low is lifted by I·R), and at Fm+ speeds they can eat too much of the timing budget. Rule: start with 0 Ω fitted, add 33 Ω if you see ringing overshoot beyond ±0.5 V on a scope.
Off-board I2C: cables and extenders
| Distance | Approach | Notes |
|---|---|---|
| < 30 cm | Direct, ribbon/FFC ok | Put GND between SDA and SCL conductors; count cable pF |
| 0.3 – 2 m | Buffer at the connector (PCA9517) | Isolates cable capacitance from the main bus; drop to 100 kHz |
| 2 – 50 m | Differential extender pair (P82B715 / PCA9615) | Converts to robust differential signaling over twisted pair |
| > 50 m | Don't — use RS-485/CAN and a bridge | I2C was never meant to leave the enclosure |
Key takeaways
- Treat edges (ns), not bit rate (kHz), as the SI-relevant speed.
- Daisy-chain, short stubs, solid return plane, SDA/SCL spaced apart.
- SCL→SDA crosstalk is the classic intermittent-failure mechanism.
- Leaving the board? Buffer it. Leaving the enclosure? Go differential.