My name is Antony and I'm working on a FMCADC4-EBZ board which includes two AD9680 for a total of four ADC channels. I'm trying to give some sense to read values I get from the AD9680s. For testing, I have plugged the FMCADC4-EBZ board into a Zynq ZC706 with Analog Device HDL running on the FPGA and Linaro Linux running on the ARM CPU also from Analog Device.
Using IIO Oscilloscope and/or the IIO C library, I am able to read and write to the SPI registers of my AD9680s, including those relatives to input scale.
By default (during boot), Linux sets the input full-scale range (address : 0x25) to 1.58Vpp. But I manually measured that above ~30mVpp, the values I get from the ADCs saturates. I tried to change input range settings using SPI but not even one SPI config ( from Table 10 page 41 of the AD9680 reference manual) could allow me to convert signals above 30/40 mVpp without saturation. I checked SPI communication on other registers and it works fine. I don't think SPI bus is an issue here.
Moreover, in Linux, the AD9680 appears as IIO devices. When going to the device folder (/sys/bus/iio/devices/iio:device6/) there is two AXI properties showing up as files : in_voltage_scale and in_voltage_scale_available.
root@analog:~# cat /sys/bus/iio/devices/iio\:device6/in_voltage_scale
root@analog:~# cat /sys/bus/iio/devices/iio\:device6/in_voltage_scale_available
0.073242 0.079345 0.085449 0.091552 0.097656 0.103759 0.109863 0.115966
Four things to notice here.
- None of those values may be found in the AD9680 reference manual
- Why is the in_voltage_scale default value (the one set during boot) set to a value not listed in in_voltage_scale_available?
- Are those two AXI properties related to the SPI registers responsible for input range?
- None of those values explains the ~30mVpp I measured.
If someone succeed to give sense to integers obtained from the AD9680s I would be happy to hear your experience. I don't understand why I'm limited to so low voltages.