0
\$\begingroup\$

I need to establish an SPI communication over one meter in a very noisy environment. To do this, I am planning on using differential communication over a twisted pair cable.

I would use a dedicated IC like the SNx5176B. However, in my application I can only draw power from a 12 V line and the LVDS drivers generally require 5 V. The board has 5 V and 3.3 V sources from an LDO, so they exist, but I'm limited in how much power I can draw from them.

I was planning on using the below circuit:

discrete fet differential driver

Ideally, I would add a 100 Ω resistor at the end of the wire as a terminating resistor but that would add a load to the 5 V source.

This works well in LTSpice, but would it work well on a physical board? Is there anything I can do to improve this circuit?

\$\endgroup\$
10
  • \$\begingroup\$ What's the SPI speed? Can't you add a 5V regulator and then some 5V chip like RS-422 or RS-485 transceivers? Or a dedicated chip for extending SPI? That's far less components than adding several comparators and discrete FETs for all four wires of SPI bus. \$\endgroup\$
    – Justme
    Commented May 13 at 19:53
  • 1
    \$\begingroup\$ If discrete is a requirement, I might first consider current-steering such as used in ECL. Easy to understand and assemble and it uses resistor degeneration to deal with part variations. A differential current is pretty robust over wires. What kind of speed are you hoping to achieve? \$\endgroup\$ Commented May 13 at 19:53
  • \$\begingroup\$ So it seems that the main constraint is power draw from the existing 3v3 & 5v supplies. Why not just make a new 5v supply from the 12V via a buck converter? Then you can use standard SPI chips. \$\endgroup\$ Commented May 13 at 20:27
  • \$\begingroup\$ Please establish your requirements first: how noisy is the environment? 10V/m, 30V/m radiated (and comparable conducted)? Or if not by standard, then what noise level do you observe in the real setting, measured on wires, antennas, loops, etc.? What spectrum is the noise, is there any range you need to be particularly careful with? || What emissions levels must you meet? Crafting a driver is typically a poor idea, as you can't optimize it nearly as well as industry-standard chips have been. Your proposed circuit also lacks input CM range -- a key performance factor in a noisy environment. \$\endgroup\$ Commented May 13 at 21:00
  • 1
    \$\begingroup\$ I've found in this kind of situation it helps to add a Schmitt trigger buffer on the receiver side; the extra hysteresis helps filter out low-amplitude glitches. I'd also add space for RC filtering where the long cable enters the PCB; initially try with 22 ohm / 100pF if that doesn't hurt your signal bandwidth. \$\endgroup\$
    – MarkU
    Commented May 13 at 22:14

2 Answers 2

1
\$\begingroup\$

Nothing you can whip up with discrete components will work as well or cost as little as off-the-shelf components designed from the ground up to do exactly what you want.

There are dozens of different RS-422 / RS-485 transmitters, receivers, and transceivers. A better approach is to add a low-power linear regulator such as a 78L05 plus two capacitors, and use these parts to get the excellent noise immunity built into those chips.

\$\endgroup\$
0
\$\begingroup\$

You could drive the line directly from the 12V rather than the 5V or 3v3 supplies. Just design the receiver to handle the higher voltage, older comparator such as LM393 are quite ok for this, or put in a voltage limiter.

For the driver you'll need a complementary pair of switches, so n-chan & p-chan MOSFETs, be careful to drive correctly with deadtime to avoid shoot-thru. Alternatively you could use commonly available gate drivers for power MOSFETs, this link may help with that:

https://electronics.stackexchange.com/a/710378/341959

\$\endgroup\$

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