Other Parts Discussed in Thread: DS90UB960-Q1, DS90UB935-Q1
Tool/software:
Dear TI Support Team,
We are writing to report a critical video instability issue we are encountering with the DS90UB960-Q1 deserializer in our automotive camera system(TDA2PX).
System Overview
Deserializer: TI DS90UB960-Q1
Serializer: TI DS90UB935-Q1
Camera Sensor: X3N
FPS:- 30 FRAMES PER SECOND
Input Resolution: 1760 x 1400 per camera
Image Format: YUV 422, 8-bit, received from the sensor
Problem Description
When four cameras are connected and streaming simultaneously, we see an issue where the buffer looks like it is being filled with repeating image segments.
However, the issue is not present when we disconnect one of the four cameras. With only three cameras active, the video feeds from all three are perfectly stable, and the system operates as expected.
We suspect something related to a timing/synchronization issue.
Configuration Details
Below are the register settings we are using for the UB960 deserializer and the UB935 serializer.
DS90UB960-Q1 Deserializer Configuration:
Show full code block
// deserializer cfg specific for the X3N YUV format
const lvds8BitConfigRegs UB960ConfigRegisters_X3N[] =
{
/* Digital Reset 0 */
{0x01, 0x01},
{0x1F, 0x00},
// Port 0 Config
{0x4C, 0x01}, /* PORT_SEL: RX Port 0 */
{0x6d, 0x7c},
{0x58, 0x5E},
{0x5C, ((uint8)(lvdsSensorInterfaceInfo.serializerI2cAddr[0] << 1U))},
{0x5D, (BOARD_OVT_X3N_I2C_ADDR)},
{0x65, ((uint8)(lvdsSensorInterfaceInfo.sensorI2cAddr[0] << 1U))},
{0x5E, (BOARD_OVT_X3N_I2C_ADDR << 1U)},
{0x66, ((uint8)(lvdsSensorInterfaceInfo.sensorBroadcastAddr << 1U))},
{0x7c, 0x00},
{0x6E, 0x99},
{0x72, 0xE4},
// Port 1 Config
{0x4C, 0x12}, /* PORT_SEL: RX Port 1 */
{0x6d, 0x7c},
{0x58, 0x5E},
{0x5C, ((uint8)(lvdsSensorInterfaceInfo.serializerI2cAddr[1] << 1U))},
{0x5D, (BOARD_OVT_X3N_I2C_ADDR)},
{0x65, ((uint8)(lvdsSensorInterfaceInfo.sensorI2cAddr[1] << 1U))},
{0x5E, (BOARD_OVT_X3N_I2C_ADDR << 1U)},
{0x66, ((uint8)(lvdsSensorInterfaceInfo.sensorBroadcastAddr << 1U))},
{0x7c, 0x00},
{0x6E, 0x99},
{0x72, 0xE5},
// Port 2 Config
{0x4C, 0x24}, /* PORT_SEL: RX Port 2 */
{0x6d, 0x7c},
{0x58, 0x5E},
{0x5C, ((uint8)(lvdsSensorInterfaceInfo.serializerI2cAddr[2] << 1U))},
{0x5D, (BOARD_OVT_X3N_I2C_ADDR)},
{0x65, ((uint8)(lvdsSensorInterfaceInfo.sensorI2cAddr[2] << 1U))},
{0x5E, (BOARD_OVT_X3N_I2C_ADDR << 1U)},
{0x66, ((uint8)(lvdsSensorInterfaceInfo.sensorBroadcastAddr << 1U))},
{0x7c, 0x00},
{0x6E, 0x99},
{0x72, 0xE6},
// Port 3 Config
{0x4C, 0x38}, /* PORT_SEL: RX Port 3 */
{0x6d, 0x7c},
{0x58, 0x5E},
{0x5C, ((uint8)(lvdsSensorInterfaceInfo.serializerI2cAddr[3] << 1U))},
{0x5D, (BOARD_OVT_X3N_I2C_ADDR)},
{0x65, ((uint8)(lvdsSensorInterfaceInfo.sensorI2cAddr[3] << 1U))},
{0x5E, (BOARD_OVT_X3N_I2C_ADDR << 1U)},
{0x66, ((uint8)(lvdsSensorInterfaceInfo.sensorBroadcastAddr << 1U))},
{0x7c, 0x00},
{0x6E, 0x99},
{0x72, 0xE7},
// CSI-2 and Forwarding Config
{0xB0, 0x1C},
{0xB1, 0x13},
{0xB2, 0x1F},
{0xBC, 0x00},
{0x32, 0x01}, /* CSI_PORT_SEL: Select CSI-2 TX Port 0 */
{0x33, 0x43}, /* CSI_CTL: Enable CSI-2 TX Port 0 (2 lanes), continuous clock */
{0x20, 0x00}, /* FORWARDING_CTL1: Map RX Port 0 to CSI-2 TX Port 0 */
{0x21, 0x03},
// GPIO for Lock Status
{0x10, 0x81},
{0x17, 0x85},
{0x16, 0x89},
{0x13, 0x8D}
};
DS90UB935-Q1 Serializer Configuration:
Show full code block
const lvds8BitConfigRegs UB935ConfigRegisters[] =
{
{0x01, 0x01},
{0x03, 0x00},
{0x0D, 0xA0},
{0x0E, 0x05},
{0x02, 0x73},
{0x0B, 0x32}, /* SCL High period (for 400kbps I2C) */
{0x0C, 0x32}, /* SCL Low period */
{0x32, 0xC0},
{0x3A, (BOARD_OVT_X3N_I2C_ADDR)},
{0x42, (lvdsSensorInterfaceInfo.sensorI2cAddr[0] << 1)},
};
Request for Assistance
Could you please review our configuration and provide guidance on the following points?
Are there any issues in our register settings that could be contributing to this instability?
We are writing to report a critical video instability issue we are encountering with the DS90UB960-Q1 deserializer in our automotive camera system(TDA2PX).
System Overview
Deserializer: TI DS90UB960-Q1
Serializer: TI DS90UB935-Q1
Camera Sensor: X3N
FPS:- 30 FRAMES PER SECOND
Input Resolution: 1760 x 1400 per camera
Image Format: YUV 422, 8-bit, received from the sensor
Problem Description
When four cameras are connected and streaming simultaneously, we see an issue where the buffer looks like it is being filled with repeating image segments.
However, the issue is not present when we disconnect one of the four cameras. With only three cameras active, the video feeds from all three are perfectly stable, and the system operates as expected.
We suspect something related to a timing/synchronization issue.
Configuration Details
Below are the register settings we are using for the UB960 deserializer and the UB935 serializer.
DS90UB960-Q1 Deserializer Configuration:
Show full code block
// deserializer cfg specific for the X3N YUV format
const lvds8BitConfigRegs UB960ConfigRegisters_X3N[] =
{
/* Digital Reset 0 */
{0x01, 0x01},
{0x1F, 0x00},
// Port 0 Config
{0x4C, 0x01}, /* PORT_SEL: RX Port 0 */
{0x6d, 0x7c},
{0x58, 0x5E},
{0x5C, ((uint8)(lvdsSensorInterfaceInfo.serializerI2cAddr[0] << 1U))},
{0x5D, (BOARD_OVT_X3N_I2C_ADDR)},
{0x65, ((uint8)(lvdsSensorInterfaceInfo.sensorI2cAddr[0] << 1U))},
{0x5E, (BOARD_OVT_X3N_I2C_ADDR << 1U)},
{0x66, ((uint8)(lvdsSensorInterfaceInfo.sensorBroadcastAddr << 1U))},
{0x7c, 0x00},
{0x6E, 0x99},
{0x72, 0xE4},
// Port 1 Config
{0x4C, 0x12}, /* PORT_SEL: RX Port 1 */
{0x6d, 0x7c},
{0x58, 0x5E},
{0x5C, ((uint8)(lvdsSensorInterfaceInfo.serializerI2cAddr[1] << 1U))},
{0x5D, (BOARD_OVT_X3N_I2C_ADDR)},
{0x65, ((uint8)(lvdsSensorInterfaceInfo.sensorI2cAddr[1] << 1U))},
{0x5E, (BOARD_OVT_X3N_I2C_ADDR << 1U)},
{0x66, ((uint8)(lvdsSensorInterfaceInfo.sensorBroadcastAddr << 1U))},
{0x7c, 0x00},
{0x6E, 0x99},
{0x72, 0xE5},
// Port 2 Config
{0x4C, 0x24}, /* PORT_SEL: RX Port 2 */
{0x6d, 0x7c},
{0x58, 0x5E},
{0x5C, ((uint8)(lvdsSensorInterfaceInfo.serializerI2cAddr[2] << 1U))},
{0x5D, (BOARD_OVT_X3N_I2C_ADDR)},
{0x65, ((uint8)(lvdsSensorInterfaceInfo.sensorI2cAddr[2] << 1U))},
{0x5E, (BOARD_OVT_X3N_I2C_ADDR << 1U)},
{0x66, ((uint8)(lvdsSensorInterfaceInfo.sensorBroadcastAddr << 1U))},
{0x7c, 0x00},
{0x6E, 0x99},
{0x72, 0xE6},
// Port 3 Config
{0x4C, 0x38}, /* PORT_SEL: RX Port 3 */
{0x6d, 0x7c},
{0x58, 0x5E},
{0x5C, ((uint8)(lvdsSensorInterfaceInfo.serializerI2cAddr[3] << 1U))},
{0x5D, (BOARD_OVT_X3N_I2C_ADDR)},
{0x65, ((uint8)(lvdsSensorInterfaceInfo.sensorI2cAddr[3] << 1U))},
{0x5E, (BOARD_OVT_X3N_I2C_ADDR << 1U)},
{0x66, ((uint8)(lvdsSensorInterfaceInfo.sensorBroadcastAddr << 1U))},
{0x7c, 0x00},
{0x6E, 0x99},
{0x72, 0xE7},
// CSI-2 and Forwarding Config
{0xB0, 0x1C},
{0xB1, 0x13},
{0xB2, 0x1F},
{0xBC, 0x00},
{0x32, 0x01}, /* CSI_PORT_SEL: Select CSI-2 TX Port 0 */
{0x33, 0x43}, /* CSI_CTL: Enable CSI-2 TX Port 0 (2 lanes), continuous clock */
{0x20, 0x00}, /* FORWARDING_CTL1: Map RX Port 0 to CSI-2 TX Port 0 */
{0x21, 0x03},
// GPIO for Lock Status
{0x10, 0x81},
{0x17, 0x85},
{0x16, 0x89},
{0x13, 0x8D}
};
DS90UB935-Q1 Serializer Configuration:
Show full code block
const lvds8BitConfigRegs UB935ConfigRegisters[] =
{
{0x01, 0x01},
{0x03, 0x00},
{0x0D, 0xA0},
{0x0E, 0x05},
{0x02, 0x73},
{0x0B, 0x32}, /* SCL High period (for 400kbps I2C) */
{0x0C, 0x32}, /* SCL Low period */
{0x32, 0xC0},
{0x3A, (BOARD_OVT_X3N_I2C_ADDR)},
{0x42, (lvdsSensorInterfaceInfo.sensorI2cAddr[0] << 1)},
};
Request for Assistance
Could you please review our configuration and provide guidance on the following points?
Are there any issues in our register settings that could be contributing to this instability?
What are the recommended diagnostic steps or register settings to further debug this issue?
Thank you for your time and assistance. We look forward to your feedback.