External Crystal on AD4115 and EVAL-AD4115SDZ

I just purchased an EVAL-AD4115SDZ so I could evaluate the AD4115. I've noticed that it works as expected after a reset using the internal clock - writing 0x0000 to the ADCMODE register and dropping CS indicates continuous conversions at 125Khz on the RD/MISO pin. But as soon as I write 0x00C0 to the ADCMODE register (enable external clock), the continuous data stream stops. When I look at the CLK test point with my oscilloscope, I am not seeing any oscillation. So my question is: did I receive a defective eval board or is there an undocumented issue with the AD4115. For the record, I also have the AD4112 eval board and the external XTAL oscillator works correctly. 



Fixed typo
[edited by: WallyBalls at 1:58 PM (GMT -5) on 15 Jan 2021]
Parents Reply Children
  • It sound like it's working for you which is great - on my setup, the ADC does not produce readings with this configuration when the data is positive. Are you talking directly to the EVAL board with your HW or using an Analog Devices SDB board?

  • Hmmm, is your zero differential value of 0x800000 correct? I'm talking to the eval board with an rpi4. I do not have an SDB.

  • I can never quite reach zero - my negative values are correct though. Question: if you're using an RPi, then I'm assuming you're using the SPI port on the 40 pin header. If so, are you using Python and SPIDEV? And if you're using SPIDEV, how are you controlling the CS line so that it stays low during continuous read transfers? In fact, could you share your code with me?

  • Strange. Not sure if this is helpful but some of my additional settings for bipolar test was, both input buffers on, external ref, ref+/- buffers off, sinc3_map enabled with odr set to fastest (0x0). Yes, im using the spi port channel 0. !!Interestingly, the aux port will not work in mode 3!! Initially I tried using python and spidev but speeds were very limited. I did not explore continuous read with python/spidev. Am currently running a program in c using pigpio to talk to the adc and dump it to shared memory for further processing in python. For continuous read I have a gpio attached to miso and am blocking for data ready/not ready. In this config the delay between data ready and the first clock pulse is just under 750ns. The blocking is putting one core at 100% but I'm ok with that currently...

  • OK, one difference is that I'm using SINC5 filtering. Is PIGPIO allowing you to continuously hold CS low during the data transfers? SPIDEV can't do that. Are you appending the status byte to the data by setting bit 6 in the IFMODE register?