6 Replies Latest reply on Oct 23, 2019 12:06 AM by YashwantK_46

    1080p60 RAW12 data capture

    TzCh_3504586

      Hi, I have an AR0233 streaming 1920x1080p60 in RAW12 format.

      I can see the MIPI receiver is capturing data, but the frame size is inconsistent, and there're no data coming through UVC to host.

      I've tested with different PHY time delay (0x0A ~ 0x0F), the receiving frame size is not consistent for these tests as well.

      The Frm_Sz should be 1920 * 1080 * 12 / 8 = 3110400 B

       

      UART debug message:

      Prod = 82 Cons = 81  Prtl_Sz = 16144 Frm_Cnt = 53 Frm_Sz = 3035056 B

      TimeDiff = -1 ms FPS = 0

      0 0 0 0 0 0 0 0 0

      Prod = 82 Cons = 81  Prtl_Sz = 12864 Frm_Cnt = 203 Frm_Sz = 3031776 B

      TimeDiff = -2 ms FPS = 0

      0 0 0 0 0 0 0 0 0

      Prod = 82 Cons = 81  Prtl_Sz = 15904 Frm_Cnt = 353 Frm_Sz = 3034816 B

      TimeDiff = -2 ms FPS = 0

      0 0 0 0 0 0 0 0 0

      Prod = 82 Cons = 81  Prtl_Sz = 11776 Frm_Cnt = 503 Frm_Sz = 3030688 B

      TimeDiff = -1 ms FPS = 0

      0 0 0 0 0 0 0 0 0

      Prod = 81 Cons = 81  Prtl_Sz = 30704 Frm_Cnt = 558 Frm_Sz = 3012800 B

      TimeDiff = -1 ms FPS = 0

      0 0 0 0 0 0 0 0 0

       

      The sensor setting I use:

      Untitled.png

      /* AR0233_RAW12_1080p :  */

      CyU3PMipicsiCfg_t AR0233_RAW12_1080p = 

      {

          CY_U3P_CSI_DF_RAW12,  /* CyU3PMipicsiDataFormat_t dataFormat */

          4,                          /* uint8_t numDataLanes */

          1, /* uint8_t pllPrd */

          79, /* 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 */

          1920,         /* uint16_t hResolution */

          0                         /* uint16_t fifoDelay */

      };

       

      /* GUID, globally unique identifier used to identify streaming-encoding format*/

          0X55,0X59,0X56,0X59,

      0X00,0X00,0X10,0X00,

      0X80,0X00,0X00,0XAA,

      0X00,0X38,0X9B,0X71,

       

          0x10,                               /* Number of bits per pixel: 16*/

          0x01,                               /* Optimum Frame Index for this stream: 1 (1080p) */

          0x00,                               /* X dimension of the picture aspect ratio; Non-interlaced */

          0x00,                               /* Y dimension of the pictuer aspect ratio: Non-interlaced */

          0x00,                               /* Interlace Flags: Progressive scanning, no interlace */

          0x00,                               /* duplication of the video stream restriction: 0 - no restriction */

       

       

          /* Class specific Uncompressed VS Frame Descriptor 1 - 1080p */

          0x1E,                               /* Descriptor size */

          CX3_CS_INTRFC_DESCR,                /* Descriptor type*/

          0x05,                               /* Subtype:  frame interface*/

          0x01,                               /* Frame Descriptor Index: 1 */

          0x00,                               /* No Still image capture method supported */

          0x80,0x07,                         /* Width in pixel:  1920 */

          0x38,0x04,                         /* Height in pixel: 1080 */

          0x00,0x80,0xc6,0x13,             /* Min bit rate (bits/s): 1920 x 1080 x No Of Bits per Pixel x FrameRate = 331776000 */

          0x00,0x80,0xc6,0x13,             /* Max bit rate (bits/s): Fixed rate so same as Min */

          0x00,0x48,0x3f,0x00,             /* Maximum video or still frame size in bytes(Deprecated): 1920 x 1080 x 2 */

          0x40,0x42,0x0f,0x00,             /* Default frame interval (in 100ns units): (1/30)x10^7 */

          0x01,                               /* Frame interval type : No of discrete intervals */

          0x40,0x42,0x0f,0x00,             /* Frame interval 3: Same as Default frame interval */

        

       

       

          /* Endpoint Descriptor for BULK Streaming Video Data */

          0x07,                               /* Descriptor size */

          CY_U3P_USB_ENDPNT_DESCR,            /* Endpoint Descriptor Type */

          CX3_EP_BULK_VIDEO,                  /* Endpoint address and description: EP 3 IN */

          CY_U3P_USB_EP_BULK,                 /* BULK End point */

          CX3_EP_BULK_VIDEO_PKT_SIZE_L,       /* CX3_EP_BULK_VIDEO_PKT_SIZE_L */

          CX3_EP_BULK_VIDEO_PKT_SIZE_H,       /* CX3_EP_BULK_VIDEO_PKT_SIZE_H */

          0x00,                               /* Servicing interval for data transfers */

       

       

          /* Super Speed Endpoint Companion Descriptor */

          0x06,                               /* Descriptor size */

          CY_U3P_SS_EP_COMPN_DESCR,           /* SS Endpoint Companion Descriptor Type */

          0x0F,                               /* Max number of packets per burst: 12 */

          0x00,                               /* Attribute: Streams not defined */

          0x00,                               /* No meaning for bulk */

          0x00

      };

       

      /* UVC Probe Control Settings */

      uint8_t glProbeCtrl[CX3_UVC_MAX_PROBE_SETTING] = {

          0x00, 0x00,                         /* bmHint : No fixed parameters */

          0x01,                               /* Use 1st Video format index */

          0x01,                               /* Use 1st Video frame index */

          0x0A, 0x8B, 0x02, 0x00,             /* Desired frame interval in 100ns */

          0x00, 0x00,                         /* Key frame rate in key frame/video frame units */

          0x00, 0x00,                         /* PFrame rate in PFrame / key frame units */

          0x00, 0x00,                         /* Compression quality control */

          0x00, 0x00,                         /* Window size for average bit rate */

          0x00, 0x00,                         /* Internal video streaming i/f latency in ms */

          0x00, 0x48, 0x3F, 0x00,             /* Max video frame size in bytes */

      #ifdef CX3_UVC_1_0_SUPPORT

          0x00, 0x90, 0x00, 0x00              /* No. of bytes device can rx in single payload: 32KB */

      #else

          /* UVC 1.1 Probe Control has additional fields from UVC 1.0 */

          0x00, 0x90, 0x00, 0x00,             /* No. of bytes device can rx in single payload: 32KB */

          0x00, 0x60, 0xE3, 0x16,             /* Device Clock */

          0x00,                               /* Framing Information - Ignored for uncompressed format*/

          0x00,                               /* Preferred payload format version */

          0x00,                               /* Minimum payload format version */

          0x00                                /* Maximum payload format version */

      #endif

      };

        • 1. Re: 1080p60 RAW12 data capture
          YashwantK_46

          Hi,

           

          Can you please probe the HV, LV and PCLK test points and share the traces?

           

          Regards,

          Yashwant

          • 2. Re: 1080p60 RAW12 data capture
            TzCh_3504586

            Hi Yashwant,

             

            Vsync and Hsync had been toggle, but looks unstable (synchronization signal is shifting)

            Also one correction to the frame size, it should be 1920 * 1080 * 16/8 = 4147200 B since it's RAW12 in 16 bit package.

             

            Hsync vs PCLK

            imageFile.bmp

             

            Vsync vs Hsync

            imageFile.bmp

             

            Best,

            Ping

            • 3. Re: 1080p60 RAW12 data capture
              YashwantK_46

              Hi Ping,

               

              Can you please check for the number of full buffers that you can get in each frame?

              Also, do you see any "commit buffer failure error"?

               

              Can you please share your firmware?

               

              Regards,

              Yashwant

              • 4. Re: 1080p60 RAW12 data capture
                TzCh_3504586

                Hi Yashwant,

                 

                If I capture the data for a while, UART print out will indicate dma_reset_flag == 1. and sometimes it'll print "CB failure" indicating dma_reset_flag == 0.

                Other than these I didn't see any commit buffer failure error.

                 

                I attached my working source and firmware I'm using for your reference.

                Firmware name: "Cx3UvcAS0260"

                 

                UART Print:

                Prod = 85 Cons = 84  Prtl_Sz = 13184 Frm_Cnt = 23329 Frm_Sz = 3142544 B

                TimeDiff = -1 ms FPS = 0

                0 0 0 0 0 0 0 0 0

                Prod = 85 Cons = 85  Prtl_Sz = 20016 Frm_Cnt = 23626 Frm_Sz = 3149376 B

                TimeDiff = -1 ms FPS = 0

                0 0 0 0 0 0 0 0 0

                Prod = 85 Cons = 84  Prtl_Sz = 15952 Frm_Cnt = 23921 Frm_Sz = 3145312 B

                TimeDiff = -1 ms FPS = 0

                0 0 0 0 0 0 0 0 0

                Prod = 85 Cons = 84  Prtl_Sz = 12128 Frm_Cnt = 24218 Frm_Sz = 3141488 B

                TimeDiff = -1 ms FPS = 0

                0 0 0 0 0 0 0 0 0

                Prod = 85 Cons = 84  Prtl_Sz = 12080 Frm_Cnt = 24515 Frm_Sz = 3141440 B

                TimeDiff = -1 ms FPS = 0

                0 0 0 0 0 0 0 0 0

                Prod = 85 Cons = 84  Prtl_Sz = 4480 Frm_Cnt = 24815 Frm_Sz = 3133840 B

                TimeDiff = -2 ms FPS = 0

                0 0 0 0 0 0 0 0 0

                Prod = 85 Cons = 84  Prtl_Sz = 704 Frm_Cnt = 25111 Frm_Sz = 3130064 B

                TimeDiff = -1 ms FPS = 0

                0 0 0 0 0 0 0 0 0

                Prod = 85 Cons = 84  Prtl_Sz = 8176 Frm_Cnt = 25404 Frm_Sz = 3137536 B

                TimeDiff = -1 ms FPS = 0

                0 0 0 0 0 0 0 0 0

                Video timer

                0 0 0 0 0 0 0 0 0

                Mipicsi Block status = 0x1

                Prod = 84 Cons = 84  Prtl_Sz = 28192 Frm_Cnt = 25681 Frm_Sz = 3120736 B

                TimeDiff = -1 ms FPS = 0

                 

                 

                Thanks,

                Ping

                • 5. Re: 1080p60 RAW12 data capture
                  TzCh_3504586

                  Use a workaround to solve this problem now.

                  I cropped the input size to 1280x1080p60 RAW12 and the video capture pipeline is working fine now.

                   

                  But would still like to know why did the 1920x1080p60 RAW12 not working ?

                  The limitation for CX3 MIPI receiver board is 2.4Gbps total and 1Gbps per lane.

                  And 1920x1080p60 RAW12 runs in 300MHz CSI clk should be theoretically okay.

                   

                  And another question is when I'm trying to configure the MIPI configuration, the SDK pops error when I'm trying to adjust CX3 MIPI Interface Configuration Output Pixel Clock over 100Mhz.

                  Shouldn't the limitation for Output Pixel Clock is 125Mhz?

                   

                  Thanks,

                  Ping

                  • 6. Re: 1080p60 RAW12 data capture
                    YashwantK_46

                    Hi Ping,


                    Can you please take Wireshark traces for the 1920x1080p60 RAW12 and share them with me?

                     

                    It would help me figure out what is going wrong in that case.

                     

                     

                    -And another question is when I'm trying to configure the MIPI configuration, the SDK pops error when I'm trying to adjust CX3 MIPI Interface Configuration Output Pixel Clock over 100Mhz.

                    Shouldn't the limitation for Output Pixel Clock is 125Mhz?

                     

                    >>> Though the theoretical limitation of the pixel clock is 125 MHz, the SDK tool is congfigured not to allow the Output Pixel Clock to exceed over 100MHz and it is advised to be in the 100MHz clock range.

                     

                    Regard