cal-linux
Posts: 3
Joined: Thu Feb 25, 2016 4:44 pm

SPI to read data from AD7356 (high-speed A/D converter)

Thu Feb 25, 2016 5:01 pm

Hi,

This A/D converter provides a serial interface that is compatible with SPI.

I want to read data from it with a Rasp. Pi, but the speed and timing constraints are tight.

The maximum speed is 5MSPS --- at 12-bits plus the overhead, this means a SCLK approx. at 70MHz.
However, if I can reach 1 or 2 MSPS that would be ok.
I also need perfectly consistent timing (that is, no jitter --- if it is, say, 1 MSPS, then I need
the samples at every 1 microseconds; *every* sample after exactly 1 microsecond from
the previous one)

Any advice on what approach would work (if any) ?

As additional information: the way the A/D converter works is:
It has a SS pin (Serial device Select --- equivalent to the CS; it is active low)
It has a SCLK pin, and a SDATA pin.

A falling edge on SS starts the conversion. The reader device must wait a minimum
of 5 ns, and then 14 clock cycles follow (i.e., the SCLK line should be silent for a
certain period after the SS is activated, and then do 14 cycles; during all that time,
the SS line has to be maintained low).

After that process is completed, the reader device raises SS to end the conversion,
and waits a minimum of 10 ns, I believe, before repeating the process to start the
next A/D conversion.

Thanks for any tips / pointers!

Cal-linux
--

User avatar
brekee12
Posts: 335
Joined: Wed Feb 03, 2016 3:36 pm
Location: HU

Re: SPI to read data from AD7356 (high-speed A/D converter)

Fri Feb 26, 2016 3:09 am

Hi,

I built a similar circuit but with another IC. The problem is that can read with 500kSPS, because of other part of the operating system must run. Additionally, example the Wifi interrupts your datatransfer, so your sampling will be not consistent. If you take into considerations these limitations, your circuit can work on auxilary SPI port. (The standard one works only with 8 bit datapackets, auxilary port is available on B+ and 2 B). Auxilary port will handle all your timing anyway. The software runs your AD can use PIGPIO library abyz.co.uk/rpi/pigpio/ and written in C.
Brekee12
on a Raspberry B+ with whezzy, two Zero with Jessie Light

Return to “Interfacing (DSI, CSI, I2C, etc.)”