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: Communication fails between TI954 and TI953

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

Hello,

We are using DS90UB954-Q1 deserializer and  953 serializer in our hardware setup.

I am using Jetson Xavier module and can not use the available ALP software, I use the I2C commands to achieve a proper link between DES and SER.

Little brief of our hardware design:

I2C from Xavier module -> I2C Mux Expander -> 4 O/P I2C lanes -> On each I2C lane 1 deserializer is connected and on each deserializer, 2 serializers can be connected.

I am following instructions from TI document called " SNLA267A–March 2019". 

I am runnig commands for BIST script as follows:

Configuration setup on TI 954 and TI 953

  • Check the I2C expander bus number

 

  • Received the TI 954 (deserializer) address.

  • Dump contents of TI 954

 

  •  Set port selection, passthrough, and aliasing on TI 954. Check contents of 0x04 = df locak achieved with TI 953

  • Address received for TI 953 (serializer).

  • Try to reset serializer (Reset failed)

 

When I try to reset TI953 from TI954 it doesnot allow me write the reset reg.

Can you please let me know if I am missing any steps or can you please provide me the full sequence of commands required to complete BIST test between TI954 and 953.

Thanks.

  • Hello,

    So you can read from the 953 but you can't write to the 953, correct?  Are you able to probe the I2C lines to verify that you are getting an ACK from the 953?  Is there anything else connected to the expander that would cause some collisions?  If so you can try to alias the 953 with a different address by overwriting register 0x5C on the 954.  However I would imagine that you wouldn't be able to read if that were the case.

    Where are you in the flowchart? Or are you trying to do the first step in the BIST test?

    Regards,

    Nick

  • Hello Nick,

    I am in the very first step of BIST in the flowchart, which is 953 and954 Digital reset (0x01).

    I can read data from 953 chip, and i can also write on some registers, but on trying to write 0x01 on 0x01 register on TI953, it gives readback failed.

    There is nothing that is conflicting with TI953. I am using 0x18 as the alias address and I am able to read contents of TI953 using that address. 

    Following is all the steps that can be done:

    root@n-desktop:/home/n# i2cdetect -l
    i2c-3 i2c 3190000.i2c I2C adapter
    i2c-33 i2c i2c-7-mux (chan_id 3) I2C adapter
    i2c-1 i2c c240000.i2c I2C adapter
    i2c-31 i2c i2c-7-mux (chan_id 1) I2C adapter
    i2c-8 i2c 31e0000.i2c I2C adapter
    i2c-6 i2c 31c0000.i2c I2C adapter
    i2c-4 i2c Tegra BPMP I2C adapter I2C adapter
    i2c-2 i2c 3180000.i2c I2C adapter
    i2c-32 i2c i2c-7-mux (chan_id 2) I2C adapter
    i2c-0 i2c 3160000.i2c I2C adapter
    i2c-30 i2c i2c-7-mux (chan_id 0) I2C adapter
    i2c-7 i2c c250000.i2c I2C adapter
    i2c-5 i2c 31b0000.i2c I2C adapter


    root@n-desktop:/home/n# i2cdetect -y -r 30
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- 3d -- --
    40: UU -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: UU -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- UU -- -- -- -- --


    root@n-desktop:/home/n# i2cdump -y -f 30 0x3d
    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: 7a 00 1e 20 df 01 00 fe 1c 10 7a 7a 83 09 08 7f z.? ??.???zz????
    10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 02 ..............??
    20: 30 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0?..............
    30: 00 00 00 00 40 00 00 00 00 00 00 01 14 6f 00 40 ....@......??o.@
    40: 00 a7 71 01 00 00 00 00 00 00 00 12 00 13 04 64 .?q?.......?.??d
    50: 00 00 00 03 02 00 00 00 1e 00 00 30 00 00 00 00 ...??...?..0....
    60: 00 00 00 00 00 00 00 00 00 00 00 00 00 7c 88 88 .............|??
    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: 02 0f 00 00 08 18 00 00 00 00 00 00 00 00 00 00 ??..??..........
    b0: 08 14 3f 08 25 00 18 00 fc 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 02 60 f2 00 00 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 35 34 00 00 00 00 00 00 00 00 00 00 _UB954..........

    root@n-desktop:/home/n# i2cset -y -f -r 30 0x3d 0x4c 0x03
    Value 0x03 written, readback matched

    root@n-desktop:/home/n# i2cset -y -f -r 30 0x3d 0x58 0x5E
    Value 0x5e written, readback matched

    root@n-desktop:/home/n# i2cset -y -f -r 30 0x3d 0x58 0xdE
    Value 0xde written, readback matched

    root@n-desktop:/home/n# i2cset -y -f -r 30 0x3d 0x5c 0x18
    Value 0x18 written, readback matched

    root@n-desktop:/home/n# i2cdump -y -f 30 0x3d               (From value of register 0x04, I can see that lock is achieved)
    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: 7a 00 1e 20 df 01 00 fe 1c 10 7a 7a 83 09 08 7f z.? ??.???zz????
    10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 02 ..............??
    20: 30 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0?..............
    30: 00 00 00 00 40 00 00 00 00 00 00 01 14 6f 00 40 ....@......??o.@
    40: 00 a7 71 01 00 00 00 00 00 00 00 12 03 03 04 64 .?q?.......????d
    50: 00 00 00 03 02 00 00 00 de 00 00 30 18 00 00 00 ...??...?..0?...
    60: 00 00 00 00 00 00 00 00 00 00 00 00 00 7c 88 88 .............|??
    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: 02 0f 00 00 08 18 00 00 00 00 00 00 00 00 00 00 ??..??..........
    b0: 08 14 3f 08 25 00 18 00 fc 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 02 60 f2 00 00 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 35 34 00 00 00 00 00 00 00 00 00 00 _UB954..........


    root@n-desktop:/home/n# i2cdetect -y -r 30
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- 0c -- -- --
    10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- --3d -- --
    40: UU -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
    50:-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: UU -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- UU -- -- -- -- --


    root@n-desktop:/home/n# i2cset -y -f -r 30 0x0c 0x01 0x01
    Warning - readback failed


    root@n-desktop:/home/n# i2cset -y -f -r 30 0x18 0x01 0x01 (Unable to reset 953)
    Warning - readback failed


    root@n-desktop:/home/n# i2cset -y -f -r 30 0x18 0x0E 0xC0
    Value 0xc0 written, readback matched

    Running 7.12 script (Example Sensor Initialization Script) from snla267a document.


    root@n-desktop:/home/n# i2cset -y -f -r 30 0x18 0x0D 0x0C (Able to write 953)
    Value 0x0c written, readback matched


    root@n-desktop:/home/n# i2cset -y -f -r 30 0x18 0x0D 0x08
    Value 0x08 written, readback matched


    root@n-desktop:/home/n# i2cset -y -f -r 30 0x18 0x0D 0x0C
    Value 0x0c written, readback matched


    root@n-desktop:/home/n# i2cdetect -y -r 30
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- 0c -- -- --
    10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- 3d -- --
    40: UU -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: UU -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- UU -- -- -- -- --


    root@n-desktop:/home/n# i2cdump -y -f 30 0x18
    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: 30 00 32 48 00 03 41 28 fe 1e 10 7f 7f 0c c0 00 0.2H.?A(???????.
    10: 00 00 00 00 00 20 18 3c 80 62 62 62 00 00 00 00 ..... ?<?bbb....
    20: 00 00 00 00 00 02 00 00 67 33 01 00 00 00 00 00 .....?..g3?.....
    30: 00 20 09 04 00 10 00 7a 00 00 00 00 00 00 00 00 . ??.?.z........
    40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    50: 20 c0 65 00 00 00 00 00 07 07 07 00 00 00 00 00 ?e.....???.....
    60: 00 00 00 00 00 c8 00 00 00 00 00 00 00 00 00 00 .....?..........
    70: 00 00 25 00 00 00 00 00 00 01 e4 00 00 00 00 00 ..%......??.....
    80: 00 00 00 00 00 00 90 00 00 00 00 00 03 00 00 00 ......?.....?...
    90: 32 e3 64 01 00 00 00 00 00 00 00 03 00 23 24 0e 2?d?.......?.#$?
    a0: 00 0f 0e 0d 0d 10 42 10 10 10 03 01 00 00 00 00 .?????B?????....
    b0: 04 4a 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 ?J?.............
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    f0: 5f 55 42 39 35 33 00 00 00 00 00 00 00 00 00 00 _UB953..........

    Does digital reset register (0x01) clears itself after reseting the chip. How do I verify if the reset occured properly or not.

    How do I make sure that the link between DES and DER is proper.

    Thanks,

    Mehali

  • Hello Mehali,

    So I think what is happening here is you actually are resetting the device properly.  Once you reset the device the I2C communication is disrupted and you do not see an ACK.  If you just want to verify that it reset then you can try writing one of the registers on the 953, issue the reset, and verify that the register is back to its default value.  After that then continue on with the flowchart. 

    Also you need to make sure that the I2C expander and device you are using support clock stretching.  Sometimes due to latency and other variables, the 954 will need to stretch the I2C clock while it waits for a response from across the link.

    Regards,

    Nick

  • Hello Nick,

    I have TI953 on 0x18 address, as follows:

    root@n-desktop:/home/n# i2cdump -y -f 30 0x18
    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: 30 00 32 48 00 03 41 28 fe 1e 10 7f 7f f0 0f 00 0.2H.?A(???????.
    10: 00 00 00 00 00 20 18 3c 80 62 62 62 00 00 00 00 ..... ?<?bbb....
    20: 00 00 00 00 00 02 00 00 67 33 01 00 00 00 00 00 .....?..g3?.....
    30: 00 20 09 04 00 10 00 7a 00 00 00 00 00 00 00 00 . ??.?.z........
    40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    50: 20 c0 45 01 00 00 00 00 07 07 07 00 00 00 00 00 ?E?....???.....
    60: 00 00 00 00 00 c8 00 00 00 00 00 00 00 00 00 00 .....?..........
    70: 22 00 25 00 00 00 00 00 00 00 e4 00 00 00 00 00 ".%.......?.....
    80: 00 00 00 00 00 00 90 00 00 00 00 00 03 00 00 00 ......?.....?...
    90: 32 e3 64 01 00 00 00 00 00 00 00 03 00 23 24 0e 2?d?.......?.#$?
    a0: 00 0f 0e 0d 0d 10 42 10 10 10 03 01 00 00 00 00 .?????B?????....
    b0: 04 4a 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 ?J?.............
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    f0: 5f 55 42 39 35 33 00 00 00 00 00 00 00 00 00 00 _UB953..........

    Setting 0x0d - 0x00
    root@n-desktop:/home/n# i2cset -y -f -r 30 0x18 0x0d 0x00
    Value 0x00 written, readback matched

    Checking value of 0x0d register, set properly to 0x00
    root@n-desktop:/home/n# i2cdump -y -f 30 0x18
    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: 30 00 32 48 00 03 41 28 fe 1e 10 7f 7f 00 0f 00 0.2H.?A(?????.?.
    10: 00 00 00 00 00 20 18 3c 80 62 62 62 00 00 00 00 ..... ?<?bbb....
    20: 00 00 00 00 00 02 00 00 67 33 01 00 00 00 00 00 .....?..g3?.....
    30: 00 20 09 04 00 10 00 7a 00 00 00 00 00 00 00 00 . ??.?.z........
    40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    50: 20 c0 45 01 00 00 00 00 07 07 07 00 00 00 00 00 ?E?....???.....
    60: 00 00 00 00 00 c8 00 00 00 00 00 00 00 00 00 00 .....?..........
    70: 22 00 25 00 00 00 00 00 00 00 e4 00 00 00 00 00 ".%.......?.....
    80: 00 00 00 00 00 00 90 00 00 00 00 00 03 00 00 00 ......?.....?...
    90: 32 e3 64 01 00 00 00 00 00 00 00 03 00 23 24 0e 2?d?.......?.#$?
    a0: 00 0f 0e 0d 0d 10 42 10 10 10 03 01 00 00 00 00 .?????B?????....
    b0: 04 4a 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 ?J?.............
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    f0: 5f 55 42 39 35 33 00 00 00 00 00 00 00 00 00 00 _UB953..........

    Send reset signal to TI953
    root@n-desktop:/home/n# i2cset -y -f -r 30 0x18 0x01 0x01
    Warning - readback failed

    Check the register dump of 0x18, Value of 0x0d did not go back to its original value of 0xf0, and is yet has the value that I set as 0x00
    root@n-desktop:/home/n# i2cdump -y -f 30 0x18
    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: 30 00 32 48 00 03 41 28 fe 1e 10 7f 7f 00 0f 00 0.2H.?A(?????.?.
    10: 00 00 00 00 00 20 18 3c 80 62 62 62 00 00 00 00 ..... ?<?bbb....
    20: 00 00 00 00 00 02 00 00 67 33 01 00 00 00 00 00 .....?..g3?.....
    30: 00 20 09 04 00 10 00 7a 00 00 00 00 00 00 00 00 . ??.?.z........
    40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    50: 20 c0 45 01 00 00 00 00 07 07 07 00 00 00 00 00 ?E?....???.....
    60: 00 00 00 00 00 c8 00 00 00 00 00 00 00 00 00 00 .....?..........
    70: 22 00 25 00 00 00 00 00 00 00 e4 00 00 00 00 00 ".%.......?.....
    80: 00 00 00 00 00 00 90 00 00 00 00 00 03 00 00 00 ......?.....?...
    90: 32 e3 64 01 00 00 00 00 00 00 00 03 00 23 24 0e 2?d?.......?.#$?
    a0: 00 0f 0e 0d 0d 10 42 10 10 10 03 01 00 00 00 00 .?????B?????....
    b0: 04 4a 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 ?J?.............
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    f0: 5f 55 42 39 35 33 00 00 00 00 00 00 00 00 00 00 _UB953..........

    Can you please provide me more details on why the reset command fails.

    Thanks,

    Mehali

  • So by writing 0x01 to register 0x01, you are doing a digital reset without resetting the registers.  To perform an entire digital reset with registers you will need to write 0x01[1] not 0x01[0].  With that being said I feel you may experience the same behavior since you are resetting the digital block.  Try writing bit 1 as suggested, and verify you reset the registers.  If you still are having issues the I2C lines may need to be probed to see more detail as to what is happening.

    Also are you certain that the expander supports clock stretching?

    Regards,

    Nick