Hello,
You do not say whether the MCU is the SPI master or slave? Either way, you will not achieve a SPI clock frequency of 20 MHz. The maximum limits for a 'QG8 device will be fbus/2 for SPI master, and fbus/4 for SPI slave. If you are operating at the maximum bus frequency of 10MHz, this will give 5MHz maximum for a master, and 2.5MHz for a slave. For a lower bus frequency, the upper limits will be correspondingly lower.
At very high clock frequencies, transmission line considerations may come into play, with the need to terminate each end with a "characteristic impedance" value, to eliminate signal reflections. However, this is not generally feasible with low power devices due to insufficient drive current being available. And I don't think that this is your problem since the propagation speed is about 3.3 nanoseconds per metre - a small fraction of the clock period.
It would seem far more likely that you have signal "crosstalk" due to the capacitance between individual conductors of the ribbon cable. If the clock and serial data signals are in adjacent conductors, the crosstalk may be reduced by having a grounded conductor interspersed between each of the signal leads. Alternatively, you could utilize the lines used for other low frequency signals that already have bypass capacitance to ground.
If the MCU is the master, the simplest way to reduce the effect of signal distortion is to reduce the SPI clock frequency below the maximum allowable value - you might try a setting of say 1 MHz.
I do not like the idea of using 1nF shunt capacitors. These may cause the outputs to become over-stressed, especially for high SPI clock frequencies. If additional signal filtering is required, you might try fitting a series resistance at each output, say 100 - 300 ohms. You would then use a much lower shunt capacitor value at the input pins, perhaps 30-100pF. But this should be necessary only if lthe crosstalk reduction measures outlined above were not sufficient.
Regards,
Mac