My MCU runs a SPI bus with about 4 devices. I'd like to extend this bus to be off board as well i.e. have some PCBs connect to the "main" board and extend the functionality. The "pad to pad" distance would be:
trace length of main board + Cable length + trace length on the extending board
3" + 6" + 3" = about 12"
In my experience, even a 1 MHz signal, with about 7 ns rise times, over this distance via a ribbon cable was overshooting by over 1 V (but there was no excessive ringing). The boards will be powered by the same power supply.
Note: You can't see the rise times here but you can see the excessive overshoot - this is a 3.3V signal. And yes, this was measured properly with a very short wire from the probe to ground. Much like it's often recommend on this site. I don't think it's a measurement error.
I'd like the system to work at 4 MHz but 2 MHz is also acceptable. The max. number of boards I'd like to connect would be about 4 and this would extend the SPI bus to have about 12 devices. I don't think this would be too difficult to manage via code as I already have something working like this. Having the additional slave select lines is also not an issue.
However, my concern is how to send the SPI data from one board to another. Should I just send straight SPI or convert it to LVDS at one end and then convert it back into SPI on the other end?