I am using a custom VHDL I2C controller to communicate with the AD-FMCOMMS1-EBZ board. First, I tried this:
I2C_START | 0x58(W) | 0x02 | I2C_STOP
I can see the blue light blinking, so I2C seems to be working. Also, I can see the ack in ChipScope.
However, no other commands seem to work properly. For instance, I tried this command:
I2C_START | 0x58(W) | 0x01 | I2C_STOP
I2C_START | 0x58(R) | ... (x32) | I2C_STOP
I expect to get the 32-byte firmware ID, but I see one byte of '0x10' and then thirty-one bytes of '0xFF'. In ChipScope, I saw the ack for the 0x01 command, so I'm not sure why I can't read the firmware ID.
I see similar results with other commands. I tried this:
I2C_START | 0x58(W) | 0x03 | 0x00 | 0x48 | 0x00 | 0x02 | I2C_STOP
I2C_START | 0x58(W) | 0x04 | 0x80 | 0x01 | I2C_STOP
I2C_START | 0x58(W) | 0x03 | 0x04 | 0x68 | 0x00 | 0x02 | I2C_STOP
I2C_START | 0x58(R) | ... (x1) | I2C_STOP
I expect to get 0x82, but I actually get 0x3F. In fact, I get 0x3F for any register that I try to read on the AD9643 device. Sometimes, I eventually see 0x20 instead, but I never see anything other than those two values. I have similar results with the other devices on the board. Regardless, I always see acks for all of my commands in ChipScope.
So, it seems like the I2C is working, but I never get the expected results. Any ideas?