3 Replies Latest reply on Nov 23, 2017 2:48 AM by savj

    fx3 streaming problem in isoc

    jhkim_2103446

      Hi,

       

      I'm working with AN75779 UVC sample code for streaming video data using isoc transfer mode, not bulk mode.
      After correcting the desciptor and end point configuration, I confirmed normal recongition(enumeration) in isoc mode.


      But, when I streaming video via AMCAP, it fails always. ("This graph cannot preview" message window occurs)
      In bulk mode, it works normally well.

       

      Using the UART log, I reviewed the difference part between bulk and isoc mode log.
      And I discovered that the commit control is not issued on video streaming request sequence in isoc mode.
      As I know, after a correct streaming parameters has been obtained by probe control,
      commit control is generated after that.

       

      In UVC.c file, I added a log as below.

      static void UVCHandleVideoStreamingRqts (void)
      {
          CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
          uint16_t readCount;
      dbg(4, " UVCHandleVideoStreamingRqts : %d %d \r\n", wValue, bRequest);
      ~~~~~~~~~
      }
      But, I could't find a log that wValue equals to 0x0200(=commit control).
      I don't know why commit contorl has not issed.

       

      Please let me know if I'm missing something or if you need additional information.

      Thanks in advance.

        • 1. Re: fx3 streaming problem in isoc
          rghe

          Hi!,

           

          Are you facing the issue on Win7 or Win10?

          If it's on Win7 can you try setting the burst length field in the ISOC endpoint descriptor to 1?

          • 2. Re: fx3 streaming problem in isoc
            jhkim_2103446

            Thanks for your inform.

             

            I'm using Win8.1, so burst length also set to 1.

             

            Anyway..after modifying some functions in UVC.c, I succeed in streaming start.

            But video output is only black screen.

             

            As a result of the packet analysis program(Wire shark), it seems that only 1575 bytes are being transmitted.fail.PNG

            I think that actual frame data seems to be not being transmitted.

             

            The endpoint configuration is as follows.

            .isoPkts = 1 .burstlen = 1 .pcktSize = 0x400

            and the dma channel setting is the same as the original example one.

            I did not make any modifications.

             

            Is it necessary to have different frame processing in isoc mode than in bulk mode?

            Please let me know which part needs to be fixed.

             

            Thanks in advance.

            • 3. Re: fx3 streaming problem in isoc
              savj

              Hi,

               

              Can you use the attached code to compare your code. You can uncomment "USE_ISOCHRONOUS_ENDPOINT" in cyfx3_uvc.h and check. This firmware has two parts UVC/USB and FX3's CPU. GPIF, I2C, SPI, etc. blocks are not used and hence it is the simplest form of FX3 UVC firmware. The CPU fills the buffers with a predefined color and commits it to the USB.

               

              In the attached firmware we can get 1 burst packet and 3 such bursts in a micro frame on a Window 7, 8.1 PC. With Win10 PC, we can get upto 15 burst packets and 3 such bursts in a micro frame. But the firmware needs to be modified.

               

              Regards,

              Savan