CX3 Image sensor configuration problem

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
GiMe_1179821
Level 1
Level 1

I have some problems using the SW. The generated files contains inconsistent values and the tools produce values that are sometimes random.

I tried to configure the parameters manually but the result is that the MIPI clock is not generated.

Anyone who has had a similar problem could help me.

Thanks!

I add more details to my brief introduction.

The first approach with Denebola (OV5640) was to acquire an image in RAW8 format and it’s works fine.

The next step was to replace the image sensor with ST VS6955CA. Now the problems begin:

setting the values ​​in the IMAGE SENSOR CONFIGURATION tool I encountered a series of problems.

Sensor Configuration Settings:

pastedImage_7.png

CSI clock calculation (MHz):

(H-Active (pxl) * Data Format) / (H-Total (pxl) * Pixel Clock (ns)) / (2 * Data Lane)

Pixel Clock calculation (MHz):

Frame Rate (fps) * H-Total (pxl) * V-Total (pxl)

Now when I select CX3 Receiver Configuration the SW shows …

pastedImage_2.png

pastedImage_4.png

Ignoring the error report, I enter configuration data:

pastedImage_5.png

Finally the cx3config.cycx file generated by the configurator is:

*

## Cypress CX3 configuration settings file

## ===========================

##

##  Copyright Cypress Semiconductor Corporation, 2013,

##  All Rights Reserved

##  UNPUBLISHED, LICENSED SOFTWARE.

##

##  CONFIDENTIAL AND PROPRIETARY INFORMATION

##  WHICH IS THE PROPERTY OF CYPRESS.

##

##  Use of this file is governed

##  by the license agreement included in the file

##

## <install>/license/license.txt

##

##  where <install> is the Cypress software

##  installation root directory path.

##

## ===========================

*/

#include "cyu3mipicsi.h"

/* 5MpixRAW10 : 5MpixRAW10Desc */

CyU3PMipicsiCfg_t 5MpixRAW10 = 

{

    CY_U3P_CSI_DF_RAW10,  /* CyU3PMipicsiDataFormat_t dataFormat */

    1,                          /* uint8_t numDataLanes */

    0,                                                       /* uint8_t pllPrd */

    0,                                        /* uint16_t pllFbd */

    CY_U3P_CSI_PLL_FRS_500_1000M, /* CyU3PMipicsiPllClkFrs_t pllFrs */ 

    CY_U3P_CSI_PLL_CLK_DIV_8,         /* CyU3PMipicsiPllClkDiv_t csiRxClkDiv */

    CY_U3P_CSI_PLL_CLK_DIV_8,         /* CyU3PMipicsiPllClkDiv_t parClkDiv */

    0,                                        /* uint16_t mClkCtl */

    CY_U3P_CSI_PLL_CLK_DIV_2,         /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */

    2600,                         /* uint16_t hResolution */

    1 /* uint16_t fifoDelay */

};

/* VS6955CA_RAW10_5MpixRaw10 :  */

CyU3PMipicsiCfg_t VS6955CA_RAW10_5MpixRaw10 = 

{

    ,  /* CyU3PMipicsiDataFormat_t dataFormat */

    1,                          /* uint8_t numDataLanes */

    0,                                                       /* uint8_t pllPrd */

    0,                                        /* uint16_t pllFbd */

    CY_U3P_CSI_PLL_FRS_250_500M, /* CyU3PMipicsiPllClkFrs_t pllFrs */ 

    CY_U3P_CSI_PLL_CLK_DIV_4,         /* CyU3PMipicsiPllClkDiv_t csiRxClkDiv */

    CY_U3P_CSI_PLL_CLK_DIV_4,         /* CyU3PMipicsiPllClkDiv_t parClkDiv */

    0,                                        /* uint16_t mClkCtl */

    CY_U3P_CSI_PLL_CLK_DIV_2,         /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */

    2600,                         /* uint16_t hResolution */

    50 /* uint16_t fifoDelay */

};

/* [ ] */

I wonder, why were the following parameters not filled in correctly?

    0,                                        /* uint8_t pllPrd */

    0,                                        /* uint16_t pllFbd */

I try to set manually these missing parameters into my project, but when I run my application on Denebola, I see that the MIPI clock is not generated.

The unused data lanes are grounded correctly.

What is wrong?

0 Likes
1 Solution

Gian,

Note that E_CAM cannot stream the RAW 10 format. It expects the YUY2 format video data.

In order to stream the video data (2600x1952x10 bits), you need to configure the GPIF II with 24 bit.

And also you need to configure the MIPI CSI Clock of IMAGE Sensor to 400 MHz.

If the above both are set, then use the following MIPI Configuration:

CyU3PMipicsiCfg_t null_RAW10_Resolution0 =

{

    CY_U3P_CSI_DF_RGB888,  /* CyU3PMipicsiDataFormat_t dataFormat */

    1,                          /* uint8_t numDataLanes */

    2, /* uint8_t pllPrd */

    89, /* uint16_t pllFbd */

    CY_U3P_CSI_PLL_FRS_250_500M, /* CyU3PMipicsiPllClkFrs_t pllFrs */

    CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t csiRxClkDiv */

    CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t parClkDiv */

    0,                 /* uint16_t mClkCtl */

    CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */

    2600,         /* uint16_t hResolution */

    470                         /* uint16_t fifoDelay */

};

Note that you need to set the UVC format and frame descriptor; probe control descriptors as per your frame format, resolution and fps.

You may refer this KBA as well.

Streaming RAW10 Format Input Data to 16/24-bit Output Format in CX3 MIPI CSI-2 - KBA224387

View solution in original post

0 Likes
3 Replies
lock attach
Attachments are accessible only for community members.
KandlaguntaR_36
Moderator
Moderator
Moderator
25 solutions authored 10 solutions authored 5 solutions authored

Hello,

I have attached the project as per your settings. Please check with the configuration provided.

You are using only one Data Lane. You can go with 2 data lanes, if possible.

You do not need to ground the unused data lanes. You can be left floating them.

Configuration for one lane:

/* null_RAW10_Resolution0 :  */

CyU3PMipicsiCfg_t null_RAW10_Resolution0 = 

{

    CY_U3P_CSI_DF_RGB888,  /* CyU3PMipicsiDataFormat_t dataFormat */

    1,                          /* uint8_t numDataLanes */

    2, /* uint8_t pllPrd */

    89, /* uint16_t pllFbd */

    CY_U3P_CSI_PLL_FRS_250_500M, /* CyU3PMipicsiPllClkFrs_t pllFrs */ 

    CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t csiRxClkDiv */

    CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t parClkDiv */

    0,                 /* uint16_t mClkCtl */

    CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */

    2600,         /* uint16_t hResolution */

    400                         /* uint16_t fifoDelay */

};

PHY Delay is 10. You need to use CyU3PMipicsiSetPhyTimeDelay API to configure the Phy Time Delay.

You may these KBAs:

Analysis of CX3 Clocking Parameters – KBA226758

Analysis of CX3 Video Timing Parameters – KBA226779

If you go with 2 MIPI data lane, the MIPI configuration would be as follows:

CyU3PMipicsiCfg_t null_RAW10_Resolution0 = 

{

    CY_U3P_CSI_DF_RGB888,  /* CyU3PMipicsiDataFormat_t dataFormat */

    2,                          /* uint8_t numDataLanes */

    2, /* uint8_t pllPrd */

    89, /* uint16_t pllFbd */

    CY_U3P_CSI_PLL_FRS_250_500M, /* CyU3PMipicsiPllClkFrs_t pllFrs */ 

    CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t csiRxClkDiv */

    CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t parClkDiv */

    0,                 /* uint16_t mClkCtl */

    CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */

    2600,         /* uint16_t hResolution */

    0                         /* uint16_t fifoDelay */

};

Phy Delay is 10.

Regards,
Sridhar

0 Likes

Hi Sridhar,

thank you for your reply.

I've read the linked KBAs and re-check the timing paramters. They seem right.

I can't use two lanes, because isn't possible to change hw.

I try your sample code, filled SENSOR_BaseConfigurationSettings and SENSOR_Resolution0ConfigurationSettings, changed SENSOR_I2C_READ_ADDRESS and SENSOR_I2C_WRITE_ADDRESS, used MIPI Configuration for one lane, but doesn't work and the MIPI Clock is missing yet.

I have some questions:

a) In CyCx3USBSSConfigDscr I see that the GUID is :

0X55,0X59,0X56,0X59 with 10 bit per pixel.

When I use e-CAMView to check connectivity PC to Denebola and I can't select "Still Capture Pin", but if I use GUID like 0x59, 0x55, 0x59, 0x32 and 16 bit per pixel It works

b) In glResolution0ProbeCtrl is right the line below?

0x40,0xcd,0x60,0x00,             /* Max video frame size in bytes = 1920 x 1080 x 2 */

Regards,

Gian

0 Likes

Gian,

Note that E_CAM cannot stream the RAW 10 format. It expects the YUY2 format video data.

In order to stream the video data (2600x1952x10 bits), you need to configure the GPIF II with 24 bit.

And also you need to configure the MIPI CSI Clock of IMAGE Sensor to 400 MHz.

If the above both are set, then use the following MIPI Configuration:

CyU3PMipicsiCfg_t null_RAW10_Resolution0 =

{

    CY_U3P_CSI_DF_RGB888,  /* CyU3PMipicsiDataFormat_t dataFormat */

    1,                          /* uint8_t numDataLanes */

    2, /* uint8_t pllPrd */

    89, /* uint16_t pllFbd */

    CY_U3P_CSI_PLL_FRS_250_500M, /* CyU3PMipicsiPllClkFrs_t pllFrs */

    CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t csiRxClkDiv */

    CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t parClkDiv */

    0,                 /* uint16_t mClkCtl */

    CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */

    2600,         /* uint16_t hResolution */

    470                         /* uint16_t fifoDelay */

};

Note that you need to set the UVC format and frame descriptor; probe control descriptors as per your frame format, resolution and fps.

You may refer this KBA as well.

Streaming RAW10 Format Input Data to 16/24-bit Output Format in CX3 MIPI CSI-2 - KBA224387

0 Likes