5 Replies Latest reply on Sep 7, 2020 3:30 AM by YatheeshK_36

    FX3 multiple descriptors

    JaRo_4664191

      Hi,

       

      I'm working with an FX3 and I would like to combine BULK and ISOCHRONOUS endpoints (a pair of bulk endpoints and a pair of Isochronous endpoints). I've tried to modify the descriptor but I don't get the USB recognised. Also added code for a proper initialisation. If I use only the BULK interface it works just fine and I can see the device normally listed and its descriptors.

       

      My question is: Can I mix in the same interface BULK and ISOCHRONOUS endpoints?

       

      Kind regards

        • 1. Re: FX3 multiple descriptors
          YatheeshK_36

          Hello,

           

          Yes, you can add both bulk and isochronous endpoints in your firmware. Make sure that the total length field in the configuration descriptors is updated properly.

          Please attach your descriptor file for review,

           

          Thanks,

          Yatheesh

          • 2. Re: FX3 multiple descriptors
            JaRo_4664191

            Hi Yatheesh,

             

            Please find attached the descriptor file. In the main file I initialise the DMA channels, as per example, but the device does not get recognised by the OS.

             

            CY_FX_EP_PRODUCER_1/CY_FX_EP_CONSUMER_1 are mapped at 0x01 and 0x81

            CY_FX_EP_PRODUCER_2/CY_FX_EP_CONSUMER_2 are mapped at 0x02 and 0x82

             

            Please let me know if you find anything fundamentally wrong.

            • 3. Re: FX3 multiple descriptors
              YatheeshK_36

              Hello,

               

              Please try the attached descriptors file, i have modified it a bit. It works fine.

              The wMaxPacketSize field in the Endpoint descriptors for isochronous endpoint should be set to 1024 if the bMaxBurst in the endpoint companion descriptors is set to a non zero value.

               

              Thanks,

              Yatheesh

              • 4. Re: FX3 multiple descriptors
                JaRo_4664191

                Hi Yatheesh,

                 

                Your file works indeed. Thanks. The only difference I can find is the value for CY_FX_ISO_PKTS and CY_FX_ISO_BURST. In my original code, I set those values to 3 and 8 respectively (taken directly from the ISOC example). With those in place it doesn't work. What can be the issue?

                 

                Screenshot 2020-09-01 at 13.06.52.png

                (The image shows my system with a max burst length of 8, instead of 16)

                 

                Thanks again

                • 5. Re: FX3 multiple descriptors
                  YatheeshK_36

                  Hello,

                   

                  I tried with 3,16. It did work on my side.

                  The problem may be due to the bandwidth allocation from the host for isochronous endpoints.

                  Please refer to section 4.4.8.2 from the USB 3.2/USB 3.1 spec.

                   

                  Try increasing the servicing interval in the isochronous end point descriptors and check for enumeration of iso endpoints.

                   

                  Thanks,

                  Yatheesh