Using ADuM3150 for SPI Interface with Arduino

arduinodigital-isolatorisolationspi

I am trying to use an isolator for SPI communication with the Arduino. I am presently using the ADum3150. You can find the datasheet here. There are some delays associated with this arrangement and the ADum3150 provides a 'delayed clock' as mentioned in page 17 of the datasheet to read the output in sync.

The arduino has only clock, miso,mosi and ss. How can I use this delayed clock function on the arduino ?

Best Answer

The delayed clock on this IC is provided to facilitate high speed SPI communications. At high speeds, the propagation delay through the isolator can exceed the repeat rate of the clock. The delayed clock corrects for this by providing a clock signal in sync with the returned data on MISO.

The way you'd use this in practical terms is to hook MISO and the delayed clock up to a second SPI peripheral, in slave mode, and read returned data from there instead of from the master SPI peripheral.

As you observe, the processor in the Arduino has only one SPI bus peripheral. However, use of the delayed clock is only necessary at high speed. The list of features on page 1 of the datasheet states:

Supports up to 40 MHz SPI clock speed in delay clock mode
Supports up to 17 MHz SPI clock speed in 4-wire mode

Since the AVR only runs at 16MHz, and the fastest the SPI peripheral can run is 1/2 that, 8MHz. Since this is well below the stated limit of 17MHz, you can simply ignore the delayed clock and connect the isolator as you would a standard 4-wire SPI peripheral.