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: IIC acks originating from a remote imager are not being relayed back to the IIC master.

Part Number: DS90UB954-Q1

I have an IIC master connected to DS90UB954 deserializer via a "local" IIC connection.

The DS90UB954 is connected to a DS90UB913A serializer via a FPD serial connection.

The DS90UB913A is connected to an imager via a "remote" IIC connection.

The IIC master is able to communicate with the DS90UB954 deserializer.

The DS90UB954 deserializer is able to communicate with the DS90UB913A serializer, and indicates "lock".

The remote IIC connection between the serializer and the image appears functional, as i've viewed the IIC traffic present on the "remote" IIC bus, and have confirmed that the device address present in the traffic is correct.

When the IIC master attempts to write to the imager, the imager successfully sees the IIC write command on the remote IIC connection, AND it acknowledges that message with an ACK on the "remote" IIC bus.

However, back at the "local" IIC bus (the one between the master and the DS90UB954 deserializer), I do not see that ack coming out of the DS90UB954 deserializer (and subsequently being passed back to the IIC master).  As a result, the IIC master never sees that the imager has acked its IIC message, so the master assumes IIC communication has failed.

My question is, why is the DS90UB954 deserializer not relaying the ack to the "local" IIC bus?

DS90UB954 Device configuration notes:

* Address 0x4C is set to 0x03

* Address 0x58 is set to 0x58

* Address 0x5B is automatically populated with B0 (which is correct)

* Address 0x5C is set to 0xB0

* Address 0x5D is set to 0x20 (which is the address of the imager)

* Address 0x65 is set to 0x20

  • Hello,

    Can you please read the following 0x0F on the 913? Want to see what is being programmed there. 

    Glenn 
  • I am unable to read the 913 registers through the 954's IIC port, but if I connect the IIC master to the IIC port on the 913, I then can read the 913's registers.  At address 0x0F, I see the value 0x00.

  • Hi Jeff,

    Can we speed up the watchdog timer? We need to configure register 0x0F = 0x02.

    From 954. Complete this as one of your first writes 

        reg_0x58 = board.ReadI2C(devAddr,0x58)
        reg_0x58 = reg_0x58 | 0x60 # Enable I2C Passthrough with auto ACK
        board.WriteI2C(devAddr,0x58,reg_0x58)
        board.WriteI2C(serAlias[rx_port],0x0F,0x02) # Speed up I2C bus watchdog timer to ~50us
        reg_0x58 = reg_0x58 & 0x1F # Disable auto ACK and I2C passthrough
        board.WriteI2C(devAddr,0x58,reg_0x58)

    Glenn

  • It turns out that this issue was related to fact that interfacing a 954 with a 913 requires the FPD link to be configured for "raw" mode.  Once the 954 was changed from "CSI" mode to "RAW" mode (done by changing a hardware jumper on the 954 evaluation board), the IIC bus behaved as desired.

    This issue is resolved.  Thanks for looking at this.