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.

DS90UB960-Q1EVM: Questions about using the kit with a Jetson Xavier NX

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

Tool/software:

Hi,

We are trying to get the evm board to work on a NVIDIA Xavier NX devkit board, but so far we have not been able to get i2c to get detected. First we are trying something simple, just getting the 0x3D device to get listed in the i2c bus of the Jetson, but we are failing to get it. We connected it using j9 on the EVM and the 40pin header on the Jetson


We have it like:

j9.1 -> pin1

j9.2 -> pin5

j9.3 -> pin3

j9.4 -> pin6

The jumpers on the board are all default, and we are plugging in power to both devices, we have a ub953 with a cam connected via the fraka adapter which is getting power, and using i2cdetect -y -r in all the available busses to try and check for 0x3D to show up. but have not been able to get it. Is there something we are missing?
We are not using the mini-USB cable nor the TI software, is it mandatory?

Regards,

Andres

  • Hi Andres, 

    Using the TI software is not necessary. What I2C voltage of the Jetson Xavier is being used? When connecting the I2C interfaces between the boards, it would only be necessary to connect the SCL, SDA, and GND lines. Beyond this, the UB960EVM should be strapped to the correct I2C voltage from the Jetson. This will be done via the following header description: 

    Best,

    Zoe

  • Hi,
    IO voltage on the Jetson is 3.3V, and the J36 header is in that position(VDD3V3), we will retry with only the sda/scl and gnd pins.

    Thanks for the response.

  • Hi Andres,

    Happy to help, let me know if there are still any issues. 

    Best,

    Zoe

  • Hi,

    We were not able to get it detected even if using a different i2c bus on the Xavier and also using the secondary i2c headers on the EVM. We are going to try the TI software and get it detected via usb to check if the device is alive. In the mean time, so you think this pinout is ok?

    (rest of pins are NC)

    We are using this adapter
    https://zebax.com/doc/ZX1/ZX131BSH-RK.pdf
    To a ribbon to jumpers cable, that follows the csi-15 pinout https://www.arducam.com/raspberry-pi-camera-pinout/

    Do you see any issues with that pin mapping, the idea was to use the TX0 or j1 samtec port on the serdes EVM?

    Regards,

    Andres

  • Hi Andres, 

    I don't see an issue with this pin out currently. Please let us know of any updates using ALP. 

    Best, 

    Zoe

  • Hi,

    We installed the software and the ub960 profiles and seem to be connected, we are trying to verify the board is fine by toggling GPIOs. We were using the scripting tab:

    board.WriteReg(0x0F,0x00)

    board.WriteReg(0x10,0x01)

    board.WriteReg(0x11,0x01)

    board.WriteReg(0x12,0x01)

    board.WriteReg(0x13,0x01)

    But we dont see the values reflected on the GPIO leds on the board.

    Are we missing something?

    Regards,

    Andres

  • We get a the device recognized on the TI GUI Analogue Lanchpad, but even after manually adding the device UB960, and after changing the GPIO0 to bit 1, we don't see any LED's on the board. Can we confirm if the board is toast or if we are missing something?

  • Hi Andres, Zachary, 

    For setting the GPIO high, please use the following example:

    board.WriteReg(0x0F,0x00)

    board.WriteReg(0x10,0x13)

    board.WriteReg(0x11,0x13)

    board.WriteReg(0x12,0x13)

    board.WriteReg(0x13,0x13)

    GPIOx_OUT_SRC should be selected as "Device Status."

    If the problem persists, can you please add a picture of your EVM set up to the thread? 

    Best,

    Zoe

  • That did it, Thanks. We were able to get the kit going with the Jetson. We are debugging some issues with no csi data flow. But i2c works fine and we can read and write registers using the Jetson and the ALP

    Thanks for the help and regards,

    Andres

  • Hi Andres, 

    Thanks for the confirmation here! I'll close this thread for the time being but feel free to reopen if needed. 

  • Hello,

    I'm going to reopen it to see if you might be able to help us wit the csi issue. We are trying to get pattern gen going using the register dump from ALP. At this point the driver loads and i2c works fine, even with a remote serializer and cam, we are able to communicate with those as well.
    But when attempting to capture, we seem to no get any data. To isolate the issue we wanted to use the pattern generator. We use the gui to configure to raw10 1080x1920 @30fps. This gave us the following config:

    sudo i2ctransfer -f -y 9 w2@0x30 0x32 0x01
    sudo i2ctransfer -f -y 9 w2@0x30 0x20 0x0f

    sudo i2ctransfer -f -y 9 w2@0x30 0xB0 0x00 # Indirect Pattern Gen Registers
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x01 # PGEN_CTL
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x01
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x02 # PGEN_CFG
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x33
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x03 # PGEN_CSI_DI
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x24
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x04 # PGEN_LINE_SIZE1
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x16
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x05 # PGEN_LINE_SIZE0
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x80
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x06 # PGEN_BAR_SIZE1
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x02
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x07 # PGEN_BAR_SIZE0
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0xD0
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x08 # PGEN_ACT_LPF1
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x04
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x09 # PGEN_ACT_LPF0
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x38
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x0A # PGEN_TOT_LPF1
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x04
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x0B # PGEN_TOT_LPF0
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x65
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x0C # PGEN_LINE_PD1
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x0B
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x0D # PGEN_LINE_PD0
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x93
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x0E # PGEN_VBP
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x0A
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x0F # PGEN_VFP
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x0A

    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x10 # PGEN_COLOR0
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0xAA
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x11 # PGEN_COLOR1
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x33
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x12 # PGEN_COLOR2
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0xF0
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x13 # PGEN_COLOR3
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x7F
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x14 # PGEN_COLOR4
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x55
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x15 # PGEN_COLOR5
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0xCC
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x16 # PGEN_COLOR6
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x0F
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x17 # PGEN_COLOR7
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x80
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x18 # PGEN_COLOR8
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x00
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x19 # PGEN_COLOR10
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x00
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x1A # PGEN_COLOR11
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x00
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x1B # PGEN_COLOR12
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x00
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x1C # PGEN_COLOR13
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x00
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x1D # PGEN_COLOR14
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x00
    sudo i2ctransfer -f -y 9 w2@0x30 0xB1 0x1E # PGEN_COLOR15
    sudo i2ctransfer -f -y 9 w2@0x30 0xB2 0x00

    But we don't get anything, the capture subsystem times out, even on another serdes setup on a custom pcb that is known good. Could you take a look to the register config and check if you see any potential issues with it?

    Thanks,

    Andres

  • Hi Andres, 

    The script shown here matches the default values for PatGen. Register 0x03 is programmed with the data type selected, which is RGB888 in the example that was provided. If using ALP make sure to change the settings with PatGen disabled, click apply, and then enable PatGen. 

    Below is a quick reference of the PatGen configuration for these settings: 
    Register Data Name
    0x0001 0x01 PGEN_CTL
    0x0002 0x35 PGEN_CFG
    0x0003 0x2B PGEN_CSI_DI
    0x0004 0x05 PGEN_LINE_SIZE1
    0x0005 0x46 PGEN_LINE_SIZE0
    0x0006 0x00 PGEN_BAR_SIZE1
    0x0007 0xA5 PGEN_BAR_SIZE0
    0x0008 0x07 PGEN_ACT_LPF1
    0x0009 0x80 PGEN_ACT_LPF0
    0x000A 0x07 PGEN_TOT_LPF1
    0x000B 0xAD PGEN_TOT_LPF0
    0x000C 0x06 PGEN_LINE_PD1
    0x000D 0xA0 PGEN_LINE_PD0
    0x000E 0x21 PGEN_VBP
    0x000F 0x0A PGEN_VFP

    Also, please ensure forwarding is being configured as well. 

    Best,

    Zoe

  • Thanks for the revised config, now we can see some logs on the capture system on the known good hw that indicates there is some data flowing. In the devkit+evm assembly seems that there is no data checking the vi trace, and neither by checking directly the csi data and clk lines coming from the evm with an osciloscope.

    This is the register config we are using, and works on the custom hardware, we are trying to use the same config on the devkit+evm, can you take a look and see if there is any incompatibility with the evm? We are suing the same serializer and camera pair that we use on the known good hw.

    Regards,

    Andres

    Register Data Name
    0x01 0x02 RESET

    0x1F 0x4 CSI_PLL_CTL
    0x0C 0x0F RX_PORT_CTL
    0x19 0x06 FS_HIGH_TIME_1
    0x1A 0xA8 FS_HIGH_TIME_0
    0x1B 0xE3 FS_LOW_TIME_1
    0x1C 0xDD FS_LOW_TIME_0
    0x18 0x80 FS_CTL
    0x32 0x01 CSI_PORT_SEL
    0x20 0x00 FWD_CTL1
    0x0D 0x89 IO_CTL
    0x33 0x60 CSI_CTL1

    # Port 0 init
    Register Data Name
    0x4C 0x01 FPD3_PORT_SEL
    0x72 0xE4 CSI_VC_MAP
    0x58 0x5E BCC_CONFIG
    0x5C 0x80 SER_ALIAS_ID
    0x5D 0x20 SLAVE_ID0
    0x65 0xc0 SLAVE_ALIAS0
    0x42 0x71 AEQ_CTL
    0x41 0xa9 SFILTER_CFG
    0xB9 0x33 LINK_ERROR_CNT
    0xBC 0x80 FV_MIN_TIME
    0x6D 0x7c PORT_CONFIG
    0x72 0x0 CSI_VC_MAP
    0x7C 0x0 PORT_CONFIG2
    0xD5 0xf2 AEQ_MIN_MAX

    # Port 1 init
    Register Data Name
    0x4C 0x12 FPD3_PORT_SEL
    0x72 0xE4 CSI_VC_MAP
    0x58 0x5e BCC_CONFIG
    0x5C 0x82 SER_ALIAS_ID
    0x5E 0x20 SLAVE_ID0
    0x66 0xc2 SLAVE_ALIAS0
    0x42 0x71 AEQ_CTL
    0x41 0xa9 SFILTER_CFG
    0xB9 0x33 LINK_ERROR_CNT
    0xBC 0x80 FV_MIN_TIME
    0x6D 0x7c PORT_CONFIG
    0x72 0x55 CSI_VC_MAP
    0x7C 0x0 PORT_CONFIG2
    0xD5 0xf2 AEQ_MIN_MAX

    #start stream
    Register Data Name
    0x33 0x61 CSI_CTL1

    #serializer side
    Register Data Name
    0x01 0x01 UB953_REG_RESET_CTL
    0x02 0x13 UB953_GENERAL_CFG
    0x0E 0x10 UB953_REG_GPIO_INPUT_CTRL

  • Also we verified and the serializer link seems ok, the lock status is 1

  • Hi Andres, 

    Can you please provide a full register dump of the serializer and deserializer? It's not clear to me where PatGen is being enabled in this context. I would recommend enabling it from the serializer if possible as we will have more diagnostics to use that way.

    Best,

    Zoe

  • Hi,

    Attached is the register dump for deser and ser, and the patgen registers.

    https://drive.google.com/file/d/1Yq9GQDjNP-L1OV70dwqzyxZAARarUgIa/view?usp=sharing

    I'll look into the pattern gen config and setup on the serializer side.

    Regards,

    Andres

  • Hi Andres, 

    I don't see the deserializer receiving video data from the serializers via the register dump. 

    It looks like this PatGen is enabled on the deserializer side, I would suggest checking the hardware connections in this case. I would also suggest setting 0x1F=0x00 on the deserializer side as this is the defualt value of the register. 

    Best,

    Zoe

  • Thanks for the response, in this case, the camera is not streaming, with patgen enabled is it expected to see video data from ser-des?

  • And also for debugging purposes, what do I need to check to determine if video data is flowing between ser-des?

  • Hi Andres,

    We would only see that video is streaming if it is coming from the serializer. This is in register 0x73-0x76. When using PatGen from the deserializer, we don't have register checks on the deserializer for the data. 

    Best,

    Zoe