isoSPI

Introduction

isoSPI is a proprietary Linear Technology protocol that uses Isolated Transceivers to provide robust galvanic isolation for various digital serial communication interfaces and devices. A transceiver is just a device that includes both a transmission and receiver in a single module, whose purpose is to transmit and receive data. Isolation barriers are implemented using either inexpensive Ethernet transformers, coupling capacitors or embedded inductors. The main benefit is very low EMI susceptibility and emissions, as well as high noise immunity, to preserve signal integrity.

Precision window comparators in the receiver detect the differential signals. The drive currents and the comparator thresholds are set by a simple external resistor divider, allowing the system to be optimized for required cable lengths and desired signal-to-noise performance.

Architecture

There are transceivers that take 4-wire SPI and translate them into pulses

Maximum Clock Speed1 MHz (see p.12 in LTC6820 datasheet)
Synchronous/AsynchronousSynchronous
Lines2 (twisted pair)
Number of SlavesLimited by the number of transceivers
Communication DirectionBidirectional (Full-Duplex)
SignallingDifferential between isoSPI positive and negative
Maximum Cable Length100 m (according to LTC6820 datasheet)

Note that as your cable length increases, your data rate is also going to decrease.

Scope Captures

Being able to decode scope captures are pretty useful when debugging. Linear Technology has an isoSPI Analyzer board (LTC DC1907A) which automatically converts the isoSPI signal into 4-wire SPI for use with the LTC6804, but we can do the same thing manually using an oscilloscope.

Scope Settings

Probe betweenisoSPI positive and negative
ModeMath






Logical Signals

(Taken from Table 1 in the LTC6820 datasheet)

Pulse TypeFirst LevelSecond LevelEnding Level
Long +1+Va (150ns)-Va (150ns)0V
Long -1-Va (150ns)+Va (150ns)0V
Short +1+Va (50ns)-Va (50ns)0V
Short -1-Va (50ns)+Va (50ns)0V

(Taken from Table 2 in the LTC6820 datasheet)

SPI Master EventTransmitted Pulse
CS RisingLong +1
CS FallingLong –1
SCK Latching Edge, MOSI = 1Short +1
SCK Latching Edge, MOSI = 0Short –1

(Taken from Table 3 in the LTC6820 datasheet)

Received PulseSPI Port ActionReturn Pulse
Long +1Drive CS highNone
Long -1Drive CS low

Short -1 pulse if MISO = 0

No return pulse if MISO = 1

Short +1
  1. Set MOSI = 1
  2. Pulse SCK
Short -1
  1. Set MOSI = 0
  2. Pulse SCK

Example 1: Logical High (0xFF)

Here's a scope capture with logical high being sent by the SPI master.

Example 2: Odd Alternating Bits (0xAA)

Here's a scope capture with odd alternating bits being sent by the SPI master.

Example 3: Even Alternating Bits (0x55)

Here's a scope capture with even alternating bits being sent by the SPI master.

Gotchas

When debugging the LTC6804 and the LTC2484 for MSXII, we ran into a few issues. Here are a couple things to watch out for:

  • Check that the SPI mode your transciever is configured for matches the SPI mode of the IC
  • Ensure that you are connecting the isoSPI positive on the master to positive on the slave, and isoSPI negative on the master goes to negative on the slave
  • We had an issue where the bias resistor and the comparator pins were flipped
    • The team spent a lot of time debugging this (Karl brought up the LTC6804-1 validating against 4-wire SPI in Spring 2017, Danyon spent a lot of Fall 2017 debugging issues with isoSPI, and then we found the issue in Winter 2018 around midterms)
    • This was discovered by verifying that our driver worked over 4 wire SPI, and then moving everything over to isoSPI (and then noticing that things weren't working)
    • Using the oscilloscope setup described above, we noticed that the signals were not what we expected