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