I'm using the AD9249 eval board and FMC interposer connecting to a Xilinx FPGA board. Everything is working great when setting the AD9249 to use pin-configured settings, I get great samples out of it.
Trying to change over to SPI everything falls apart. I am trying to read from register 0x01 - the manufacturer ID reg, which is supposed to be a read-only value of 0x92. This does not happen. The 4 appropriate jumpers for P1 on the AD9249 eval board are all set.
Unfortunately the ADC uses a dual-purpose SDIO data pin which adds a lot of complexity to the hardware... I placed the T (tristate control aka direction) pin of the FPGA IOBUF for the SDIO pin under software control, like a GPIO pin that . Everything is 8-bit words, defaults match the AD9249 defaults (MSB first, etc.) Here's what I tried to do:
- Set Tristate for output, T = 0, hence GPIO = 0.
- I wrote 0x80, 0x01 from the FPGA to the AD9249. Trying to say here that I have a Read, want 1 byte back, so w0/w1 both = 0. Want response from register 0x01.
- Changed Tristate for input, GPIO = 1.
- Did a read for one byte. Got nothing back.
The three attachments show this. I've got the zoomed out whole thing done with a logic analyzer in the FPGA (Vivado). Then there's the zoomed in of the write. The glitch there shouldn't be captured by the AD9249 as per the Xilinx answer record AR 59647. Then, there's the zoomed in of the read.
Where could I be going wrong? Why is the ADC not responding, and is what I send to it correct?
Note - the time scale in the logic analyzer is on a 5ns period, so for instance the 60000 position in 60K*5ns = 300us of measurement time.