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.

TDA3: VSDK 3.3: OV2775 TIDA-01130 vs OV2311 sensor GPIO control

Part Number: TDA3


I have started a new driver for the OV2311 in VSDK 3.3 and am heavily deriving from the OV2775 TIDA-01130.


Currently I have integrated the OV2311 Sensor register settings as given by another reference driver. The sensor I2C accesses via UB960 and UB953 work now and I can validate that. The next step is to modify how the GPIO on the UB953 are being used. 

OV2775 TIDA-01130 reference, GPIO on the UB953





OV2311 (from Leopard Imaging), GPIO on the UB953

The OV2311 only has FSIN and it looks like a RESET pin. It does not seem to have a PWDN. The UB953 schematics show this:


GPIO_1 = VOL_SENSE (not sure what that is right now)

GPIO_2 = SEN_RST (sensor reset)

GPIO_3 = SYS_CHECK (not sure what that is right now)

The VSDK sensor source for the OV2775 has configuration parameters for the UB953 and UB960, which indicate the configuration for these GPIOs. These are currently being reused for the OV2311. Could you point me in the right direction on how I would need to modify these parameters for the GPIO above for the OV2311. Currently I am thinking we should control GPIOs for SEN_RST and SENSOR_FSIN.

Could you also point me to the code that is actually driving these GPIO into the UB960?



  • You will need to look at the camera schematic and see which OV2311 pins are connected to which pins on UB953.After that you will need to configure UB953 registers accordingly.

    On TIDA1130 (OV2775+UB953) module - Refer to gUB953_OV2775_TIDA1130_SerCfg in iss_sensor_ov2775.c

        {0x0E, 0xF0, 0x1},
    Configures GPIOs 0,1,2 and 3 as output.

        {0x0D, 0x00, 0x1},

    Pulls all the pins down

       {0x0D, 0x0C, 0x1},

    Enables GPIO_RMTEN.

    For OV2311, you need to find the correct GPIO configuration and program the registers 0xD and 0xE.

  • Hi Mayank,

    this helped. I understand now controlling the GPIO from UB953 directly, which happens in the serdes configuration.

    Here is the code now to control GPIO2 which drives the XSHUTDOWN pin on the OV2311. High level brings it out of shutdown, low level holds it in shutdown. If the XSHUTDOWN pin is low, the I2C on the sensor fails, which is expected.

    BspUtils_Ub960I2cParams gUB953_OV2311_TIDA1130_SerCfg[OV2311_TIDA1130_SER_CFG_SIZE] = {
    /* Setup for OV2311 to UB953 on 2/4 lanes */
    {0x02, 0x52, 0x10},

    {0x06, 0x21, 0x1},
    {0x07, 0x28, 0x1},

    {0x0E, 0x40, 0x1}, //GHS--- enable only GPIO2 output (SEN_RST/XSHUTDOWN)
    {0x0D, 0x00, 0x1}, //GHS--- drive XSHUTDOWN low, in reset or shutdown
    {0x0D, 0x04, 0x1}, //GHS--- drive XSHUTDOWN high, out of reset or out of shutdown

    Unfortunately I still don't see frame data on the display, but so far I think we are controlling the GPIO from the UB953 correctly. I will still check with OV on the FSIN pin, whether it is necessary to trigger a frame. Also I have taken all sensor register settings from the reference driver and initialized the sensor.

    Could you still point me to a place in the capture link where I could check whether any data is being received?

  • Easiest way to know if frame are coming or not is to press 'p' on the UART console. This will print detailed performance diagnostics for all the links. Look for average recv fps in capture link. If it is zero (or close) it means no frames are being received.