Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Terminating and Routing SPI

  1. Jul 25, 2012 #1
    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.
     
  2. jcsd
  3. Jul 25, 2012 #2

    berkeman

    User Avatar

    Staff: Mentor

    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.
     
  4. Jul 25, 2012 #3

    berkeman

    User Avatar

    Staff: Mentor

    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...
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Terminating and Routing SPI
  1. The Terminator (Replies: 3)

  2. Terminal Block (Replies: 7)

  3. Motor terminals (Replies: 7)

Loading...