I'm trying to make data acquisition device using TI ADS7851 and a Raspberry Pi 3, but ADS7851 has 2 data output.. I have no idea how to connect.

ADS7851's serial output is:

1 sclk
1 /cs
2 sdo (sdo-a, sdo-b)

is it possible to make communication SDO-A and SDO-B simultaneously between ads7851 and Raspberry Pi 3?


1 Answer 1


The Short Answer is Not Easily

SPI Dual Mode is not supported on Raspberry Pi, and is rarely supported in general. You may find other micro-controllers that support Dual or Quad SPI (QSPI)

enter image description here

Interfacing ADC's is a big pain, this one is particularly difficult. There are a few things that make this ADC stand out to me

  • The Data Clock is the Sampling Clock
  • Dual SPI
  • No Configuration Interface or Registers
  • Independent Ground References

This looks like a part for a particular application/customer.

If you don't need the independent references you may find others devices easier to use.

You have a few options to pursue for prototype, but in the professional world you would use a microcontroller or ASIC that support SPI Dual Mode

Interleave Channels

Use the ADC at twice the sampling rate you were planning to, and use a Multiplexer (switch) to feed either SDO-A or SDO-B to the SPI Receiver.

You can attach the MUX control to CS pins. Doing it in such a way, in software you would use CS0 for Channel A and CS1 for Channel B, sampling is done A-B-A-B

Shift Register (UART)

You can use shift registers attached to SDO-A and SDO-B to clock in the sampled data and read out as parallel GPIO (28 bits - 2x14).

In this scenario, SCL is connected to Shift register and ADC, SDO-A SDO-B connected to shift registers. Your Controller only acts as a clock source and CS driver

This will require making sure that SDO data is stable when you clock the shift register, otherwise you will miss bits. You may need to invert the clock signal to the shift register.

This can be done in a way that does not slow down the throughput of the ADC.

Independent Sampling Controller

You can commandeer a pair of small micro-controllers to sample SPI Data for you, this is a fancier version of the UART Solution.

Sampling controllers can do some basic pre-processing and data buffering as well.

These sampling controllers could potentially be small 8-bit MCU's like the ATTINY.

If you can find a micro-controller that supports Dual SPI this would be a clean solution

  • Thank you SO much for your advice. I'll looking for another device which supports DSPI because ADC board is already in PCB process now.... Anyway, like what you've said, maybe the FPGA would be useful to break through this problem. Again, thank you! Sep 22, 2017 at 13:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.