AD7606 Chip Select and FRSTDATA Question


We're trying to use the EVAL AD7606 SDZ with a Raspberry Pi 3B+ (we've used it with the SDP board, and it works, but would like to use it without).

Currently, the we're using the ad7606 linux driver + device tree from here:

We have hooked up the following signals to Raspberry Pi GPIOs : CS, DOUTA, SCLK, CONVST (resister SL7 was changed to the B position), FRSTDATA, BUSY, STBY, and RESET.

The ad7606 shows up in sysfs as expected, under /sys/bus/iio/devices/iio:device0, but any time data is read back ("cat in_voltage0_raw" or similar), it is always zero. Below is a scope capture (using an Analog Discovery) of the signals we see. As you can see, the CONVST signal asserts, and the BUSY signal comes back from the ad7606. FRSTDATA also goes high when expected, but for some reason, the kernel driver forces a reset onto the chip at the end of the convst signal.

Figure 1:

Thinking this was a bug in the driver, we commented out the fail condition (lines 107-110 in ad7606.c) in the ad7606_read_samples function

if (!gpiod_get_value(st->gpio_frstdata)) {
return -EIO;


This resulted in different behavior, where since the driver isn't resetting the ad7606, more channels are read back. However they're all still zero, and reading data over and over will eventually cause something in the chip to fail, at which point it needs a hard reset (so most likely, the driver is not buggy and is actually seeing a fail condition in Figure 1).

Figure 2:

At this point, we're not sure what the problem with the setup is, is there something on the EVAL-AD7606SDZ that won't work with the Linux driver?

Thanks very much.

Parents Reply Children
No Data