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: '953 and '954 device ID change while running

Part Number: DS90UB954-Q1

With a coax connected, I2C Back Channel controlled '953 running and transferring data to a '954, can you update the '953 Device ID Register (Address 0x00) from the strapped default to a new value and set the SER_ID_OVERRIDE via the I2C BC control from the '954 and then update the '954 SER_ID (Address 0x5B) to match the newly updated '953 setting with the devices linked and running?

Are any other writes required to update the '953 I2C address while linked and running with I2C BC control from a '954?

  • Hi David,

    Yes, you should be able to do that.

    Jiashow

  • If this works, then I would like to request help in debugging control of the ‘953 GPIO pins in Manual mode with my configuration as shown below.  Please see my sequence of writes and register dumps, where I am unable to control the ‘953 GPIO pins.  The parts are linked in coax mode and I am transferring video data over the link, but am unable to control the ‘953 GPIO pins in BC mode.

     Enter a command.

    fifrstn1           // bring the 954 out of reset
    Enter a command.
    readi2cfif ff 3d 00         // do an initial register dump from the 954
     7A    0   1E   20   DF    1    0   FE   1C   10   7A   7A   83    9    A   7F
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    4    2
     30    1    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0   40    0    0    0    0    0    0    1   14   6F    0   40
      0   A7   71    1    0    0    0    0    0    0    0   12    0   13    4   64
      0    0    0    3    0    0    0    0   1E    0    0   30    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0   7C   88   88
     2B   2C   E4    0    0    0    0   C5    0    1    0    0   20    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      2    F    0    0    8   19    0    0    0    0    0    0    0    0    0    0
      8   14   3F    8   25    0   18    0   FC   33   83   74   80    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0   43   94    2   60   F2    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
     5F   55   42   39   35   34    0    0    0    0    0    0    0    0    0    0

    Enter a command.
    writei2cfif 02 3d 4c 01        // 954 address is 0x3d
    Enter a command.
    writei2cfif 02 3d 58 de
    Enter a command.
    writei2cfif 02 3d 5b 30
    Enter a command.
    writei2cfif 02 3d 5c 50
    Enter a command.              // 953 address is 0x28
    readi2cfif ff 28 00                // do an initial register dump from the 953 (this is across the coax)
     30    0   33   48    0    3   41   28   FE   1E   10   7F   7F   F0    F    0
      0    0    0    0    0   20   18   3C   80   62   62   62    0    0    0    0
      0    0    0    0    0    2    0    0   67   33    1    0    0    0    0    0
      0   20    9    4    0   10    0   7A    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
     20   C0   65    0    0    0    0    0    7    7    7    0    0    0    0    0
      0    0    0    0    0   88    0    0    0    0    0    0    0    0    0    0
      0    0   25    0    0    0    0    0    0    1   E4    0    0    0    0    0
      0    0    0    0    0    0   90    0    0    0    0    0    5    0    0    0
     32   E3   64    1    0    0    0    0    0    0    1    0   27    0   24   12
      0    F   11   10    E   10   42   10   10   10    3    1    0    0    0    0
      4   4A   3F    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
     5F   55   42   39   35   33    0    0    0    0    0    0    0    0    0    0

    Enter a command.
    The two dumps above are with minimal I2C writes.  I will now execute the script and do 2 more dumps.
    Enter a command.
    954 ----
    Enter a command.
    writei2cfif 02 3d 4c 01             // initial 954 script writes 
    Enter a command.
    writei2cfif 02 3d 59 03
    Enter a command.
    writei2cfif 02 3d 6e 10
    Enter a command.
    writei2cfif 02 3d 6f 42
    Enter a command.
    writei2cfif 02 3d d5 f2
    Enter a command.
    writei2cfif 02 3d 42 71
    Enter a command.
    writei2cfif 02 3d 41 e0
    Enter a command.
    writei2cfif 02 3d 0f 35
    Enter a command.
    writei2cfif 02 3d 58 de
    Enter a command.
    writei2cfif 02 3d 5b 30
    Enter a command.
    writei2cfif 02 3d 5c 50
    Enter a command.
    *************DO NOT TOUCH.  THIS WORKS**************
    Enter a command.
    953 ----
    Enter a command.
    writei2cfif 02 18 00 51               // initial 953 script writes
    Enter a command.
    writei2cfif 02 28 02 73
    Enter a command.
    writei2cfif 02 28 1c 3f
    Enter a command.
    writei2cfif 02 28 32 49
    Enter a command.
    writei2cfif 02 28 33 07
    Enter a command.
    writei2cfif 02 28 20 00
    Enter a command.
    writei2cfif 02 28 0e 4b
    Enter a command.
    writei2cfif 02 28 1e 03
    Enter a command.
    writei2cfif 02 28 0b 13
    Enter a command.
    writei2cfif 02 28 0c 26
    Enter a command.
    *************DO NOT TOUCH.  THIS WORKS**************
    Enter a command.
    954 ---
    Enter a command.
    writei2cfif 02 3d 6d 7c           // final 954 script writes
    Enter a command.
    writei2cfif 02 3d 1f 02
    Enter a command.
    writei2cfif 02 3d 33 03
    Enter a command.
    writei2cfif 02 3d 34 40
    Enter a command.
    writei2cfif 02 3d 20 20
    Enter a command.
    writei2cfif 02 3d 0c 81
    Enter a command.
    writei2cfif 02 3d 5d 34
    Enter a command.
    writei2cfif 02 3d 65 1a
    Enter a command.
    writei2cfif 02 3d 36
    Enter a command.

    Enter a command.
    readi2cfif ff 28 00              // do another register dump from the 953 after the script writes.  Note that 0x0d is still at the default value, but the actual pins are at 0x0a already.
     51    0   73   48    0    3   41   28   FE   1E   10   13   26   F0   4B    0
      0    0    0    0    0   20   18   3C   80   62   62   62   3F    0    3    0
      0    0    0    0    0    2    0    0   67   33    1    0    0    0    0    0
      0   20   49    7    0   10    0   7A    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
     20   C0   45    0    0    0    0    0    7    7    7    0    0    0    0    0
      0    0    0    0    0   88    0    0    0    0    0    0    0    0    0    0
      0    0   25    0    0    0    0    0    0    0   E4    0    0    0    0    0
      0    0    0    0    0    0   90    0    0    0    0    0    5    0    0    0
     32   E3   64    1    0    0    0    0    0    0    1    0   27    0   24   12
      0    F   11   10    E   10   42   10   10   10    3    1    0    0    0    0
      4   4A   3F    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
     5F   55   42   39   35   33    0    0    0    0    0    0    0    0    0    0

    Enter a command.
    readi2cfif ff 3d 00             // do another dump from the 954 after the script writes.
     7A    0   1E   20   DF    1    0   FE   1C   10   7A   7A   81    9    0   35
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    4    2
     20    1    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    3   40    0   1A    0    0    0    0    1   14   6F    0   40
      0   E0   71    1    0    0    0    0    0    0    0   12    1    3    4   64
      0   28    0    3    0    0    0    0   DE    3    0   50   50   34    0    0
      0    0    0    0    0   1A    0    0    0    0    0    0    0   7C   10   42
     2B   2C   E4    0    0    0    0   C5    0    1    0    0   20    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      2    F    0    0    8   19    0    0    0    0    0    0    0    0    0    0
      8   14   3F    8   25    0   18    0   FC   33   83   74   80    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0   43   94    2   60   F2    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
     5F   55   42   39   35   34    0    0    0    0    0    0    0    0    0    0

    Enter a command.
    I will now write the 953 register 0x0d with a 0x05 and then do another dump of both registers.  The only thing that should change is register 0x0d to a 0x05 but what you will see is that it changed to a 0x0a.
    Enter a command.
    write
    Enter a command.
    writei2cfif 02 28 0d 05
    Enter a command.
    readi2cfif ff 28 00                  // do the final dump from the 953.  Note that register 0x0d has changed to 0x0a (not 0x05).  It now matches what has been being driven on the actual GPIO pins of the 953.
     51    0   73   48    0    3   41   28   FE   1E   10   13   26    A   4B    0
      0    0    0    0    0   20   18   3C   80   62   62   62   3F    0    3    0
      0    0    0    0    0    2    0    0   67   33    1    0    0    0    0    0
      0   20   49    7    0   10    0   7A    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
     20   C0   45    0    0    0    0    0    7    7    7    0    0    0    0    0
      0    0    0    0    0   88    0    0    0    0    0    0    0    0    0    0
      0    0   25    0    0    0    0    0    0    0   E4    0    0    0    0    0
      0    0    0    0    0    0   90    0    0    0    0    0    5    0    0    0
     32   E3   64    1    0    0    0    0    0    0    1    0   27    0   24   12
      0    F   11   10    E   10   42   10   10   10    3    1    0    0    0    0
      4   4A   3F    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
     5F   55   42   39   35   33    0    0    0    0    0    0    0    0    0    0

    Enter a command.
    readi2cfif ff 3d 00                                // do the final register dump of the 954
     7A    0   1E   20   DF    1    0   FE   1C   10   7A   7A   81    9    0   35
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    4    2
     20    1    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    3   40    0   1A    0    0    0    0    1   14   6F    0   40
      0   E0   71    1    0    0    0    0    0    0    0   12    1    3    4   64
      0   28    0    3    0    0    0    0   DE    3    0   50   50   34    0    0
      0    0    0    0    0   1A    0    0    0    0    0    0    0   7C   10   42
     2B   2C   E4    0    0    0    0   C5    0    1    0    0   20    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      2    F    0    0    8   19    0    0    0    0    0    0    0    0    0    0
      8   14   3F    8   25    0   18    0   FC   33   83   74   80    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
      0   43   94    2   60   F2    0    0    0    0    0    0    0    0    0    0
      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
     5F   55   42   39   35   34    0    0    0    0    0    0    0    0    0    0

    Enter a command.

    *********************************************************************************************************

    Hopefully what you see above gives a good understanding of what I am seeing.  I see this on two completely different board designs, not two different boards of the same design...  Two completely different boards which are different designs.

    Can you try this on an EVM board setup to help debug the GPIO control?

  • Hi David,

    Are you trying to send 954 GPI over the back channel to the 953 GPO? Could you first verify that you've done the following?

    On 953 Serializer side:

    • 0x0E (GPIO INPUT ENABLE) to select which GPIOs should be inputs and which should be outputs
    • If GPIOs are outputs,
    • 0x0D (LOCAL_GPIO_DATA) to configure either GPIO info from deserializer or locally
    • If GPIOs are inputs
    • 0x33 (REMOTE_GPIO) to choose the number of GPIOs needs to be enabled (one GPIO = GPIO0, two GPIO = GPIO0,1, four GPIO = GPIO0,1,2,3)
    • 0x53 (GPIO_PIN_STS) checks which GPIOs are on/off (only works if GPIOs are inputs)

     

    On 954 Deserializer side: (GPIO3 is an open drain)

    • Check 0x4C to select specific ports
    • IF GPIOs are inputs,
    • 0x0F (GPIO_INPUT_CTRL): choose enable/disable GPIO inputs.
    • 0x6E - 0x6F (BC_GPIO_CTL): determines the data sent on GPIOx for the port back channel
    • If GPIOs are outputs,
    • 0x10 - 0x16 (GPIO_PIN_CTRL): choose enable/disable GPIO outputs, from what port, and from which SER GPIO
    • 0x59 (DATAPATH_CTL1): verify how many GPIOs you are using