6 Replies Latest reply on May 23, 2019 10:09 PM by KandlaguntaR_36

    Enabling FX3 Only for USB 2.0 fully/high speed

    Peya_4162826

      I want FX3 only support USB2.0 full speed,under this condition, USB2.0 high speed and USB 3.0 is not support. another condition is only support USB2.0 high speed, that mean  USB3.0 and USB 2.0 full speed is disabled. how to do it?

        • 1. Re: Enabling FX3 Only for USB 2.0 fully/high speed
          KandlaguntaR_36

          Please use CyU3PUsbForceFullSpeed API to enable only Full Speed and only High Speed.

          Note that you have to pass CyFalse in the second argument of CyU3PConnectState API.

          • 2. Re: Enabling FX3 Only for USB 2.0 fully/high speed
            Peya_4162826

            my source code import from "Cypress\EZ-USB FX3 SDK\1.3\firmware\msc_examples\cyfxmscdemo",  FX3 power on, it work at USB 2.0 high speed, when FX3 receive one command which define by myself, then FX3 execute following code:

               CyU3PConnectState (CyFalse, CyFalse);

              CyU3PUsbControlUsb2Support(CyTrue);

              CyU3PUsbForceFullSpeed(CyTrue);

              CyU3PConnectState(CyTrue, CyFalse);

            The FX3 will re-connect to host, following is debug message locate at  function CyFxMscApplnUSBEventCB(),

            ............................................................................

                /* The max. packet size depends on connection speed. */

                               DEBUG((4,"USB SPEED3=%d\r\n",CyU3PUsbGetSpeed ()));

                                switch (CyU3PUsbGetSpeed ())

                                {

                                    case CY_U3P_FULL_SPEED:

            ...................................................

             

            The debug message shown "USB SPEED3=2" after re-connection, It mean the speed is still USB2.0 High speed, I expect it run at full speed, note that my host USB root port support USB2.0 full speed.

            • 3. Re: Enabling FX3 Only for USB 2.0 fully/high speed
              Peya_4162826

              additionally, in function CyFxMscApplnInit(), add debug message as following:

              ......................................

                  /* Enable USB connection to host. SuperSpeed is not supported. */

              //CyU3PUsbForceFullSpeed(CyTrue);

                  apiRetStatus = CyU3PConnectState (CyTrue, CyFalse);

                  if (apiRetStatus != CY_U3P_SUCCESS)

                  {

                      CyU3PDebugPrint (4, "USB Connect failed, Error Code = %d\n",apiRetStatus);

                      CyFxAppErrorHandler(apiRetStatus);

                  }

              DEBUG((4,"USB SPEED1=%d\r\n",CyU3PUsbGetSpeed ()));

              ...................................................

              the debug message always shown "USB SPEED1=1" regardless remark "CyU3PUsbForceFullSpeed(CyTrue);" or not.

              • 4. Re: Enabling FX3 Only for USB 2.0 fully/high speed
                KandlaguntaR_36

                Please confirm whether your host controller supports only full speed. If not, is it high speed or super speed controller?

                • 5. Re: Enabling FX3 Only for USB 2.0 fully/high speed
                  Peya_4162826

                  Hi,

                  If my host controller don't support USB2.0 FULL speed, it should NOT find FX3 device in device manager when FX3 run at full speed only mode. but in fact, The FX3 device always run at USB2.0 High speed regardless set FX3 run at USB2.0 full speed or not.

                  • 6. Re: Enabling FX3 Only for USB 2.0 fully/high speed
                    KandlaguntaR_36

                    I tested the same and found that there is a bug in ConnectState API in SDK 1.3.4. It works fine in SDK 1.3.3.

                     

                    In SDK 1.3.4, even though we set (1) Force Full Speed bit using CyU3PUsbForceFullSpeed API, but in connect state API, it is overwriting to 0.

                     

                    We will fix this issue in next release SDK 1.3.5.

                     

                    You may test using SDK 1.3.3 for checking USB Full Speed and High Speed support as required.

                    Change the RDK version to 1.3.3.

                     

                    Right Click on project, select Properties -> C/C++ Build -> Build Variables -> SDK version to 1_3_3