Does a slave on an SPI connection require a matching clock source?

Before I start working on implementing my new nRF24L01+ transceivers, I need to make sure I can get two ATmega328p microcontrollers talking. Since I have been studying on the communications protocol that is SPI, I noticed that a timing method is sent from the master to each of the slaves on the SCK pin. Now, before anyone goes off on a tangent, I know why the timing is there, why it's important and I know of the difference between synchronous and asynchronous communication.

I digress. Back to the question.

If I have one ATmega328p uC in an Arduino using the built-in Pierce oscillator (xtal + filters) and the other uC is breadboarded and using its own internal oscillator for timing, would it still work? Do I need matching timing sources or is the lower sampling rate going to be my limiting factor?

I might be confusing some things but I know that the standard 16 MHz on the Arduino (master) might cause problems with the 8 MHz on the internally-oscillated uC (slave).

Could anyone with experience on this shine some light on my concerns?

Thanks folks.

The SPI bus has its own timing (clock line is SCK) so it should work as long as the SPI master clock timing stays within the frequency that the SPI slave can handle.

FWIW: I haven't tried a SPI slave yet.

I can see no reason why different CPU clocks would effect SPI, the SPI hardware is little more than a couple of shift registers driven by SCK, the CPU has no input to the process.

So as long as you slave is fast enough to handle the bytes as they arrive it should be sweet.


Rob