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

  • Thread starter Thread starter saad87
  • Start date Start date
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
5K
  • · Replies 1 ·
Replies
1
Views
10K
  • · Replies 42 ·
2
Replies
42
Views
8K