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/PROCESSOR-SDK-DRA8X: Four lines camera UB953 - UB960 problem

Part Number: PROCESSOR-SDK-DRA8X
Other Parts Discussed in Thread: DS90UB960-Q1, ALP

Tool/software: TI C/C++ Compiler

Dear TI
I put four lines camera in TDA4M board, the sensor is AR0233, the ISP is GW5200, the serializer is UB953, the deserializer is UB960 in TDA4M board.
I use the outside ISP, the sensor and ISP is powered on and starts itself, I don't need to config the register of sensor and ISP, the camera is 1920*1080P, 60FPS. so I just need to config the register of UB953 and UB960.
I found that two lines camera camera can work well, but the stream of four lines camera looks like a jam. So I wonder if it's the bandwidth?

for the configuration of UB960, I make incoming VC-ID of 0 for RX Port 0, VC-ID of 1 for
RX Port 1, VC-ID of 2 for RX Port 2, and VC-ID of 3 for RX Port 3,. Each port is sending a video stream
using VC-ID of 0. but I want wo config RX Ports 0 and 1 assigned to CSI-2
Transmitter 0 which RX Ports 2 and 3 are assigned to CSI-2 Transmitter 1, can you tell me how to config the register of UB960?
this is my register configuration.
I2cParams ub960DesCfg_AR0233[AR0233_DES_CFG_SIZE] = {
{0x1, 0x2, 1000},
{0x1f, 0x5, 1000},
{0xB0, 0x1C,0x1},
{0xB1, 0x16,0x1},
{0xB2, 0x00,0x1},
{0xB1, 0x17,0x1},
{0xB2, 0x00,0x1},
{0xB1, 0x18,0x1},
{0xB2, 0x00,0x1},
{0xB1, 0x19,0x1},
{0xB2, 0x00,0x1},
{0xB0, 0x1C,0x1},
{0xB1, 0x15,0x1},
{0xB2, 0x0A,0x1},
{0xB2, 0x00,0x10},

{0x0D, 0x90, 0x1}, /*I/O to 3V3 - Options not valid with datashee*/
{0x0C, 0x0F, 0x1}, /*Enable All ports*/

/*Select Channel 0*/
{0x4C, 0x01, 0x1},
{0x58, 0x5e, 0x1},
{0x72, 0x00, 0x1}, /*VC map*/

/*Select Channel 1*/
{0x4C, 0x12, 0x1},
{0x58, 0x5e, 0x1},/*Enable Back channel, set to 50Mbs*/

/*Select Channel 2*/
{0x4C, 0x24, 0x1},
{0x58, 0x5e, 0x1},/*Enable Back channel, set to 50Mbs*/

/*Select Channel 3*/
{0x4C, 0x38, 0x1},
{0x58, 0x5e, 0x1},/*Enable Back channel, set to 50Mbs*/

/*Select Channel 0*/
{0x4C, 0x01, 0x1},
{0xB0, 0x04, 0x1},
{0xB1, 0x03, 0x1},
{0xB2, 0x20, 0x1},
{0xB1, 0x13, 0x1},
{0xB2, 0x20, 0x1},
{0xB0, 0x04, 0x1},
{0xB1, 0x04, 0x1},
{0xB2, 0x3F, 0x1},
{0xB1, 0x14, 0x1},
{0xB2, 0x3F, 0x1},
{0x42, 0x71, 0x1}, /*Unknown*/
{0x41, 0xF0, 0x1}, /*Unknown*/
{0xB9, 0x18, 0x1},

/*Select Channel 1*/
{0x4C, 0x12, 0x1},
{0xB0, 0x08, 0x1},
{0xB1, 0x03, 0x1},
{0xB2, 0x20, 0x1},
{0xB1, 0x13, 0x1},
{0xB2, 0x20, 0x1},
{0xB0, 0x08, 0x1},
{0xB1, 0x04, 0x1},
{0xB2, 0x3F, 0x1},
{0xB1, 0x14, 0x1},
{0xB2, 0x3F, 0x1},
{0x42, 0x71, 0x1}, /*Unknown*/
{0x41, 0xF0, 0x1}, /*Unknown*/
{0xB9, 0x18, 0x1},

/*Select Channel 2*/
{0x4C, 0x24, 0x1},
{0xB0, 0x0C, 0x1},
{0xB1, 0x03, 0x1},
{0xB2, 0x20, 0x1},
{0xB1, 0x13, 0x1},
{0xB2, 0x20, 0x1},
{0xB0, 0x0C, 0x1},
{0xB1, 0x04, 0x1},
{0xB2, 0x3F, 0x1},
{0xB1, 0x14, 0x1},
{0xB2, 0x3F, 0x1},
{0x42, 0x71, 0x1}, /*Unknown*/
{0x41, 0xF0, 0x1}, /*Unknown*/
{0xB9, 0x18, 0x1},

/*Select Channel 3*/
{0x4C, 0x38, 0x1},
{0xB0, 0x10, 0x1},
{0xB1, 0x03, 0x1},
{0xB2, 0x20, 0x1},
{0xB1, 0x13, 0x1},
{0xB2, 0x20, 0x1},
{0xB0, 0x10, 0x1},
{0xB1, 0x04, 0x1},
{0xB2, 0x3F, 0x1},
{0xB1, 0x14, 0x1},
{0xB2, 0x3F, 0x1},
{0x42, 0x71, 0x1}, /*Unknown*/
{0x41, 0xF0, 0x1}, /*Unknown*/
{0xB9, 0x18, 0x1},


{0x32, 0x01, 0x1}, /*Enable TX port 0*/
{0x20, 0x00, 0x1}, /*Forwarding and using CSIport 0 */

/*Sets GPIOS*/
{0x10, 0x83, 0x1},
{0x11, 0xA3, 0x1},
{0x12, 0xC3, 0x1},
{0x13, 0xE3, 0x1},

{0x4C, 0x01, 0x1},
{0x58, 0x5e, 0x1},
{0xBC, 0x00, 0x1}, /*Unknown*/
{0x5C, (SER_0_I2C_ALIAS << 1), 0x10},
{0x5D, (SENSOR_0_I2C_ALIAS << 1), 0x10},
{0x65, (SER_0_I2C_ALIAS << 1), 0x10},
{0x5E, (AR0233_I2C_ADDR << 1), 0x10},
{0x66, (SENSOR_0_I2C_ALIAS << 1), 0x10},
{0x6D, 0x6C,0x1}, /*CSI Mode*/
{0x72, 0x00,0x1}, /*VC Map - All to 0 */
{0x7C, 0x20, 0x10}, /*Line Valid active high, Frame Valid active high*/
{0xD5, 0xF3, 0x10}, /*Auto Attenuation*/
{0xB0,0x1C, 0x1},
{0xB1,0x15, 0x1},
{0xB2,0x0A, 0x1},
{0xB2,0x00, 0x1},
{0x32, 0x21, 0x1},
{0x33, 0x02, 0x1},

{0x4C, 0x12, 0x1},
{0x58, 0x5e, 0x1},
{0xBC, 0x00, 0x1}, /*Unknown*/
{0x5C, (SER_1_I2C_ALIAS << 1), 0x10},
{0x5D, (SENSOR_1_I2C_ALIAS << 1), 0x10},
{0x65, (SER_1_I2C_ALIAS << 1), 0x10},
{0x5E, (AR0233_I2C_ADDR << 1), 0x10},
{0x66, (SENSOR_1_I2C_ALIAS << 1), 0x10},
{0x6D, 0x6C,0x1}, /*CSI Mode*/
{0x72, 0x55,0x1}, /*VC Map - All to 1 */
{0x7C, 0x20, 0x10}, /*Line Valid active high, Frame Valid active high*/
{0xD5, 0xF3, 0x10}, /*Auto Attenuation*/
{0xB0,0x1C, 0x1},
{0xB1,0x15, 0x1},
{0xB2,0x0A, 0x1},
{0xB2,0x00, 0x1},
{0x32, 0x21, 0x1},
{0x33, 0x02, 0x1},

{0x4C, 0x24, 0x1},
{0x58, 0x5e, 0x1},
{0xBC, 0x00, 0x1}, /*Unknown*/
{0x5C, (SER_2_I2C_ALIAS << 1), 0x10},
{0x5D, (SENSOR_2_I2C_ALIAS << 1), 0x10},
{0x65, (SER_2_I2C_ALIAS << 1), 0x10},
{0x5E, (AR0233_I2C_ADDR << 1), 0x10},
{0x66, (SENSOR_2_I2C_ALIAS << 1), 0x10},
{0x6D, 0x6C,0x1}, /*CSI Mode*/
{0x72, 0xaa,0x1}, /*VC Map - All to 2 */
{0x7C, 0x20, 0x10}, /*Line Valid active high, Frame Valid active high*/
{0xD5, 0xF3, 0x10}, /*Auto Attenuation*/
{0xB0,0x1C, 0x1},
{0xB1,0x15, 0x1},
{0xB2,0x0A, 0x1},
{0xB2,0x00, 0x1},
{0x32, 0x21, 0x1},
{0x33, 0x02, 0x1},

{0x4C, 0x38, 0x1},
{0x58, 0x5e, 0x1},
{0xBC, 0x00, 0x1}, /*Unknown*/
{0x5C, (SER_3_I2C_ALIAS << 1), 0x10},
{0x5D, (SENSOR_3_I2C_ALIAS << 1), 0x10},
{0x65, (SER_3_I2C_ALIAS << 1), 0x10},
{0x5E, (AR0233_I2C_ADDR << 1), 0x10},
{0x66, (SENSOR_3_I2C_ALIAS << 1), 0x10},
{0x6D, 0x6C,0x1}, /*CSI Mode*/
{0x72, 0xff,0x1}, /*VC Map - All to 3 */
{0x7C, 0x20, 0x10}, /*Line Valid active high, Frame Valid active high*/
{0xD5, 0xF3, 0x10}, /*Auto Attenuation*/
{0xB0,0x1C, 0x1},
{0xB1,0x15, 0x1},
{0xB2,0x0A, 0x1},
{0xB2,0x00, 0x1},
{0x32, 0x21, 0x1},
{0x33, 0x02, 0x1},


{0x21, 0x03, 0x1},
{0x20, 0x00, 0x1},
{0xFFFF, 0x00, 0x0} //End of script
};

  • Hi Red Sun,

    Please modify and run the P960_953_BIST_AllPorts.py script found in Analog Launch Pad ( Analog LaunchPAD v1.57.0010\PreDefScripts\DS90UB960 ).

    This will ensure you have a proper link to all 4 devices from the 960 and will help identify any trouble spots.

    The DS90UB960-Q1 supplies two MIPI CSI-2 ports, configuration with four lanes per port with up to 1.664 Gbps per lane. The second MIPI CSI-2 output port is available to provide either more bandwidth or supply a second replicated output.

    There is a TI reference design (http://www.ti.com/tool/TIDA-01413) that walks through the bring up of a 960 paired with cameras.  The bring up is discussed in section 4.4: http://www.ti.com/lit/ug/tidudj8a/tidudj8a.pdf

    These steps are described and should guide you through the bring up process.

    Sincerely,
    Bryan Kahler

  • Hi Bryan Kahler,

    My work environment is TDA4M board, not WINDOWS.

    Can you just tell me how to configure the register about UB960 to open CSI-2 port1?

  • Hi Red Sun,

    The commands are given in section 4.4: http://www.ti.com/lit/ug/tidudj8a/tidudj8a.pdf

    These commands include CSI-2 configuration of the ports.

    Sincerely,

    Bryan Kahler

  • Hi Bryan Kahler,

    The document can't help me,can you help me or just tell me how to configure the register about UB960 to open CSI-2 port1?

    this my register configuration modify for this document:

    I2cParams ub960DesCfg_AR0233[AR0233_DES_CFG_SIZE] = {
    {0x1, 0x2, 1000},
    {0x1f, 0x4, 1000},

    // {0xB0, 0x1C,0x1},
    // {0xB1, 0x16,0x1},
    // {0xB2, 0x00,0x1},
    // {0xB1, 0x17,0x1},
    // {0xB2, 0x00,0x1},
    // {0xB1, 0x18,0x1},
    // {0xB2, 0x00,0x1},
    // {0xB1, 0x19,0x1},
    // {0xB2, 0x00,0x1},
    // {0xB0, 0x1C,0x1},
    // {0xB1, 0x15,0x1},
    // {0xB2, 0x0A,0x1},
    // {0xB2, 0x00,0x10},


    {0x0D, 0x90, 0x1}, /*I/O to 3V3 - Options not valid with datashee*/
    {0x0C, 0x0F, 0x1}, /*Enable All ports*/

    /*Select Channel 0*/
    {0x4C, 0x01, 0x1},
    {0x58, 0x5e, 0x1},
    {0x72, 0x00, 0x1}, /*VC map*/

    // {0xB0, 0x02,0x1},
    // {0xB1, 0x40,0x1},
    // {0xB2, 0x83,0x1},
    // {0xB2, 0x8D,0x1},
    // {0xB2, 0x87,0x1},
    // {0xB2, 0x87,0x1},
    // {0xB2, 0x83,0x1},
    // {0xB2, 0x86,0x10},
    // {0xB2, 0x84,0x1},
    // {0xB2, 0x86,0x1},
    // {0xB2, 0x84,0x1},



    /*Select Channel 1*/
    {0x4C, 0x12, 0x1},
    {0x58, 0x5e, 0x1},/*Enable Back channel, set to 50Mbs*/

    // {0xB0, 0x02,0x1},
    // {0xB1, 0x40,0x1},
    // {0xB2, 0x83,0x1},
    // {0xB2, 0x8D,0x1},
    // {0xB2, 0x87,0x1},
    // {0xB2, 0x87,0x1},
    // {0xB2, 0x83,0x1},
    // {0xB2, 0x86,0x10},
    // {0xB2, 0x84,0x1},
    // {0xB2, 0x86,0x1},
    // {0xB2, 0x84,0x1},



    /*Select Channel 2*/
    {0x4C, 0x24, 0x1},
    {0x58, 0x5e, 0x1},/*Enable Back channel, set to 50Mbs*/

    // {0xB0, 0x02,0x1},
    // {0xB1, 0x60,0x1},
    // {0xB2, 0x83,0x1},
    // {0xB2, 0x8D,0x1},
    // {0xB2, 0x87,0x1},
    // {0xB2, 0x87,0x1},
    // {0xB2, 0x83,0x1},
    // {0xB2, 0x86,0x10},
    // {0xB2, 0x84,0x1},
    // {0xB2, 0x86,0x1},
    // {0xB2, 0x84,0x1},



    /*Select Channel 3*/
    {0x4C, 0x38, 0x1},
    {0x58, 0x5e, 0x1},/*Enable Back channel, set to 50Mbs*/

    // {0xB0, 0x02,0x1},
    // {0xB1, 0x60,0x1},
    // {0xB2, 0x83,0x1},
    // {0xB2, 0x8D,0x1},
    // {0xB2, 0x87,0x1},
    // {0xB2, 0x87,0x1},
    // {0xB2, 0x83,0x1},
    // {0xB2, 0x86,0x10},
    // {0xB2, 0x84,0x1},
    // {0xB2, 0x86,0x1},
    // {0xB2, 0x84,0x1},

    /*Sets GPIOS*/
    {0x10, 0x83, 0x1},
    {0x11, 0xA3, 0x1},
    {0x12, 0xC3, 0x1},
    {0x13, 0xE3, 0x1},

    {0x4C, 0x01, 0x1},
    {0x58, 0x5e, 0x1},
    {0xBC, 0x00, 0x1}, /*Unknown*/
    {0x5C, (SER_0_I2C_ALIAS << 1), 0x10},
    {0x5D, (SENSOR_0_I2C_ALIAS << 1), 0x10},
    {0x65, (SER_0_I2C_ALIAS << 1), 0x10},
    {0x5E, (AR0233_I2C_ADDR << 1), 0x10},
    {0x66, (SENSOR_0_I2C_ALIAS << 1), 0x10},
    {0x6D, 0x6C,0x1}, /*CSI Mode*/
    {0x72, 0x00,0x1}, /*VC Map - All to 0 */
    {0x7C, 0x20, 0x10}, /*Line Valid active high, Frame Valid active high*/
    {0xD5, 0xF3, 0x10}, /*Auto Attenuation*/
    // {0xB0,0x1C, 0x1},
    // {0xB1,0x15, 0x1},
    // {0xB2,0x0A, 0x1},
    // {0xB2,0x00, 0x1},
    {0x20, 0x0C, 0x1},
    {0x32, 0x01, 0x1},
    // {0x33, 0x02, 0x1},

    {0x4C, 0x12, 0x1},
    {0x58, 0x5e, 0x1},
    {0xBC, 0x00, 0x1}, /*Unknown*/
    {0x5C, (SER_1_I2C_ALIAS << 1), 0x10},
    {0x5D, (SENSOR_1_I2C_ALIAS << 1), 0x10},
    {0x65, (SER_1_I2C_ALIAS << 1), 0x10},
    {0x5E, (AR0233_I2C_ADDR << 1), 0x10},
    {0x66, (SENSOR_1_I2C_ALIAS << 1), 0x10},
    {0x6D, 0x6C,0x1}, /*CSI Mode*/
    {0x72, 0x55,0x1}, /*VC Map - All to 1 */
    {0x7C, 0x20, 0x10}, /*Line Valid active high, Frame Valid active high*/
    {0xD5, 0xF3, 0x10}, /*Auto Attenuation*/
    // {0xB0,0x1C, 0x1},
    // {0xB1,0x15, 0x1},
    // {0xB2,0x0A, 0x1},
    // {0xB2,0x00, 0x1},
    {0x20, 0x0C, 0x1},
    {0x32, 0x01, 0x1},
    // {0x33, 0x02, 0x1},

    {0x4C, 0x24, 0x1},
    {0x58, 0x5e, 0x1},
    {0xBC, 0x00, 0x1}, /*Unknown*/
    {0x5C, (SER_2_I2C_ALIAS << 1), 0x10},
    {0x5D, (SENSOR_2_I2C_ALIAS << 1), 0x10},
    {0x65, (SER_2_I2C_ALIAS << 1), 0x10},
    {0x5E, (AR0233_I2C_ADDR << 1), 0x10},
    {0x66, (SENSOR_2_I2C_ALIAS << 1), 0x10},
    {0x6D, 0x6C,0x1}, /*CSI Mode*/
    {0x72, 0xaa,0x1}, /*VC Map - All to 2 */
    {0x7C, 0x20, 0x10}, /*Line Valid active high, Frame Valid active high*/
    {0xD5, 0xF3, 0x10}, /*Auto Attenuation*/
    // {0xB0,0x1C, 0x1},
    // {0xB1,0x15, 0x1},
    // {0xB2,0x0A, 0x1},
    // {0xB2,0x00, 0x1},
    {0x20, 0x0C, 0x1},
    {0x32, 0x12, 0x1},
    // {0x33, 0x02, 0x1},

    {0x4C, 0x38, 0x1},
    {0x58, 0x5e, 0x1},
    {0xBC, 0x00, 0x1}, /*Unknown*/
    {0x5C, (SER_3_I2C_ALIAS << 1), 0x10},
    {0x5D, (SENSOR_3_I2C_ALIAS << 1), 0x10},
    {0x65, (SER_3_I2C_ALIAS << 1), 0x10},
    {0x5E, (AR0233_I2C_ADDR << 1), 0x10},
    {0x66, (SENSOR_3_I2C_ALIAS << 1), 0x10},
    {0x6D, 0x6C,0x1}, /*CSI Mode*/
    {0x72, 0xff,0x1}, /*VC Map - All to 3 */
    {0x7C, 0x20, 0x10}, /*Line Valid active high, Frame Valid active high*/
    {0xD5, 0xF3, 0x10}, /*Auto Attenuation*/
    // {0xB0,0x1C, 0x1},
    // {0xB1,0x15, 0x1},
    // {0xB2,0x0A, 0x1},
    // {0xB2,0x00, 0x1},
    {0x20, 0x0C, 0x1},
    {0x32, 0x12, 0x1},
    // {0x33, 0x02, 0x1},


    {0x21, 0x03, 0x1},
    {0x33, 0x02, 0x1},
    {0xFFFF, 0x00, 0x0} //End of script
    };

  • Hi

    can you help me as soon as possible?

  • Hi Redsun,

    Yes, as requested, please share the results from the BIST script shared above.  It's just a python script with I2C commands that tests the 4 ports.  It is written to test between the 960 and 953.

    Analog launch pad is not required here.  The script is included with the free download of ALP.  Please use the SOC of your choice, however, if you're not using Analog launch pad or another soc with python loaded, you will need to modify the script.

    Sincerely,

    Bryan Kahler

     

  • Hi Red Sun,

    After running the test to ensure the connections are proper and lock is achieved, please ensure that line rates are properly set for the required output bandwidth.

    The CSI-2 Output Bandwidth Calculation formula is given in section 7.4.20 of the datasheet.

    Also, please ensure that your CSI-2 timing parameters are sufficient.  In the script above there is a write to set 0x1F to 01b (1.2 Gbps with a 25 MHz REFCLK).  00b will allow a TX Data Rate of 1.6 Gbps with a 25 MHz REFCLK.

    Sincerely,
    Bryan Kahler

  • Hi Red Sun,

    Haven't heard back in a while - I hope in this case no news is good news and the issue is now resolved.

    If the issues still persists, could you please answer the above questions as well as the questions below?  Thank you.

    Were you able to run the tests?  After calculating the required bandwidth, were you able to confirm that the clock was set properly?  There isn't enough information given above for me to perform this calculation for you.  The CSI-2 Output Bandwidth Calculation formula is given in section 7.4.20 of the datasheet.  If you have any questions with respect to this section, please let me know.

    Sincerely,
    Bryan Kahler

  • Dear TI

    I need the TI-UB960 engineer help me, not J721E engineer.

    I have read the <ADAS 8-Channel Sensor Fusion Hub Reference Design With Two 4-Gbps Quad Deserializers >,  but It can help me, I don't know how to set  CSI-2 Output Bandwidth by this PDF,  I just want to set the UB960 CSI Bandwidth , not CSI Phy chip.

  • Hi Red Sun,

    Although the TDA part is listed on this thread, the post was routed internally to the FPD-Link Applications team.  I'm a member of the applications team for FPD-Link products, such as the UB960.

    Debug steps and questions have been posed, but remain unanswered.

    To allow us to assist here, please kindly provide answers to the questions posed above. 

    Sincerely,
    Bryan Kahler