Isolating SPI is very simple in the most cases. The lines are all unidirectional and use standard digital logic levels for data, and no open collector outputs to support wire and connections. As long as the speed is fairly modest, below about 5MHz clock rates, most digital isolators will do the job with no further fuss. Unfortunately as the clock rate increases there is a catch that limits the speed.
Standard implementations of SPI use the clock signal, SCLKM, generated by the Master device to control all movement of data on the bus. Data moves between the Master and Slave as if they were two interconnected shift registers. The Master and Slave present data to the bus on one phase of the clock and read the data into their shift register on the opposite phase. This system works fine as long as the round trip propagation delay through the bus is less than half of the clock period, because the data must be back to the master by the next clock edge, half a clock period later.
Incorporating isolation into an SPI bus constrains the SCLKM rate because data from the Slave device must arrive at the Master before the next clock edge. Since the minimum time required for this to happen is 2x the maximum propagation delay, this sets a maximum limit on the clock rate.
We usually recommend the ADuM1401C for this job since it has a guaranteed speed of 45 MHz with a maximum propagation delay of 32 ns. When used to isolate SPI, the clock half period must be greater than 2 propagation delays, or a maximum SCLKM rate of 7.8MHz. This is a severe limitation on the data rate compared to the maximum throughput of the digital isolator. In fact, a digital isolator would need a maximum guaranteed propagation delay less than 5.5 ns to support 45 MHz SPI.
Luckily there is a straightforward solution to eliminate this bottleneck. If the SCLKM signal is wrapped back through the coupler along with the data from the Slave device, the timing between the new signal, SCLKS, and the data is the same to within the propagation delay skew of the coupler. SCLKS can be used to clock data back into the Master at rates which are again set by guaranteed data rate of the coupler. After each transaction, the secondary buffer MREG2 is copied into MREG1 In this example, that raises the SPI clock rate to the full 45MHZ, a 5x improvement. The cost of this solution is the additional coupler channel to wrap the Master clock signal and an extra input shift register in the master controller
The recommended iCoupler devices for SPI applications are the ADuM1401C and ADuM3441. Data rates of up to 50 MHz can be achieved with these devices.
Some other links you may find interesting: