I'm developing on an ML403 evaluation board with a Virtex-4 device. I'm calling Xilinx's Level 0 I2C driver routines (XIic_Send, _Recv) from a PPC405 program running under the QNX OS. I'm connecting to an external I2C device, a temp sensor/ADC, via the J3 header on the ML403.
When scoping the I2C SDA and SCL lines, I often notice a missing bit within the 8-bit address word. Obviously, when this happens, the addressed device does not ACK the transfer.
I believe that my physical I2C connection is correct because I can successfully and consistently use the GPIO-I2C bit-banging approach (as implemented in Xilinx's iic_eeprom test program) to communicate with my external device.
I'm not sure how my operating environment or the driver could cause this problem. The address is supplied by a single byte-write to the OPB_IIC core's Tx FIFO register; that seems atomic to me. My gut feeling is that there is a problem with the core.
Anyone seen this problem, or know what I might be doing wrong??