How Should I Terminate and Route SPI Signals for Multiple External PCBs?

  • Thread starter Thread starter saad87
  • Start date Start date
Click For Summary
SUMMARY

This discussion focuses on the effective termination and routing of SPI signals for multiple external PCBs. The user is implementing a design that connects a main PCB to four external PCBs, each with two SPI slaves, using a 10-wire ribbon cable. The proposed solution includes using dual buffers for SCK and MOSI signals, with source termination resistors to minimize signal integrity issues. For MISO, the user considers using individual source resistors for each slave, while also exploring the possibility of a single termination resistor if the slaves are closely spaced.

PREREQUISITES
  • Understanding of SPI communication protocols
  • Familiarity with PCB design and layout techniques
  • Knowledge of signal integrity concepts, including termination
  • Experience with empirical testing methods for tuning circuit parameters
NEXT STEPS
  • Research the implementation of source termination for SPI signals
  • Learn about signal integrity analysis tools for PCB design
  • Explore the use of potentiometers for tuning source resistor values
  • Investigate best practices for routing high-speed signals on PCBs
USEFUL FOR

Electronics engineers, PCB designers, and anyone involved in optimizing SPI communication for multi-device systems.

saad87
Messages
83
Reaction score
0
I'm looking for some advice regarding how to terminate SPI signals which are going to an external PCB. I know that SPI isn't meant for board to board communication but in this case the connecting ribbon cable is short - about 6" max length.

My frequency isn't high, just 2 MHz but I have rising edges of about 4-7 ns which are causing issues. Here's what I'm thinking for in the next revision of the board: the "main" PCB needs to connect to 4 external PCBs each of which has two SPI slaves. I'm using a 10 wire ribbon cable and I should have each alternating wire has a ground.

To route SCK and MOSI I have a buffer just before the off board connectors. This dual buffer buffers SCK and MOSI. Each output drives a max. of two SPI slaves (because there's a buffer per PCB). Right at the buffer I have a source terminator resistor whose value I intend to find empirically. To illustrate:

MOSI and SCK from uC -> Buffer -> Ribbon Cable to nth PCB -> SCK and MOSI drive two SPI slaves.

So far so good - the slaves are located fairly near to each other so I think source termination will work OK here for both MOSI and SCK.

My main concern is regarding MISO. How do I effectively route and terminate this line? There's just one load (the master) but several slaves. Do I use source termination for this as well? Each slave could have a source resistance and the traces can join at some point on the slave PCB and then travel via the ribbon cable to the master. To illustrate:

Slave #1's MISO -> Source Resistor ___________________________ -> Ribbon Cable.
Slave #2's MISO -> Source Resistor ______________|

The ____ represents the trace on the PCB.

Note: I have already tried to slow down the rising edges on the current revision via series resistances. This works well but only to an extent. I feel I should make the effort to have proper termination on the next revision of the board.
 
Engineering news on Phys.org
Yes, source terminations are the way to go with SPI. How far apart are the slave ICs? I think I would use a source resistor for each slave's MISO signal, but if they are all within a couple cm of each other, you might be able to get away with a single source termination resistor.
 
BTW, it is probably easiest to empirically determine the value for the source resistors. Just put a potentiometer in the position and tune it to minimize the ringing...
 

Similar threads

Replies
3
Views
2K
Replies
5
Views
2K
Replies
2
Views
4K
Replies
11
Views
14K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 1 ·
Replies
1
Views
10K
  • · Replies 42 ·
2
Replies
42
Views
7K