Enabling FX3 Only for USB 2.0 fully/high speed

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Peya_4162826
Level 2
Level 2
First like received

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?

0 Likes
1 Solution

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

pastedImage_0.png

View solution in original post

0 Likes
6 Replies
KandlaguntaR_36
Moderator
Moderator
Moderator
25 solutions authored 10 solutions authored 5 solutions authored

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.

0 Likes

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.

0 Likes

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.

0 Likes
KandlaguntaR_36
Moderator
Moderator
Moderator
25 solutions authored 10 solutions authored 5 solutions authored

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

0 Likes

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.

0 Likes

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

pastedImage_0.png

0 Likes