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: 953 i2c error

Part Number: DS90UB954-Q1

Hi.

We are implementing cameras by connecting ds90ub954 and 953 to STP.

The configuration is as follows.

MCU -> DS90UB954 -> STP -> DS90UB953 -> IMAGE SENSOR

When the ID of 954/953 is confirmed by MCU to I2C communication, 954 is read but 953 is NACK.

If you check the waveform of H / W Pin 23, 24 of 953 with Scope, it keeps High without any signal change.

What should we check for this problem?

Please review.

  • Hello,

    do you set the i2c pass-through?

    best regards,

    Steven

  • I did not.
    Can you tell me what to do?

  • I made the following basic settings.

    I2C setting value

     

           I2C_Write(CAM0_954, 0x01, 0x01); //reset 954

           T0_Waitms (1);

           I2C_Write(CAM0_953, 0x01, 0x01); // reset 953

           I2C_EndCheck();

           T0_Waitms (10);

           ID_954_1 = I2C_Read(CAM0_954, 0x00);

           ID_953_1 = I2C_Read(CAM0_953, 0x00);

           I2C_EndCheck();

    //ID_953_2 = I2C_Read(CAM1_953, 0x00);

           I2C_Write(CAM1_954, 0x6d, 0x78);

           I2C_Write(CAM0_954, 0x4c, 0x01);

    //------------- ser gpio init---------------------

           I2C_Write(CAM0_954, 0x5b, 0x30);

           I2C_Write(CAM0_954, 0x58, 0x5e);

           I2C_Write(CAM0_953, 0x0E, 0x78);

           I2C_Write(CAM0_953, 0x0D, 0x70);

           I2C_Write(CAM0_953, 0x33, 0x07);        // forward

           //ID_954 = I2C_Read(CAM0_954, 0x04);

           I2C_Write(CAM0_954, 0x6E, 0x07);

           I2C_Write(CAM0_954, 0x6F, 0x21);

           I2C_Write(CAM0_954, 0x0F, 0x7b);

     

           //I2C_Write(CAM0_954, 0x11, 0x01);

           I2C_Write(CAM0_954, 0x12, 0x61);

           //I2C_Write(CAM0_954, 0x18, 0xB1);

    //-----------------des csi initial

           I2C_Write(CAM0_953, 0x03, 0x00);

           I2C_Write(CAM0_954, 0x33, 0x33);

    //     I2C_Write(CAM0_954, 0x21, 0x14);

           T0_Waitms (50);

           I2C_Write(CAM0_954, 0x20, 0x20);

           T0_Waitms (50);

           I2C_EndCheck();

  • Hello,

    can you refer to TI's refer. script in page22 of UB960 user guide? (http://www.ti.com/lit/ug/snlu226a/snlu226a.pdf)  954 shares the same reg. map with 960 in this script setting.

    in your setting, it is right that i2c pass-through is enabled (I2C_Write(CAM0_954, 0x58, 0x5e);). For I2C access setting, pls refer to below script.

    /////////////print "CSI_PORT_SEL"
    ////////////board.WriteReg(0x32,0x01) # CSI0 select
    ///////////time.sleep(0.1)
    //////////print "CSI_PLL_CTL"
    /////////board.WriteReg(0x1f,0x02) # CSI0 800mbps
    //////////time.sleep(0.1)
    /////////print "CSI_EN"
    /////////board.WriteReg(0x33,0x1) # CSI_EN & CSI0 4L
    //////////time.sleep(0.1)
    ///////////print "FWD_PORT"
    //////////board.WriteReg(0x20,0xe0) # forwarding of RX 0 to CSI0
    //////////time.sleep(0.1)

    ////////////////// remote slave i2c setting/////////////////////////////////////////////////////
    print "FPD3_PORT_SEL"
    board.WriteReg(0x4c,0x01) # RX_PORT0
    time.sleep(0.1)
    print "enable pass throu"
    board.WriteReg(0x58,0x58) # enable pass throu
    time.sleep(0.1)
    board.WriteReg(0x5c,0x18) #
    print "SER_ALIAS_ID 0x5c value ", hex(board.ReadReg(0x5c))
    time.sleep(0.1)
    board.WriteReg(0x5d,0x60) #
    print "SlaveID[0] 0x5d value ", hex(board.ReadReg(0x5d))
    time.sleep(0.1)
    board.WriteReg(0x65,0x60) #
    print "SlaveAlias[0] 0x65 value ", hex(board.ReadReg(0x65))
    time.sleep(0.1)

    best regards,

    Steven