The LTC6820 isoSPI isolated communication interface is typically used in automotive applications. One of the more popular applications is to isolate the battery monitor circuits. However, it can be a desirable solution for medical applications where isolation is necessary. Another advantage for the LTC6820 is to reduce the number wires in the cable, shown in Figure 1 with the twisted pair. This can drastically reduce the total solution cost since the cables for medical equipment needs to be qualified and more wires means higher qualification costs. The LTC6820 can also be an ideal candidate in some industrial applications. One application is in the case where a one-off sensor is more than three feet away and a microcontroller would be necessary to translate the SPI to RS485 or other common protocol. The LTC6820 would eliminate the need for the complexity of using the microcontroller and transceiver and this complexity.
To prove this concept, I used Linear Technology’s popular family of No Latency Delta Sigma ADCs which offers 16-bit to 24-bit converters for precision measurements. These converters can be used with the LTC6820 to reduce the wire count and isolate the converter. This blog post is intended to discusses how to implement the LTC6820 with the LTC24XX SPI Delta Sigma family.
There are two approaches for reading data from the converter in the LTC24XX family. The first approach is to insert a delay before reading the data after a start of conversion. This delay should exceed the data sheet maximum conversion time for the particular setting and part. Effectively we are relying on the guaranteed timing of the part to end its conversion before we attempt to read the data. The second approach for reading data is to poll the MISO line and wait for it to transition from high to low. This indicates that the end of conversion (EOC) has occurred and the correct data can be read. This is a feature that the LTC24XX SPI family have and is illustrated in Figure 2. Note how the first EOC test showed MISO (SDO) high then the second EOC test showed low. We can proceed to read the data only when the MISO is low.
As shown in Figure 1, a master LTC6820 is used to encode the SPI and a slave LTC6820 is used to decode back to SPI. The correct SPI mode needs to be set on the LTC6820 to ensure proper communication with the master and slave and the LTC24XX family. One aspect of the LTC6820 is that the MISO on the master device is only updated on the falling edge of CS or the non clocking edge of the SCK. This is important since the end of conversion for the LTC24xx family relies on this signal.
Putting It All Together
Now for the grand finale. My first test was to connect the LTC6820 to the LTC2498. The goal was to just kick the tires. I connected the Linduino to the LTC6820 and saw the waveforms shown in Figure 3. Notice that the MISO on the master LTC6820 did not update to low when the MISO on the LTC24XX changed from high to low. This may be a little strange, but as stated in the previous section this is expected behavior, the MISO on the LTC6820 master updates on the falling edge of CS or non clocking edge of the SCK.
Here is one way to read the data from the LTC24XX family. We can use approach one as discussed in the LTC24XX details. We insert a delay longer than the specified time shown in the data sheet for the EOC to occur. This ensures that the MISO will be low when CS is brought low and data is transferred. Figure 4 shows a successful transfer of data.
The second approach is to poll the MISO line and check for it to go low. To properly implement this, the controller will need to toggle CS to update the MISO line to its current value. Once a low is detected, the data can then be transferred. Figure 5 shows this method in action.
The LTC6820 can be used in other applications besides automotive. It can be used to reduce wire count in cables and allow long distance communication to remote sensors. The Linduino code is available in the LTsketchbook folder called 24xx_iso_spi. To download, LTsketchbook click here Solutions Search - Linduino.