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: About Pass Through Settings

Part Number: DS90UB954-Q1

Hi, Team.

The link is established and I am able to receive YUV422 8bit data.
I would like to send I2C from Host to the SoC connected to the serializer side.


In the case of the connection shown in the figure below, what register values should be set?

Address 0x58 = set value 0x58
Address 0x5D = set value "What should I set?"
Address 0x65 = set value  "What should I set?"

If there are any other registers that should be set, please let me know.

Best regards.

  • Hello,

    If you want to send an I2C command from the Host->954->933->SoC, then follow the following steps:

    1. In the 954 register 0x4C, select the RX Port that the 933 is connected to. 
      1. For example, if the 933 is connected to RX Port 0 of the 954, then set register 0x4C = 0x01
    2. In the 954 register 0x58, make sure that you Back Channel settings math the connected serializer used and also make sure the I2C_PASS_THROUGH bit is set to 1 (0x58[6] = 1).
    3. Store the 7-bit address of the SoC in the SlaveID register in the 954, which is register 0x5D[7:1] in this case.
      1. Please note that the 7-bit address is the 8-bit address that has been bitwise right shifted by 1.
    4. Create a unique 7-bit address for the SoC in the accompanying SlaveAlias register, which is register 0x65[7:1] in this case.
      1. Please note that if you would like to send an I2C command to the slave SoC, you would send the command to the 8-bit address stored in the SlaveAlias of the 954. 

    There are no other registers to configure.

    Best,

    Justin Phan

  • Hello.
    Thanks for your answer.

    From No.3 and No.4, I set the following
    0x5D = 0x64
    0x65 = 0x66

    After this, to send I2C to SoC, should I set the I2C address to 0x66 and send the data?

    For example.
    If I want to send "Data1_Data2_Data3" via I2C to SoC.
    (1) Since the SoC address is set to 0x66, should I just use "0x66_Data1_Data2_Data3"?
    Or
    (2) Should I deserialize the address and then enter the SoC address, "0x30_0x66_Data1_Data2_Data3"?

    I am not familiar with I2C, so please help me understand.
    Best regards.

  • Hello,

    Register 0x5D in the 954 is the SlaveID. This is where you store the I2C address of the target SoC. In the image you provided, the target SoC address is 0x64. If this is the 7-bit address, then you would store the 7-bits in register bits 0x5D[7:1] in the 954. If this is the 8-bit I2C address, then left shift that number by 1 bit and then store in register bits 0x5D[7:1]. Register bit 0x5D[0] must be 0.

    Register 0x65 in the 954 is the SlaveAlias that is paired with SlaveID[0]. You just need to store any unique 7-bit I2C address here. You can derive the 8-bit I2C address by taking the 7-bit I2C address and left shifting by 1 bit. If you send an I2C command to the 8-bit I2C address of the SlaveAlias, it will be remapped to the derived 8-bit address that was stored in the SlaveID register and then sent to the connected serializer's I2C bus.

    Best,

    Justin Phan

  • Hello.

    Thank you for your response.
    I am now able to communicate without any problems.

    Best regards.