I am trying to use the FMCOMMS1-EZ board connected to a Kintex KC705 FPGA board with a custom hw build (.bit file) and custom from-scratch software (.elf file). I know that AD doesn't support giving all the steps of the init process (initialization and calibration of AD-FMCOMMS1-EBZ). I was wondering if anyone can help me figure out how to read the registers inside the chipsets of the AD board correctly.
I have gone through the datasheets of the chipsets in the FMCOMMS1 board (AD9122, AD9643, AD9548, AD9523, AD4351 and AD8366) and the sw code over at github (analogdevicesinc/no-OS · GitHub). However, I am having trouble in reading any register from any of the above chipsets.
As an example, if I want to read the register 1 from the AD9643 chipset (ADC), I first set the I2C switch (0x74) to LPC, and then send the following I2C commands (as given in AD-FMCOMMS1-EBZ Register Access [Analog Devices Wiki]).
Step 1 - Write the address (0x8001, note that the address is or-ed with 0x8000, as seen in the github code)
1a - 0xb0, 0x03, 0x00, 0x48, 0x00, 0x02 (transaction settings, cs=2)
1b - 0xb0, 0x04, 0x80, 0x01 (write address)
Step 2 - Read 1 byte
2a - 0xb0, 0x03, 0x04, 0x68, 0x00, 0x02 (transacton settings, cs=2)
2b - 0xb1, <1 byte of data> (read one byte)
However, when I run the above sequence of code, all I read is the last value read from the board. What I mean by the last value read is the following. If I load the linux image (ad-fmcomms1-ebz_kc705_05052014) on KC705 and read any register, whatever the value of the register turns out to be is the value I keep reading if I run my (from-scratch) code.
Any help in figuring out how to properly read using the I2C/SPI bridge would be greatly appreciated.
This is the first time I am posting in this forum. In case I did not follow any rule, or this is not the right place to ask such a support question, or this has been answered before/elsewhere etc., please let me know and I will modify the post appropriately.