AnsweredAssumed Answered

FMCOMMS1-EZ I2C read operation

Question asked by ddash on Oct 6, 2014
Latest reply on Oct 10, 2014 by DragosB



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.