Post Go back to editing

Problem with I2C commmunication with ADV7610

Thread Summary

The user encountered issues reading register values from the ADV7610 HDMI receiver over I2C, where all reads returned 0xFF. The problem was resolved by ensuring the STOP bit was only sent after the entire read process was completed, not between writing the register address and reading the data. The user confirmed that the I2C driver works correctly with other devices and that the issue was specific to the ADV7610.
AI Generated Content

Hello all,

I have an ADV7610 Low Power 165 MHz HDMI receiver, which is connected to an I2C bus. First of all, the device address which should be either 0x98 or 0x9A according to the datasheet/user guide was changed to 0x4C (which is 0x98 shifter one bit to the right). Anyway, I am able know to see the device over I2C bus, but the problem is that value of each register in the device I read is always 0xFF. For instance, the values for the revision registers at addresses 0xEA and 0xEB should be 0x2051 but the values for both registers are always 0xFF. I try to read the register values by more or less standard way to read from a slave on I2C bus which is: writing the address of the register to the slave device address over I2C bus (in this case writing register address i.e. 0xEA to 0x4C (HDMI chip slave address)) and then read a byte from the slave device over I2C which woks for all other devices I have connected to I2C bus.

I am wondering whether there are some steps to make the chip responding correctly over I2C bus, before starting to configure it?

Thanks for your help,

Dan

  • Other then keeping reset low for 5ms after the power rails become stable, there should be no issues accessing the ADV7610.

    You understand the difference between 8-bit and 7-bit addressing

    Have you tried other boards in case this one is damaged?

    For read back, after the writing the register address you need to do another I2C start command to read the byte back.  Check out the Read and Write Sequence figure in the user manual.

  • I actually apply the reset signal "high-low (start for ~10 ms)-high" before any operation.

    The I2C driver I have send 7-bit addressing with set/reset read/write bit, send start/stop signals seems to be flawless. As I mentioned, the driver works fine with other I2C devices. Only ADV7610 is not answering properly. The read/write sequence for this chip should be completely compliant with I2C protocol.

    I don't think that the circuit is damaged. I tried two different boards with the same results.

    Regards,

    Dan

  • Is the ADV7610 alone on the I2C bus?... if not try it alone just in case where the issue is the same than here: AD5622 I2C Issue.

    Other thing to try: momentarily short I2C clock to GND after power-up, before the first I2C transaction, in case the HDMI I2C requires that reset, like some DDC device requires.

    hope this can help

    good luck

  • I have actually solved the problem. The problem was that when I try to read a value from a register, I need to send STOP bit only and only when the whole process of reading is done. In my code, I used to send a STOP bit even beteween writing address of the register and reading the data which caused error. The interesting thing was that none of the slaves in the bus had any problem with this behavior which was actually wrong according to the datasheets of all other slaves too, but only this HDMI chip was accurate enough to force me to follow the instructions exactly and word by word!

  • Glad you got the problem resolved, thanks for the update.