cancel
Showing results for 
Search instead for 
Did you mean: 

USB Superspeed Peripherals

New Contributor II

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
Reply
1 Solution
Moderator
Moderator

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
Reply
6 Replies
Moderator
Moderator

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
Reply
New Contributor II

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
Reply
New Contributor II

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
Reply
Moderator
Moderator

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

0 Likes
Reply
New Contributor II

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
Reply
Moderator
Moderator

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
Reply