Connecting GPIO and SPI signals via cable


There is a requirement in one of our systems to transfer signals from one board to another board in the same system.

The signals are GPIOs and SPI lines from I.MX6 processor and it is in 3.3V level.

The board to which these signals are supposed to be connected is approx 1 feet away from the processor board. So the cable length would be 1-1/2 to 2 feet.

I am planning to convert these signals as differential signals via RS422 transceiver(to attenuate external interference) whereas my buddy is suggesting me to convert the signals as open drain outputs and feed it to the other board.


  1. Which is the best practice of above two or could you suggest an alternate way of achieving this?

  2. How does open drain signaling help in long distance transmission? (I do not want to learn from my buddy :-))

  3. What are the other things to be considered while transferring signals via cable?

Best Answer

I don't think a foot or two of wire connecting digital signal wires mandates very much design considerations. The current flow in digital signals is so low and your wire length is so short that inductive effects are negligible. Likewise, there will be virtually no loss to the wire resistance. And with very small current flow comes very little radiated energy, so you shouldn't have to worry about generating EMI. There's always a danger of absorbing EMI from nearby devices (the wire acts like an antenna), but I doubt that will be a problem for your situation.

The main consideration I would think about is the danger of ESD events on the wires. The mere presence of the wires off the boards increases the chance of contact with charged objects (most likely your hands) that can send transient voltage spikes down the wire and into both boards. For that reason, you never want to connect the pins of the microcontroller or other sensitive components directly to a connector that goes off-board. At a minimum, for digital lines, I would recommend a resistor in series with the connector and an ESD-rated TVS (Transient Voltage Suppressor) diode to ground. And that feeds into a digital buffer IC, which, finally, connects to the pin on the microcontroller. The resistor can be any large value in the kiloOhm range and the TVS diode should have a breakdown voltage a little higher than the digital high voltage on the lines.

You can get much more sophisticated with ESD protection, but that should give you "good enough" protection.