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.

OV10640_IMI sensor FPS setting for TDA3x

Hi,

We have TDA3x Starter Kit along with OV10640_IMI camera sensor. How can we set the frame rate of the sensor to 20 FPS. Right now it is running at 30 FPS in the below usecase

UseCase: chains_issIspSimcop_NetworkTx

IssCapture -> IssM2mIsp -> IssM2mSimcop -> Dup -> Display_Video

IssM2mIsp -> Alg_IssAewb

IssM2mIsp -> IssM2mResizer

IssM2mResizer -> Display_VideoRszB

Dup -> Null (IPU1_1)

GrpxSrc -> Display_Grpx


Thanks,
Keerthi

  • Hi Keerthi,

    One way is to change the sensor settings to get 20fps output, you require to change the PLL settings such that you get 20fps from the sensor itself.
    The other way is, you could ignore every third frame from capture to get 20fps.
    Both of these methods require some code change.

    Rgds,
    Brijesh
  • Hi Brijesh,

    I am interested in setting the sensor to 20 FPS. Do you know which source files should I start with and where to look for such setting change for OV10640 IMI ?

    We don't want to ignore every third frame because for our application, exact timing of 50ms between frames is required and by ignoring a frame, we can't achieve that.

    Ideally, for our application, we want to send an external trigger signal (Square wave at 20 Hz, 5V) from a third-party hardware to the TDA3x which can then send this signal to camera for triggering the capture (Or directly triggering the camera through external signal bypassing TDA is also fine if there is such a possibility with TDA3x starter kit). Please let us know if this is possible. If not, getting the camera to work at 20 FPS (Without trigger signal) also is manageable in near term.

    Thanks,

    Keerthi

  • Hi Keerthi,

    Sensor is configured with the values provided in the OV10640_MIPI_720P_4LANES_IMI in the file vision_sdk\apps\src\rtos\iss\src\sensor\ov10640\ov10640_imi_wdr_1280x720_setup.h. Can you look into PLL values and change it to get 20fps output?
    The other way is, you could increase vertical blanking to get 20fps output.

    Rgds,
    Brijesh
  • Hi Brijesh,

    I don't have the register datasheet for OV10640. (I have requested for it).

    I referred to "Bsp_ov10640SensorSetFps()" function and found out that there are two register settings (Registers 0x3080 and 0x3081) given for 30 and 15 FPS. I changed the values accordingly in  "ov10640_imi_wdr_1280x720_setup.h" to make it work at 15 FPS, just to check if the values I change take any effect. Now, I don't know these values for 20 FPS. Do you know what these values should be?

    case FVID2_FPS_30:
    nAddr[0] = 0x3080U;
    nValue[0] = 0x05U;
    
    nAddr[1] = 0x3081U;
    nValue[1] = 0xB4U;
    
    break;
    case FVID2_FPS_15:
    nAddr[0] = 0x3080U;
    nValue[0] = 0x0BU;
    
    nAddr[1] = 0x3081U;
    nValue[1] = 0x68U;

  • Keerthi,

    Ideally, you should check with the Omnivision to get the correct settings. these registers are actually used to configure horizontal size.
    For 20 fps, can you try configuring them to 0x8 (0x3080) and 0x8E (0x3081)?

    Rgds,
    Brijesh
  • Hi Brijesh,

    I tried those values and it set the FPS to 15. I am in the process of getting hold of the datasheet from omnivision. 

    Thanks,

    Keerthi

  • Hi Brijesh,

    I got hold of the datasheet from Omnivision. I changed the registers for horizontal and vertical size (separately and together) and tried different values to get the FPS to 20, 25 and the sensor seems to stream only at 15 or 30 FPS. Is there anything in the ISS capture link which prevents the capturing at these intermediate FPS values? The sensor datasheet doesn't mention about any restrictions on frame rates.

    I also tried changing PLL frequencies by keeping the horizontal and vertical sizes same as default values in SDK. Now, along with streaming the images at 15 FPS, i got corrupted frames always. I couldn't get the video stream at any values between 15 and 30 FPS. Anything you can think of that might be going wrong?

    Thanks,
    Keerthi
  • Another concern - What is the output interface through which the sensor is sending out the video data to the serializer? Is it DVP or MIPI ? From the register settings in (ov10640_imi_wdr_1280x720_setup.h) it seems like DVP mode is enabled, but then for DVP mode to send 16-bit HDR data, PCLK should be 2 times SCLK, which doesn't seem to be the case based on my preliminary analysis from register settings. Both PCLK and SCLK have same PLL divider and multiplier values in that file. If I try to make PCLK twice the value of SCLK, the video data I receive seems corrupted. Am I misunderstanding something?
  • Hi Keerthi,

    No, there is nothing in the ISP link to prevent 20fps. First you need to get capture working at 20fps, the other links in the pipe will work at this rate..

    Please check with Omnivision for 20fps settings.

    Rgds,
    Brijesh
  • Hi Keerti

    The released demo outputs in DVP format to the 913 serializer, but it does not use 16bit HDR format, instead it uses 12bit PWL companded HDR output.

    Rgds,
    Brijesh
  • Hi Brijesh,

    I finally managed to get 20 FPS by making the deserializer generate a 20 Hz signal on FSIN pin. I couldn't make the camera itself stream at 20 FPS continuously, but since we anyways want the trigger functionality, we are happy with this. My next step is to figure out how to send an external trigger to the deserializer and make it pass it to the camera. I will follow this up in the other forum post I have. I will be closing this one.

    Thanks,

    Keerthi

  • Ok Great, so 20Hz signal to FSIN makes it output at 20fps without any sensor config changes.

    Sure, lets continue on the deserializer thread.

    Rgds,

    Brijesh