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.

DS90UB953-Q1: RTOS/TDA2PXEVM: Serializer and Sensor not getting detected using I2C Back channel

Part Number: DS90UB953-Q1
Other Parts Discussed in Thread: TDA2, ALP

Hello,

I had raised a question in the processor forum about the Serializer and Sensor not getting initialized through I2C Back channel. The original question is given below:

http://e2e.ti.com/support/processors/f/791/p/746377/2759574#2759574

This is my latest observation as mentioned in the above post:

 "I debugged the circuit today using the oscilloscope and I found that UB960 U1 on the fusion board is getting the I2C Signals correctly from the TDA2PX board, but the output DOUTP from UB960 is just a DC voltage of 5V (power) and that there is no change in signal corresponding to I2C Read/write commands to remote I2C Device UB953. This means that there seems to be a mistake in the register settings of UB960, in the way it is forwarding I2C commands to the Serializer and the the remote sensor.

I have attached the table for register settings of UB960 below. It would be really helpful if you could find any mistake in the register settings or if you want me to add/delete something here:

BspUtils_Ub960I2cParams gUb960Cfg_D3AR1243[] = {
/* Reset */
{0x01, 0x01, 1000},
/* ENABLE SERIAL LINK DATA INTEGRITY ERROR COUNT */
{0xB9, 0x18, UB960_REG_DELAY_TIME},
/* ENABLE SFILTER with AEQ ADAPTION */
{0x42, 0x71, UB960_REG_DELAY_TIME},

/* RX0 */
{0x4c, 0x01, 1000}, /* Port 0 */
{0x58, UB960_FREQ_SEL, UB960_REG_DELAY_TIME}, /* Enable Back channel, set to 50Mbs */
{0xD5, 0xC0, UB960_REG_DELAY_TIME}, /* Set AEQ MIN/MAX widest values */

{0x5B, 0x30, UB960_REG_DELAY_TIME}, /*New Serializer I2C Address*/ 
{0x5C, (D3_AR1243_PORT_0_SER_ADDR << 1U), UB960_REG_DELAY_TIME}, /*New Serializer alias address*/

{0x5D, 0x50, UB960_REG_DELAY_TIME}, /*New Sensor I2C Address*/ 
{0x65, ( D3_AR1243_PORT_0_SENSOR_ADDR<< 1U), UB960_REG_DELAY_TIME}, /*Serializer alias address*/

{0x32, 0x01, UB960_REG_DELAY_TIME}, /*Enable TX port 0*/
{0x33, 0x03, UB960_REG_DELAY_TIME}, /*Enable Continuous clock mode and CSI output*/

{0xBC, 0x00, UB960_REG_DELAY_TIME}, /*Unknown*/
{0x6D, 0x6C, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x05, 0x00, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x06, 0x01, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x72, 0x00, UB960_REG_DELAY_TIME}, /*VC Map - All to 0*/
{0x7C, 0x00, UB960_REG_DELAY_TIME}, /*Line Valid active high, Frame Valid active high*/
{0xD5, 0xF3, UB960_REG_DELAY_TIME}, /*Auto Attenuation*/

/* RX1 */
{0x4c, 0x12, 100}, /* Port 1 */
{0x58, UB960_FREQ_SEL, UB960_REG_DELAY_TIME}, /* Enable Back channel, set to 50Mbs */
{0xD5, 0xC0, UB960_REG_DELAY_TIME}, /* Set AEQ MIN/MAX widest values */
{0x5B, 0x30, UB960_REG_DELAY_TIME}, /*New Serializer I2C Address*/ 
{0x5C, (D3_AR1243_PORT_1_SER_ADDR << 1U), UB960_REG_DELAY_TIME}, /*New Serializer alias address*/

{0x5D, 0x50, UB960_REG_DELAY_TIME}, /*New Sensor I2C Address*/ 
{0x65, ( D3_AR1243_PORT_1_SENSOR_ADDR<< 1U), UB960_REG_DELAY_TIME}, /*Serializer alias address*/

{0x32, 0x01, UB960_REG_DELAY_TIME}, /*Enable TX port 0*/
{0x33, 0x03, UB960_REG_DELAY_TIME}, /*Enable Continuous clock mode and CSI output*/

{0xBC, 0x00, UB960_REG_DELAY_TIME}, /*Unknown*/
{0x6D, 0x6C, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x05, 0x00, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x06, 0x01, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x72, 0x55, UB960_REG_DELAY_TIME}, /*VC Map - All to 0*/
{0x7C, 0x00, UB960_REG_DELAY_TIME}, /*Line Valid active high, Frame Valid active high*/
{0xD5, 0xF3, UB960_REG_DELAY_TIME}, /*Auto Attenuation*/

/* RX2 */
{0x4c, 0x24, 100}, /* Port 2 */
{0x58, UB960_FREQ_SEL, UB960_REG_DELAY_TIME}, /* Enable Back channel, set to 50Mbs */
{0xD5, 0xC0, UB960_REG_DELAY_TIME}, /* Set AEQ MIN/MAX widest values */

{0x5B, 0x30, UB960_REG_DELAY_TIME}, /*New Serializer I2C Address*/ 
{0x5C, (D3_AR1243_PORT_2_SER_ADDR << 1U), UB960_REG_DELAY_TIME}, /*New Serializer alias address*/

{0x5D, 0x50, UB960_REG_DELAY_TIME}, /*New Sensor I2C Address*/ 
{0x65, ( D3_AR1243_PORT_2_SENSOR_ADDR<< 1U), UB960_REG_DELAY_TIME}, /*Serializer alias address*/

{0x32, 0x01, UB960_REG_DELAY_TIME}, /*Enable TX port 0*/
{0x33, 0x03, UB960_REG_DELAY_TIME}, /*Enable Continuous clock mode and CSI output*/

{0xBC, 0x00, UB960_REG_DELAY_TIME}, /*Unknown*/
{0x6D, 0x6C, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x05, 0x00, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x06, 0x01, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x72, 0xAA, UB960_REG_DELAY_TIME}, /*VC Map - All to 0*/
{0x7C, 0x00, UB960_REG_DELAY_TIME}, /*Line Valid active high, Frame Valid active high*/
{0xD5, 0xF3, UB960_REG_DELAY_TIME}, /*Auto Attenuation*/

/* RX3 */
{0x4c, 0x38, 100}, /* Port 3 */
{0x58, UB960_FREQ_SEL, UB960_REG_DELAY_TIME}, /* Enable Back channel, set to 50Mbs */
{0xD5, 0xC0, UB960_REG_DELAY_TIME}, /* Set AEQ MIN/MAX widest values */

{0x5B, 0x30, UB960_REG_DELAY_TIME}, /*New Serializer I2C Address*/ 
{0x5C, (D3_AR1243_PORT_3_SER_ADDR << 1U), UB960_REG_DELAY_TIME}, /*New Serializer alias address*/

{0x5D, 0x50, UB960_REG_DELAY_TIME}, /*New Sensor I2C Address*/ 
{0x65, ( D3_AR1243_PORT_3_SENSOR_ADDR<< 1U), UB960_REG_DELAY_TIME}, /*Serializer alias address*/

{0x32, 0x01, UB960_REG_DELAY_TIME}, /*Enable TX port 0*/
{0x33, 0x03, UB960_REG_DELAY_TIME}, /*Enable Continuous clock mode and CSI output*/

{0xBC, 0x00, UB960_REG_DELAY_TIME}, /*Unknown*/
{0x6D, 0x6C, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x05, 0x00, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x06, 0x01, UB960_REG_DELAY_TIME}, /*CSI Mode*/
{0x72, 0xFF, UB960_REG_DELAY_TIME}, /*VC Map - All to 0*/
{0x7C, 0x00, UB960_REG_DELAY_TIME}, /*Line Valid active high, Frame Valid active high*/
{0xD5, 0xF3, UB960_REG_DELAY_TIME}, /*Auto Attenuation*/

{0x0D, 0x90, UB960_REG_DELAY_TIME}, /*I/O to 3V3 - Options not valid with datasheet*/
{0x0C, 0x0F, UB960_REG_DELAY_TIME}, /*Enable All ports*/ 
{0x20, 0x00, UB960_REG_DELAY_TIME}, /*Forwarding and using CSIport 0*/

/*Sets GPIOS*/
{0x0F, 0xF0, UB960_REG_DELAY_TIME}, /*Disable GPIO 0 ~ 3 input*/
#ifdef BOARD_TYPE_TDA3XX_RVP
{0x10, 0x41, UB960_REG_DELAY_TIME}, /*GPIO 0 - Output received GPIO 2 (HST_INT) from Port 0*/
{0x11, 0x45, UB960_REG_DELAY_TIME}, /*GPIO 1 - Output received GPIO 2 (HST_INT) from Port 1*/
{0x12, 0x49, UB960_REG_DELAY_TIME}, /*GPIO 2 - Output received GPIO 2 (HST_INT) from Port 2*/
{0x13, 0x4D, UB960_REG_DELAY_TIME}, /*GPIO 3 - Output received GPIO 2 (HST_INT) from Port 3*/
#else
{0x14, 0x41, UB960_REG_DELAY_TIME}, /*GPIO 4 - Output received GPIO 2 (HST_INT) from Port 0*/
#endif
{0x59, 0x83, UB960_REG_DELAY_TIME}, /* Enable 4 GPIOs */
{0x21, 0x01, UB960_REG_DELAY_TIME}, /* for Round Robin/Best Effort Forwarding */
{0x20, 0x00, UB960_REG_DELAY_TIME}, /* forwarding RX Port0~3 to CSI2 Port0 */
};

I tried using the original code where they have defined the Serializer address as Slave_Address[0] (0x5D) and Sensor Address as Slave_Address[1] (0X5E) as well as defining it in the Serializer Address Register (0x5B) and Sensor Address in 0X5D like above. Both the settings gave me the same error and I was not able to communicate with the Serializer using FPD-Link III. Please let me know if you have any suggestions."

I also found through this forum that other users were able to establish communication through back channel at 25Mhz. However, in the above code the setting is done for 25Mhz but yet it has been unsuccessful for me. Could you help me with this issue?

Best Regards,

Nishant



Best Regards,
Nishant

  • Hello Nishant,

    Are you using both the U1 960 and the U2 960? If not, can you try using the U2 960 with the same settings and see if you have the same result?

    Also, you mentioned that you are setting the back channel to 25 Mbps, but the comment in your code above says 50 Mbps? Is this a typo? Since you are writing using the variable "UB960_FREQ_SEL", I am sure what value you are actually writing to the register. Can you let me know what value you are assigning to UB960_FREQ_SEL?

    Regards,

    Zoe

  • Hello Zoe,

    Thank you for your reply! Yes, I was using U1 960 only as of now. I will try with U2 960 as well. For changing to U2, is there any software register setting I need to change? I know I would need to change the voltage setting in J27 radar connector in the fusion board.

    Yes, the 50 Mbps written there is a typo. Sorry about that. The value UB960_FREQ_SEL is 0x5D (which is the setting for 25Mbps I think).

    Thank you,
    Nishant
  • Hello Zoe,

    I connected the J27 to 5V setting and put S5 to OFF-ON-OFF-ON setting and I run the program. But i am still getting the same error as mentioned before. As mentioned in the post earlier, I am getting 5V DC power through FPD-Link and TDA2 is able to send I2C Commands to UB960 successfully but it is not generating any BC data through FPD-Link. I tested the FPD-LInk Doutp line with oscilloscope to verify this.

    Please help me if you have any suggestions.
    Best Regards,
    Nishant
  • Hi Nishant,

    Thanks for checking these items.

    I think you meant to attach the register dump for Port 0 in your initial post, but it doesn't look like it worked.

    Can you try attaching it again?

    Regards,
    Zoe
  • Hello Zoe,

    I tried using ALP tool to read Port 0 values but I was getting UNKNOWN FPD-Link III Deserializer in the device information and I wasn't able to read the register dump from Port 0 of the derserializer. I tried adding few lines of code before register read to make sure that I get port 0 values, but I am getting ILLEGAL PARAMS Error when I do that. The code that I added is given below:

    retVal2 = Bsp_deviceWrite8(
    UB960_ACCESSIBLE_FROM_I2C_INST,
    UB960_SLAVE_ADDR,
    &regisWr, //where const UInt8 regisWr=0x4C;
    0x0, //since I had to read from port 0
    (UInt32) 1U);                                                                 //This Bsp_deviceWrite8 Function gives me ILLEGAL Params Error

    retVal2 = Bsp_deviceRead8(
    UB960_ACCESSIBLE_FROM_I2C_INST,
    UB960_SLAVE_ADDR,
    &regisRd,
    &ret7,
    (UInt32) 1U);
    if (retVal2 == BSP_SOK)
    {
    GT_1trace(BspDeviceTrace, GT_ERR, "Inside Serializer Loop- 0x4C Register: 0x%02x \r\n", ret7);                       //The value Returned is port 3s value
    }

    Please let me know why it is showing ILLEGAL Params when I use Bsp_deviceWrite8().

    Thank you,

    Nishant

  • Hi Nishant,

    I'm going to transfer this ticket to the team that worked on this board to help you debug the code as I am not familiar with it.

    Regards,
    Zoe
  • Hello Zoe,

    I got this issue resolved. I think there is a mistake in the datasheet of the Fusion Application board. According to the datasheet (www.tij.co.jp/.../spruii1.pdf), the S4 Setting should be OFF/ON/OFF/ON whereas if you look at the schematic of the fusion board, it says S4 setting should be ON,OFF,OFF,ON (www.ti.com/.../tidrw14.pdf). I put the switch setting as mentioned in the schematic and also increased the power level to 12V and it worked.

    Thank you!
    Best Regards,
    Nishant
  • Hi Nishant,

    glad to hear that the issue is resolved and thanks for updating the thread.
    I will mark the thread as closed. If you face any issues or have questions please open a new one.

    Regards,
    Yordan