This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DS90UB954-Q1: I2C remote slave access

Part Number: DS90UB954-Q1

Expert,

The connection is Camera->953->954->Host(I2C master). Now host can access 954, 953 through I2C successfully. But Host cannot access Camera(I2C remote slave ) through I2C.

The relevant register setting is :

1. 0x5d set to 0xF4    // Slave ID(Camera physical I2C address) 0xF4>>1

2. 0x65 set to 0x96    // Slave Alias 0x96>>1

3.0x58 set to 0x5E    // enable I2C pass through

Then host access I2C address 0x96>>1 but failed.

Is there any suggestion on this?

Great thanks

  • Hi Ryan,

    On the 954 deserializer, I believe that you have already done the following:

    1. Set reg 0x4C[4] and reg 0x4C[1:0] to select which RX port you would like to enable I2C read/write commands.
    2. The I2C address of the selected RX port Serializer will be shown in reg 0x5B.
    3. Set reg 0x58[6] = 1, to enable I2C_PASS_THROUGH.

    Now, the deserializer will be able to forward local I2C transactions with valid addresses, through the Bidirectional Control Channel, to the remote I2C bus. 

    In regards to the Slave Alias[0] (reg 0x65) and Slave ID[0] (reg 0x5D), you need to store the 7-bit I2C address of the camera in the Slave ID and write to the address stored stored in the Slave Alias. Slave Alias can be any unique I2C address. But the Slave ID needs to be the camera's 8-bit address shifted left.

    For example,

    If the camera I2C address = 0x24 = 0010 0100, then reg 0x5D = 0x24<<1 = 0x32 = 0100 1000.

    Can you implement this, based on your camera's I2C address, and try the I2C access again?

    Best,

    Justin Phan

  • Great thanks, Justin