1 2 Previous Next 21 Replies Latest reply on Aug 28, 2019 7:48 PM by YangyangC_06

    How to configure CX3 MIPI interface?

    chhe_4303246

      你好:

           我使用denebola RDK并且尝试在640x480分辨率下,做了如下配置

      生成的:

      /* ov5640_YUY2_VGA :  */

      CyU3PMipicsiCfg_t ov5640_YUY2_VGA = 

      {

          CY_U3P_CSI_DF_YUV422_8_2,  /* CyU3PMipicsiDataFormat_t dataFormat */

          1,                          /* uint8_t numDataLanes */

          1, /* uint8_t pllPrd */

          90, /* 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_8, /* CyU3PMipicsiPllClkDiv_t parClkDiv */

          0,                 /* uint16_t mClkCtl */

          CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */

          640,         /* uint16_t hResolution */

          100                         /* uint16_t fifoDelay */

      };

      替换之前的配置:

      /* Configuration parameters for VGA for the OV5640 sensor */

      CyU3PMipicsiCfg_t cfgUvcVgaNoMclk =  {

          CY_U3P_CSI_DF_YUV422_8_2,       /* dataFormat   */   

          1,                            /* numDataLanes */   

          0x1,                          /* pllPrd       */   

          90,                           /* pllFbd       */   

          CY_U3P_CSI_PLL_FRS_125_250M,   /* pllFrs      */           

          CY_U3P_CSI_PLL_CLK_DIV_2,     /* csiRxClkDiv  */   

          CY_U3P_CSI_PLL_CLK_DIV_8,     /* parClkDiv    */   

          0x00,                         /* mclkCtl      */   

          CY_U3P_CSI_PLL_CLK_DIV_8,     /* mClkRefDiv   */   

          640,                          /* hResolution  */   

          0x01                          /* fifoDelay    */   

      };

      然后重新编译,运行,发现USB摄像头不能传送图片。串口终端循环打印:

      DMA RESET

      AplnStrt:SMState = 0x1

      DMA RESET

      AplnStrt:SMState = 0x1

      请问我使用cx3 configuration工具配置的方法有什么问题吗?

        • 1. Re: How to configure CX3 MIPI interface?
          chhe_4303246

          请问CSI clock是否指的就是MIPI clock,就是MCP和MCN差分时钟呢?

          • 2. Re: How to configure CX3 MIPI interface?
            chhe_4303246

            还有,怎么计算CSI clock呢?是否这样子:

            CSI clock=Htotal x VTotal X BPP(bit per Pixel) X frame rate / mipi data lane?

            但是好像我这样子算出来的又不对

            • 3. Re: How to configure CX3 MIPI interface?
              YangyangC_06

              chummy he 撰写:

               

              你好:

                   我使用denebola RDK并且尝试在640x480分辨率下,做了如下配置

              生成的:

              /* ov5640_YUY2_VGA :  */

              CyU3PMipicsiCfg_t ov5640_YUY2_VGA = 

              {

                  CY_U3P_CSI_DF_YUV422_8_2,  /* CyU3PMipicsiDataFormat_t dataFormat */

                  1,                          /* uint8_t numDataLanes */

                  1, /* uint8_t pllPrd */

                  90, /* 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_8, /* CyU3PMipicsiPllClkDiv_t parClkDiv */

                  0,                 /* uint16_t mClkCtl */

                  CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */

                  640,         /* uint16_t hResolution */

                  100                         /* uint16_t fifoDelay */

              };

              替换之前的配置:

              /* Configuration parameters for VGA for the OV5640 sensor */

              CyU3PMipicsiCfg_t cfgUvcVgaNoMclk =  {

                  CY_U3P_CSI_DF_YUV422_8_2,       /* dataFormat   */   

                  1,                            /* numDataLanes */   

                  0x1,                          /* pllPrd       */   

                  90,                           /* pllFbd       */   

                  CY_U3P_CSI_PLL_FRS_125_250M,   /* pllFrs      */           

                  CY_U3P_CSI_PLL_CLK_DIV_2,     /* csiRxClkDiv  */   

                  CY_U3P_CSI_PLL_CLK_DIV_8,     /* parClkDiv    */   

                  0x00,                         /* mclkCtl      */   

                  CY_U3P_CSI_PLL_CLK_DIV_8,     /* mClkRefDiv   */   

                  640,                          /* hResolution  */   

                  0x01                          /* fifoDelay    */   

              };

              然后重新编译,运行,发现USB摄像头不能传送图片。串口终端循环打印:

              DMA RESET

              AplnStrt:SMState = 0x1

              DMA RESET

              AplnStrt:SMState = 0x1

              请问我使用cx3 configuration工具配置的方法有什么问题吗?

              你是在Demo 工程的基础上,只修改了这个 structure 是吗?

              • 4. Re: How to configure CX3 MIPI interface?
                YangyangC_06

                chummy he 撰写:

                 

                请问CSI clock是否指的就是MIPI clock,就是MCP和MCN差分时钟呢?

                是的。

                • 5. Re: How to configure CX3 MIPI interface?
                  YangyangC_06

                  chummy he 撰写:

                   

                  还有,怎么计算CSI clock呢?是否这样子:

                  CSI clock=Htotal x VTotal X BPP(bit per Pixel) X frame rate / mipi data lane?

                  但是好像我这样子算出来的又不对

                  你可以参考如下文档

                  CX3 视频时间参数解析 – KBA226779 (ZH)

                  • 6. Re: How to configure CX3 MIPI interface?
                    chhe_4303246

                    chummy he 撰写:

                     

                    你好:

                         我使用denebola RDK并且尝试在640x480分辨率下,做了如下配置

                    生成的:

                    /* ov5640_YUY2_VGA :  */

                    CyU3PMipicsiCfg_t ov5640_YUY2_VGA =

                    {

                        CY_U3P_CSI_DF_YUV422_8_2,  /* CyU3PMipicsiDataFormat_t dataFormat */

                        1,                          /* uint8_t numDataLanes */

                        1, /* uint8_t pllPrd */

                        90, /* 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_8, /* CyU3PMipicsiPllClkDiv_t parClkDiv */

                        0,                 /* uint16_t mClkCtl */

                        CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */

                        640,         /* uint16_t hResolution */

                        100                         /* uint16_t fifoDelay */

                    };

                    替换之前的配置:

                    /* Configuration parameters for VGA for the OV5640 sensor */

                    CyU3PMipicsiCfg_t cfgUvcVgaNoMclk =  {

                        CY_U3P_CSI_DF_YUV422_8_2,       /* dataFormat   */  

                        1,                            /* numDataLanes */  

                        0x1,                          /* pllPrd       */  

                        90,                           /* pllFbd       */  

                        CY_U3P_CSI_PLL_FRS_125_250M,   /* pllFrs      */          

                        CY_U3P_CSI_PLL_CLK_DIV_2,     /* csiRxClkDiv  */  

                        CY_U3P_CSI_PLL_CLK_DIV_8,     /* parClkDiv    */  

                        0x00,                         /* mclkCtl      */  

                        CY_U3P_CSI_PLL_CLK_DIV_8,     /* mClkRefDiv   */  

                        640,                          /* hResolution  */  

                        0x01                          /* fifoDelay    */  

                    };

                    然后重新编译,运行,发现USB摄像头不能传送图片。串口终端循环打印:

                    DMA RESET

                    AplnStrt:SMState = 0x1

                    DMA RESET

                    AplnStrt:SMState = 0x1

                    请问我使用cx3 configuration工具配置的方法有什么问题吗?

                    你是在Demo 工程的基础上,只修改了这个 structure 是吗?

                    是的,只改了这个structure,还是按照cx3 configration tool生成的值改的

                    • 7. Re: How to configure CX3 MIPI interface?
                      chhe_4303246

                      如果CSI clock就是差分时钟的话,我感觉你们cypress sdk自带的那个yuv422_ov5640.cycx,CSI clock应该不是实际的mipi时钟,因为我看到从分辨率5MP到VGA你们的CSI clock都是一样的,还有Hblank和Vblank也都是一样的,我觉得是不对的

                      • 8. Re: How to configure CX3 MIPI interface?
                        chhe_4303246

                        你好:

                             Yang,能抽空回我一下吗?谢谢!

                        • 9. Re: How to configure CX3 MIPI interface?
                          chhe_4303246

                          你好:

                               Yang。我在工具下面只改了framerate参数

                          VGA 30fps

                          VGA 15fps

                          可以看到2者生成的数据完全一样,实际上在生成的C代码中也可以看到,确实完全一样

                          工具本身也没有提示什么错误,请问这个正常吗?我的SDK suite是1.3.4最新版本的,windows上运行

                                              谢谢!

                          • 10. Re: How to configure CX3 MIPI interface?
                            YangyangC_06

                            CSI clock应该不是实际的mipi时钟,因为我看到从分辨率5MP到VGA你们的CSI clock都是一样的,还有Hblank和Vblank也都是一样的,我觉得是不对的

                            这个想法没有什么道理。为什么不同分辨率不能使用同样的 CSI 时钟?不能使用同样的 H_blank 和 V_blank 值?

                            • 11. Re: How to configure CX3 MIPI interface?
                              YangyangC_06

                              chummy he 撰写:

                               

                              你好:

                                   Yang。我在工具下面只改了framerate参数

                              VGA 30fps

                              VGA 15fps

                              可以看到2者生成的数据完全一样,实际上在生成的C代码中也可以看到,确实完全一样

                              工具本身也没有提示什么错误,请问这个正常吗?我的SDK suite是1.3.4最新版本的,windows上运行

                                                  谢谢!

                              这两种配置生成的代码当然 是不一样的,frame descriptor 中需要写 Max bits/s 、Min bits/s 和 frame interval,还需要向host

                              返回不同的 probe structure ,怎么能一样?

                               

                              另外,MIPI CSI Input 部分的参数需要按照 SDK 中的 Demo 工程一样做配置,Demo里面 VGA 是配置的 1 Lane,你这里为什么写了 2 lane?

                              • 12. Re: How to configure CX3 MIPI interface?
                                chhe_4303246

                                你好:

                                     好像frame descriptor和probe structure中的数据真不重要,我把这2个结构体当中的数据改成30桢/15桢其它不改,VGA分辨率下可以看到你们的CX3同样可以返回60fps的图像数据,没有任何问题。看起来好像真正需要改的就只有CyU3PMipicsiCfg_t 结构中的数据,而上面你也看到了,30fps和15fps,你们的工具生成的数据都一样,这就让我很迷糊了。而且上面我也我试过60fps@VGA下面,修改上面这些PLL divder值,配置工具没有报错,只替换这个结构体的值,denebola不能出图像,测试hsync/vsync没有信号输出,终端循环报DMA reset错误。感觉你们的工具还没有完全完善

                                • 13. Re: How to configure CX3 MIPI interface?
                                  chhe_4303246

                                  CSI clock应该不是实际的mipi时钟,因为我看到从分辨率5MP到VGA你们的CSI clock都是一样的,还有Hblank和Vblank也都是一样的,我觉得是不对的

                                  这个想法没有什么道理。为什么不同分辨率不能使用同样的 CSI 时钟?不能使用同样的 H_blank 和 V_blank 值?

                                   

                                   

                                  在VGA@60fps分辨率下,通过在i2c接口加打印输出,我看到你们的denebola给ov5640配置的i2c寄存器值htotal=0x768=1894

                                  vtotal=0x3d8=984

                                  所以实际上应该是,hblank=1894-640=1254

                                  vblank=984-480=504

                                  而且参考ominivision的数据手册上的设置,5mp和VGA分辨率的CSI clock还有hblank,vblank就是不一样的

                                  以下是打印出来的i2c配置值:

                                    {0x3808, 0x2},

                                    {0x3809, 0x80},

                                    {0x380A, 0x1},

                                    {0x380B, 0xE0},

                                    {0x380C, 0x7},

                                    {0x380D, 0x68},

                                    {0x380E, 0x3},

                                    {0x380F, 0xD8},

                                  • 14. Re: How to configure CX3 MIPI interface?
                                    chhe_4303246

                                    另外还有,根据ov5640数据手册计算方法,denebola VGA@60fps的mipi时钟计算应该是:

                                    24M/3*0x6f/2/2=222M才对,为什么工具当中配置的是315M呢?

                                    1 2 Previous Next