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.

Compiler/DS90UB926Q-Q1: Initialization of DS90UB962 which connect to DS90UB913

Part Number: DS90UB962Q-Q1

Tool/software: TI C/C++ Compiler

Hi TI members:

Our DS90UB962 will connect to 4 camera module (which use DS90UB913 serializer)

Right now I try to config the DS90UB913 register through i2ctool.

I already connect one camera module to 962 RIN0,

and I try to set 962 RIN0 as CSI-2 mode, my steps is below config

i2cset -f -y 3 0x34 0x4c 0x01  /*RX0*/
i2cset -f -y 3 0x34 0x32 0x01  /*Enable TX port 0*/
i2cset -f -y 3 0x34 0x33 0x02  /*Enable Continuous clock mode and CSI output*/
i2cset -f -y 3 0x34 0x6D 0x6c  /*CSI Mode*/
i2cset -f -y 3 0x34 0x72 0x00
i2cset -f -y 3 0x34 0x7C 0x20
i2cset -f -y 3 0x34 0xD5 0xF3
i2cset -f -y 3 0x34 0x5D 0x58  /*Serializer Address*/
i2cset -f -y 3 0x34 0x65 0x58
i2cset -f -y 3 0x34 0x5D 0x48  /*Sensor Address*/
i2cset -f -y 3 0x34 0x65 0x48

But after that, I still can't access serializer 913 register.

root@j7-evm:~# i2cget -f -y 3 0x58 0x05
Error: Read failed

Can you help to check what register of 962 I miss to initialize? 

BR

Sentinen Chen

  • Hello Sentinen,

    DS90UB926-Q1 is not compatible with DS90UB913-Q1. Are you asking about a different deserializer device?

    Best Regards,

    Casey 

  • Hi Casey:

    Sorry for my mistake

    Our deserializer is DS90UB962, not 926. 

    It's my typo.

    Sorry. 

    BR

    Sentinen Chen

  • Hi Casey:

    I try to modify some new register as below, but I still can't access 913 successfully.

    1. modify 0x6D register as RAW12 High Frequency Mode

    2. modify 0x25 register timestamp frequency

    3. change SlaveID/Slaveaddress to 8 bit

    i2cset -f -y 3 0x34 0x01 0x02
    i2cset -f -y 3 0x34 0x4c 0x01
    i2cset -f -y 3 0x34 0x32 0x01
    i2cset -f -y 3 0x34 0x33 0x02
    i2cset -f -y 3 0x34 0x72 0x00 
    
    i2cset -f -y 3 0x34 0x5c 0xB0
    i2cset -f -y 3 0x34 0x5D 0xB0   ==> Serializer Address 0x58 in 8 bit
    i2cset -f -y 3 0x34 0x65 0xB0
    i2cset -f -y 3 0x34 0x5E 0x90	==> Sensor Address 0x48 in 8 bit
    i2cset -f -y 3 0x34 0x66 0x90
    
    i2cset -f -y 3 0x34 0x6D 0x7E  /*RAW12 High Frequency Mode for 913 */
    i2cset -f -y 3 0x34 0x71 0x2C
    i2cset -f -y 3 0x34 0x7C 0x20
    i2cset -f -y 3 0x34 0xD5 0xF3
    i2cset -f -y 3 0x34 0x58 0x58   
    i2cset -f -y 3 0x34 0x25 0x30  /* timestamp frequency */
    

    And I try to dump my 962 register default value, hope it is helpful.

    root@j7-evm:~# i2cdump -y -f 3 0x34
    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 68 00 1e 40 d0 01 00 fe 1c 10 7a 7a 0f b9 00 ff    h.?@??.???zz??..
    10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 02    ..............??
    20: f0 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ??..............
    30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    40: 00 a9 71 01 00 00 20 00 00 00 00 12 00 00 02 00    .?q?.. ....?..?.
    50: 00 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00    ........?.......
    60: 00 00 00 00 00 00 00 00 00 00 00 00 00 7a 88 88    .............z??
    70: 2b 2c e4 00 00 00 00 c5 00 01 00 00 20 00 00 00    +,?....?.?.. ...
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    a0: 00 00 00 00 00 1c 00 00 00 00 00 00 00 00 00 00    .....?..........
    b0: 1c 3a 15 08 25 00 18 00 aa 33 83 74 80 00 00 00    ?:??%.?.?3?t?...
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    d0: 00 43 94 0f 60 f2 00 02 00 00 00 00 00 00 00 00    .C??`?.?........
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    f0: 5f 55 42 39 36 30 00 00 00 00 00 00 00 00 00 00    _UB960..........

    BR

    Sentinen Chen

  • sentinen,

    you can refer to the link page22 which has one script example to pair with ub913a.

    https://www.ti.com/lit/ug/snlu177/snlu177.pdf?ts=1595414966105&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FDS90UB964-Q1EVM

    here, pls note:

    1. based on camera module's ub913a design feature, you need set the exact register as well which are included in above script example.

    2. when you read back the reg. from 962, you need assign the channel firstly in reg. 0x4c. the above data from you are not correct due to incorre t reg. 0x4c.

    Steven

  • Hi Steven:

    Thanks your reply.

    I already try the example script's flow,like below command:

    i2cset -y -f 3 0x34 0x01 0x02
    
    i2cset -y -f 3 0x34 0x10 0x81
    i2cset -y -f 3 0x34 0x11 0x85
    i2cset -y -f 3 0x34 0x12 0x89
    i2cset -y -f 3 0x34 0x13 0x8D
    
    i2cset -y -f 3 0x34 0x32 0x01
    i2cset -y -f 3 0x34 0x1f 0x02
    i2cset -y -f 3 0x34 0x33 0x01
    i2cset -y -f 3 0x34 0x20 0xe0 
    i2cset -y -f 3 0x34 0x4c 0x01
    i2cset -y -f 3 0x34 0x58 0x58
    
    i2cset -y -f 3 0x34 0x5c 0xB0
    i2cset -y -f 3 0x34 0x5d 0x90
    i2cset -y -f 3 0x34 0x65 0x90
    
    i2cset -y -f 3 0x34 0x7c 0x01
    i2cset -y -f 3 0x34 0x70 0x1f
    i2cset -y -f 3 0x34 0x6d 0x7f
    
    

    and I also dump the register value,

    root@j7-evm:/opt/vision_apps# i2cdump -f -y 3 0x34
    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 68 00 1e 40 d0 01 00 fe 1c 10 7a 7a 0f b9 08 ff    h.?@??.???zz???.
    10: 81 85 89 8d 00 00 00 00 00 00 00 00 00 00 04 02    ????..........??
    20: e0 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ??..............
    30: 00 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00    ..??............
    40: 00 a9 71 01 00 00 20 00 00 00 00 12 01 00 02 00    .?q?.. ....??.?.
    50: 00 00 00 00 00 00 00 00 58 00 00 00 b0 90 00 00    ........X...??..
    60: 00 00 00 00 00 90 00 00 00 00 00 00 00 7f 88 88    .....?.......???
    70: 1f 2c e4 00 00 00 00 c5 00 01 00 00 01 00 00 00    ?,?....?.?..?...
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    a0: 00 00 00 00 00 1c 00 00 00 00 00 00 00 00 00 00    .....?..........
    b0: 1c 3a 15 08 25 00 18 00 aa 33 83 74 80 00 00 00    ?:??%.?.?3?t?...
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    d0: 00 43 94 27 60 f2 00 03 00 00 00 00 00 00 00 00    .C?'`?.?........
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    f0: 5f 55 42 39 36 30 00 00 00 00 00 00 00 00 00 00    _UB960..........

    Value seem right, but I still can't access 913's register through I2C tool. 

    PS:

    I have one question about access 913.

    In normally if the script's flow setup into to 962 register,

    I should can detect 913 address 0x58 in i2cdetect command,

    and can get value form 913 register, like command "i2cget -y -f 3 0x58 0x00", right?

    BR

    Sentinen Chen

     

  • yes, the link is not created in your case as reg. 0x5b is 0x00 (should be 0xb0 if 913a's IDX is 0xb0).

    you can check if the 913a module has issue or not? such as link error in 913a side (reg. 0x0a/0x0b through local I2C access in 913a side), if 913a camera is plugged into port0?

    regards,

    Steven

  • Hi Steven:

    Thanks your reply.

    May I understand if 913a and 962 IC is OK, and POC power is fine,

    then when 913a connect to 962's RX0 port, and we set 962 register 0x4c value to 0x01 (set to RX0 port),

    then 962 register should auto become 0xB0 (if 913a slave address is 0x58).

    Is my understand correct? 

    Also I have one question about BCC channel create between 962 and 913,

    what configs we can check?

    BR

    Sentinen Chen 

  • If the link condition can be aligned between 913a and 962 well, the ub962's IDX can be uploaded to UB913a's de-ser ID reg., and UB913a's IDX can be uploaded automatically to ub962's Ser ID reg., this is described in d/s.

    you can measure the FPD-Link signal, if they are normal or not in the link. also, you can connect to ub913a's i2c to visit ub913a's reg., and check if it has error here. the error would stop the I2C communciation!

    regards,

    Steven

  • Hi Steven:

    After we rework camera module, and connect it's i2c to our TDA4 i2c2.

    Now we can dump 913's register.

    root@j7-evm:~# i2cdump -y -f 4 0x58
    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: b0 30 20 c5 80 18 68 00 00 00 00 00 15 55 35 00    ?0 ???h.....?U5.
    10: 17 82 82 00 00 31 80 00 00 00 00 00 00 a0 fe 00    ???..1?......??.
    20: 0e 1c 29 00 00 00 00 00 25 06 00 10 00 00 00 00    ??).....%?.?....
    30: 00 00 00 fe f8 09 00 00 00 00 00 00 00 00 00 00    ...???..........
    40: b0 30 20 c5 80 18 68 00 00 00 00 00 15 55 35 00    ?0 ???h.....?U5.
    50: 17 82 82 00 00 31 80 00 00 00 00 00 00 a0 fe 00    ???..1?......??.
    60: 0e 1c 29 00 00 00 00 00 25 06 00 10 00 00 00 00    ??).....%?.?....
    70: 00 00 00 fe f8 09 00 00 00 00 00 00 00 00 00 00    ...???..........
    80: b0 30 20 c5 80 18 68 00 00 00 00 00 15 55 35 00    ?0 ???h.....?U5.
    90: 17 82 82 00 00 31 80 00 00 00 00 00 00 a0 fe 00    ???..1?......??.
    a0: 0e 1c 29 00 00 00 00 00 25 06 00 10 00 00 00 00    ??).....%?.?....
    b0: 00 00 00 fe f8 09 00 00 00 00 00 00 00 00 00 00    ...???..........
    c0: b0 30 20 c5 80 18 68 00 00 00 00 00 15 55 35 00    ?0 ???h.....?U5.
    d0: 17 82 82 00 00 31 80 00 00 00 00 00 00 a0 fe 00    ???..1?......??.
    e0: 0e 1c 29 00 00 00 00 00 25 06 00 10 00 00 00 00    ??).....%?.?....
    f0: 00 00 00 fe f8 09 00 00 00 00 00 00 00 00 00 00    ...???..........

    It seem 913 think BCC channel is OK.

    it can auto load Deserializer ID to 0x06 register, and 0x0A / 0x0B for CRC Errors are all 0x00.

    Also I do one more time 962 setup, as below 

    i2cset -y -f 3 0x34 0x10 0x81
    i2cset -y -f 3 0x34 0x11 0x85
    i2cset -y -f 3 0x34 0x12 0x89
    i2cset -y -f 3 0x34 0x13 0x8D
    
    i2cset -y -f 3 0x34 0x32 0x01
    i2cset -y -f 3 0x34 0x1f 0x02
    i2cset -y -f 3 0x34 0x33 0x01
    i2cset -y -f 3 0x34 0x20 0xe0 
    i2cset -y -f 3 0x34 0x4c 0x01
    i2cset -y -f 3 0x34 0x58 0x58

    and try to dump 962 register, 

    root@j7-evm:~# i2cdump -y -f 3 0x34
    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 68 00 1e 40 d0 01 00 fe 1c 10 7a 7a 0f b9 08 ff    h.?@??.???zz???.
    10: 81 85 89 8d 00 00 00 00 00 00 00 00 00 00 04 02    ????..........??
    20: e0 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ??..............
    30: 00 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00    ..??............
    40: 00 a9 71 01 00 00 20 00 00 00 00 12 01 00 02 00    .?q?.. ....??.?.
    50: 00 00 00 00 00 00 00 00 58 00 00 00 00 00 00 00    ........X.......
    60: 00 00 00 00 00 00 00 00 00 00 00 00 00 7a 88 88    .............z??
    70: 2b 2c e4 00 00 00 00 c5 00 01 00 00 20 00 00 00    +,?....?.?.. ...
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    a0: 00 00 00 00 00 1c 00 00 00 00 00 00 00 00 00 00    .....?..........
    b0: 1c 3a 15 08 25 00 18 00 aa 33 83 74 80 00 00 00    ?:??%.?.?3?t?...
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    d0: 00 43 94 06 60 f2 00 02 00 00 00 00 00 00 00 00    .C??`?.?........
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    f0: 5f 55 42 39 36 30 00 00 00 00 00 00 00 00 00 00    _UB960..........

    You can see 962's register 0x5B still 0x00, 

    So now our situation is 913 think BCC is OK, but 962 still not. 

    BTW, we see in I2c_over_913/914_with_BCC,

    Remote Deserializer / Serializer ID will automatically configured by the Bidirectional Remote ID Control Channel once RX Lock has been detected.

    But In 962 datasheet,  there is no part to discuess about RX Lock, only some register about LOCK_STS. 

    and our value in those register are also 0. 

    Do you have any suggestion? 

     

    BR

    Sentinen Chen

  • Hi Steven:

    We can auto load the 0x5B register successfully now.

    BR

    Sentinen Chen