Assuming the ICs in use don't offer an adjustable slew rate, if I want to limit the slew rate of a unidirectional digital data line, for example of SPI's MOSI-signal, I can put a series resistor at the source. All clear up to this point.

But what is the best practice to limit the slew rate of bidirectional data, for example in the case of I2C SDA? The source end is not fixed and both parties can send. Put a resistor in the middle as a trade-off? Or use a resistor on both ends? Or some other scheme?

And what if the data line has stubs and is shared in addition, like, again, with I2C with multiple slaves?

Thanks for sharing your expertise.

  • \$\begingroup\$ Design the drivers to not slew too quickly. \$\endgroup\$ – The Photon Jul 31 '17 at 21:59
  • 1
    \$\begingroup\$ @The Photon: The question is based on the assumption that the drivers are not in my control. \$\endgroup\$ – ultimA Jul 31 '17 at 22:06
  • \$\begingroup\$ You might want to check with your silicon vendor though. They might have already limited slew rate to a sensible value. \$\endgroup\$ – The Photon Jul 31 '17 at 22:16
  • \$\begingroup\$ Why limit slew rate? Are you using twisted pair? or flat wire? Stub length? EMI concerns? It has asymmetric drive impedance and Iol is variable{ Standard-mode, Fast-mode, Fast-mode Plus} \$\endgroup\$ – Tony Stewart Sunnyskyguy EE75 Aug 1 '17 at 1:02
  • 1
    \$\begingroup\$ I2C was an example as it is well known and I can easily demonstrate the question with it. I'm talking about PCB traces, not twisted pair, and the question mainly relates to EMI, crosstalk and signal integrity (latter for neighboring traces) concerns. \$\endgroup\$ – ultimA Aug 1 '17 at 15:38

If you wanted to block higher frequencies you could use an SMT inductor to limit the current. I've used them before in the place of RC filters to limit current into a cable that connected to processors on a SPI bus.

Because the cable was built wrong in the first place when I was asked to upgrade the digital logic, the cable had too much mutual inductance between conductors and a rising edge on the MOSI in one conductor would cause a runt on the MISO in the conductor next to it. Tried RC filters but they were too slow, so I blocked it with a 0.1uH chip inductor which slowed down the rise time enough to stop most of the cross coupling. Something like this might work in your case.

  • 1
    \$\begingroup\$ Yes, an inductor (or better, a ferrite bead specifically) can be used in many cases instead of a resistor. But the original question remains: what to do with bidirectional data lines? Normally it is important to place this resistor/inductor near the source, so that it doesn't radiate on the way to your slew-rate-limiter-element. But what if both ends of a trace can send? That is what this topic is about, and using an inductor instead of a resistor makes no difference in this aspect. \$\endgroup\$ – ultimA Aug 1 '17 at 17:46
  • \$\begingroup\$ It will still limit the high frequency content on that I2C line if the source is on an external board and the sink is on your board and you put an inductor between the sources. If the I2C source and sink are both out of your control, then this is an XY problem \$\endgroup\$ – Voltage Spike Aug 1 '17 at 18:00

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.