I have two PCBs connected via ~20 cm ribbon cables to a Raspberry Pi (with a custom breakout board at the pi). The PCBs each have some port expanders (MCP23S08) and DACs on them, all of which I'm controlling using a shared SPI line. When I look at the SPI signals on the Oscilloscope, there is some very minor overshoot and ringing, but it doesn't look too bad and since I'm operating at 10kHz to 100kHz, I don't think this is an issue.
Now I experience the strange issue that one of the port expanders on PCB A only seem to be working when PCB B is not connected and stops working as soon as I plug in PCB B (they share the SPI CLK, MISO and MOSI, but have completely separate CS lines).
The problem is that as soon as I connect the oscilloscope probe to the MOSI line, it also starts working (even with PCB B plugged in), and the SPI signals look exactly as expected (this seems to be a classic Heisenbug). I suspected that the 1 MOhm impedance of the Scope acted as a pull-down resistor on the MOSI line, but when I add a 1 MOhm resistor from MOSI to ground it does not have the same effect.
So my question is:
- What is it about the scope that could change the physical behavior of the MOSI signal, if not the 1MOhm resistance? Is it the capacitance? Something else that I'm not thinking about?
- What could be an explanation for the problems in the first place? All my lines are not terribly long (20 cm), I'm at relatively low clock frequencies (but different frequencies seem to make no difference) and I don't have any line termination or pull-ups /-downs (except for the CS lines, of course). Could these be some kind of reflections at the chips on PCB B which disappear when I disconnect it and which are somehow absorbed by the Oscilloscope as soon as I connect it?
- Do you have any suggestions how I would go on with exploring the problem further? As it essentially goes away as soon as I connect the scope, I have no clue what else I could be trying...