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-Q1EVM: The communication of 953 and 954 may not be functioning

Part Number: DS90UB954-Q1EVM
Other Parts Discussed in Thread: ALP

Hi all,

When I open the ALP, it seems that 954and 953 are linked,like this

but there is something wrong when I use I2c,I can't read 953's ID

It returns 0,do you know what could I do ?

  • Hello,

    Could you verify you've set the aliases?

    - Des reg 0x4C: Select the right RX port to write
    - Set/Check real I2C addresses
    - Reg 0x5B SER DEVICE ID: Set the real serializer I2C address. This is typically loaded already
    - Reg 0x5D SlaveID[0]: Set the real CMOS sensor I2C address
    - Reg 0x5C SER_ALIAS_ID: Set the alias serializer I2C address
    - Reg 0x65 SLAVE_ALIAS_ID[0] (camera alias ID): Set the alias CMOS sensor I2C address

    Once you set the aliases, communicate with the 953 and imager remote using their alias IDs.

    Best,
    Jiashow
  • hi Jiashow,

    Thanks for your reply !

    I have communicated with the 953 now , and it follows another 2 questions :

    -A 954 can linke to two 953s, and we have only one SER_ALIAS_ID, if the SER_ALIAS_ID is for port0 , then what's the id of port1?
    -I don't have the I2C address of sensor ov10640, I have searched E2E, an answer of a reply is 0x60 , but 0x60 is the address of 954, so I'm so puzzled.

    Best,
    GY
  • Hi GY,

    -A 954 can linke to two 953s, and we have only one SER_ALIAS_ID, if the SER_ALIAS_ID is for port0 , then what's the id of port1?

    The SER_ALIAS_ID register is port specific. You need to first select which RX port you are writing to using register 0x4C. After you select it, then you can set the SER_ALIAS_ID for each serializer.


    -I don't have the I2C address of sensor ov10640, I have searched E2E, an answer of a reply is 0x60 , but 0x60 is the address of 954, so I'm so puzzled.

    You are correct. The real I2C address of OV10640 is 0x60, and as you mentioned, this conflicts with the 954 I2C address of 0x60 as well. In order to avoid confusion, you need to set SLAVE_ALIAS for the imager as well, just like what you did for the serializer:

    - Reg 0x4C: Select the right RX port to write

    - Reg 0x5B SER DEVICE ID: Set the real serializer I2C address. This is typically loaded already. Typically 0x30.

    - Reg 0x5D SlaveID[0]: Set the real CMOS sensor I2C address. This will be 0x60 in your case.

    - Reg 0x5C SER_ALIAS_ID: Set the alias serializer I2C address. You can pick any unused I2C address, leave the last bit 0.

    - Reg 0x65 SLAVE_ALIAS_ID[0] (camera alias ID): Set the alias CMOS sensor I2C address. You can pick any unused I2C address, leave the last bit 0.

    After you set your camera alias ID, you can talk to the camera using the alias I2C address from register 0x65.

    Best,

    Jiashow

  • Hi Jiashow,

    Thanks for your reply so much!

    I tried to set the registers , I can read sensor's registers , when set 0x5D,0x62 , and others are all set as you recommended. If I set the register as 0x5D,0x60 , I can't read sensor's registers .
    I read 0x300c of sensor , when 0x5D,0x62, it returned 0x60.
    Is there something wrong?

    --

    Another question is that I set the gpios of 953 through 954, like this

    board.WriteI2C(UB954,0x5C,0x18)
    board.WriteI2C(UB954,0x4C,0x01)
    board.WriteI2C(UB953,0x0E,0xF0)
    board.WriteI2C(UB953,0x0D,0xF0)
    board.WriteI2C(UB954,0x6E,0x99)
    board.WriteI2C(UB954,0x6F,0x99)

    Oscilloscope shows that the GPIOs of 953 are all high , but the status register returns 0,

    board.ReadI2C(0x18,0x53)
    0

    So,how could I get the status of 954 and 953's GPIOs ?

    --

    The last question is that could you sent me a list to initialize the ov10640 ?
    Or some configurations which can make the sensor output images in any formats?
    It's really hard for me to get the list.Thank you so much.

    Best,

    GY
  • Hi GY,

    Not sure I understand your first question. Did you set your sensor alias on register 0x65 and communicate to the imager using only its alias? Register 0x5D should simply store the real sensor ID.

    Regarding your question about GPIO, register 0x53 on the serializer can only be used if the GPIO is set for input only. In your case, it is set as output so this register cannot tell you whether your GPO is high or low. To verify if they are high, we recommend using a scope to measure the GPOs.

    Please accept my friend request so I can provide you an example initialization script for the imager.

    Best,
    Jiashow