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.

DS90UB954-Q1: How to configure External FrameSync With Two DS90UB954 Deserializers (each Des connect one camera)

Part Number: DS90UB954-Q1


Hi TI_Team,

We are using two DS90UB954 Deserializers with two DS90UB953/AR0231 cameras, now the two cameras open and preview fine.
Now we need to synchronize two DS90UB954 Deserializers as shown in Figure 29 of DS90UB954 datasheet.

  • Share same Crystal 24MHz 20ppm (not exactly 25MHz) and supply to REFCLK port of both 954.
  • Set GPIO_0 for Backchannel FrameSynch, and supply external Frame Synch to both 954 (PWM 30Hz 50%duty).
  • Configure FS_CTL as 0x80 (External FrameSync from GPIO0)
  • Configure BC_GPIO_CTL0 as 0x8A ( BC GPIO1=fixed low, BC GPIO0=FrameSynch)

With the above setting, the two DS90UB954 synchronization works not good.
Could you help to check my setting and give us some advices?

Register settings:
```

TI954 
{0x01, 0x02},
{0xB3, 0x00}, /* BIST */
{0x1F, 0x00}, /* 800Mbps csi clock per lane//1.6Gbps csi clock per lane */
{0x32, 0x01},
{0x33, 0x01}, /* 4line */
{0x20, 0x00},

{0x4C, 0x01},
{0x58, 0x5E}, /* BCC_CONFIG --- BC_FREQ_SELECT 50Mbps */
{0x5C, (TI953_CAM1_ADDR << 1)}, /* TI 953 alias address */
{0x5D, (SENSOR_ADDR << 1)}, /* CAM salve address */
{0x65, (CAM1_SENSOR_ADDR << 1)}, /* CAM alias address */
{0x72, 0xE8}, /* Map Sensor A VC0 to CSI-Tx VC-ID0 */
{0x0F, 0x7F}, /* GPIOs as input */

{0x4C, 0x12},
{0x58, 0x5E},
{0x5C, (TI953_CAM2_ADDR << 1)},
{0x5D, (SENSOR_ADDR << 1)},
{0x65, (CAN2_SENSOR_ADDR << 1)},
{0x72, 0xE9}, /* Map Sensor B VC0 to CSI-Tx VC-ID1 */
{0x0F, 0x7F}, /* GPIOs as input */


{0x6E, 0x8A}, /* BC_GPIO_CTL: FrameSync signal sent to back channel GPIO0 */
{0x6F, 0x32}, /* GPIO2->GPIO2, GPIO3->GPIO3 */
{0x10, 0x91}, /* FrameSync signal; device status; enabled */
{0x18, 0x80}, /* Enable FrameSync from GPIO0 */

TI953 

{TI953_CAM1_ADDR, 0x0E, 0x3C}, /* Enable GPIOs as output */
{TI953_CAM1_ADDR, 0x0D, 0xD2}, /* enable remote data */

{TI953_CAM2_ADDR, 0x0E, 0x3C}, /* Enable GPIOs as output */
{TI953_CAM2_ADDR, 0x0D, 0xD2}, /* enable remote data */


```

  • Hi Dennis,

    It doesn't look like you're setting the framesync high and low time?

    the total period of your frame sync is (1 / frame rate ) / 600ns for a 50Mbps back channel operation.

    You can use the total period number to convert to your high an low time, and program it into reg 0x19 - 0x1C.

    Refer to page 50 in the datasheet for details.


  • Hi Jiashow,

    Thanks for your information. 

    I have set the 0x19~0x1c registers value, refer to  page 50 in the datasheet, but the framesync still not worked.

    I have a question about it if I use external framesyc mode for multi TI954 still have to set 0x19~0x1c registers? BTW, is there any register or method to check multi TI954 sync status ?

    Register settings:

    TI954
    {0x01, 0x02},
    {0xB3, 0x00}, /* BIST */
    {0x1F, 0x00}, /* 800Mbps csi clock per lane//1.6Gbps csi clock per lane */
    {0x32, 0x01},
    {0x33, 0x01}, /* 4line */
    {0x20, 0x00},

    {0x4C, 0x01},
    {0x58, 0x5E}, /* BCC_CONFIG --- BC_FREQ_SELECT 50Mbps */
    {0x5C, (TI953_CAM1_ADDR << 1)}, /* TI 953 alias address */
    {0x5D, (SENSOR_ADDR << 1)}, /* CAM salve address */
    {0x65, (CAM1_SENSOR_ADDR << 1)}, /* CAM alias address */
    {0x72, 0xE8}, /* Map Sensor A VC0 to CSI-Tx VC-ID0 */
    {0x0F, 0x7F}, /* GPIOs as input */

    {0x4C, 0x12},
    {0x58, 0x5E},
    {0x5C, (TI953_CAM2_ADDR << 1)},
    {0x5D, (SENSOR_ADDR << 1)},
    {0x65, (CAN2_SENSOR_ADDR << 1)},
    {0x72, 0xE9}, /* Map Sensor B VC0 to CSI-Tx VC-ID1 */
    {0x0F, 0x7F}, /* GPIOs as input */

    {0x19,0x0A}, // # FS_HIGH_TIME_1
    {0x1A,0xD7}, // # FS_HIGH_TIME_0
    {0x1B,0x61}, // # FS_LOW_TIME_1
    {0x1C,0xA0}, // # FS_LOW_TIME_0
    {0x6E, 0x8A}, /* BC_GPIO_CTL: FrameSync signal sent to back channel GPIO0 */
    {0x6F, 0x32}, /* GPIO2->GPIO2, GPIO3->GPIO3 */
    {0x10, 0x91}, /* FrameSync signal; device status; enabled */
    {0x18, 0x80}, /* Enable FrameSync from GPIO0 */

    TI953
    {TI953_CAM1_ADDR, 0x0E, 0x3C}, /* Enable GPIOs as output */
    {TI953_CAM1_ADDR, 0x0D, 0xD2}, /* enable remote data */

    {TI953_CAM2_ADDR, 0x0E, 0x3C}, /* Enable GPIOs as output */
    {TI953_CAM2_ADDR, 0x0D, 0xD2}, /* enable remote data */

  • Hi Dennis,

    If you configure for external framesync, you do not need to set the framesync timing registers.

    What's your desired framesync signal/duty cycle?

    If you probe the signal on the serializer, what do you see?

    Best,

    Jiashow

  • Hi Jiashow,

    Sorry for later replay due to the China Spring Festival vacation.

    We have tried 25Hz/50duty and 30Hz/50duty as the framesync signal, but niether success to sync.

    On the serializer we can see the pwm signal 25Hz or 30Hz/1.8V on the oscilloscope.

    BTW, the hardware support six FPDLINK cameras(using three TI954), do I need to connect the six cameras to debug the framesync function?  Now I just connect two cameras through two TI954(each TI954 connected with one TI953 camera).

    Thanks.

  • Hi Dennis,

    When you are trying to connect an external Framesync to the UB954 devices, there is no need to control anything in term of register. You configure the register only when you use internal Framesync. When external Framesync in use, all you have to do is connect the external Framesync as GPIO singal. However, you need to know the Framesync signal that meeting the cameras input sync timing requirements. These are specified by the camera sensor. Can you double this if you get the correct input timing?

    Aaron

  • Hi Aaron,

    I get your information, no need to set framesync register, but I don't understand about your last question. 

    "Can you double this if you get the correct input timing?" 

    Do you mean double external framesync signal from 25Hz to 50Hz, If the camera input sync timing is 25Hz ?

    Thanks so much.

  • Hi Dennis,

    Can you provide a scopeshot of the framesync signal you observe on the camera side? I'd like to see if the framesync signal is successfully transmitted to the serializer.

    Best,

    Jiashow