Announcements
IMPORTANT: Cypress Developer Community is transitioning on October 20th. To learn more and be prepared for this change, check out our latest announcement.
cancel
Showing results for 
Search instead for 
Did you mean: 

USB Superspeed Peripherals

WGT_4383351
New Contributor II

Can FX3 support superspeed mode that has HID interface plus bulk interface?

The single HID interface mouse+keyboard example doesn't enumerate as super speed. Can it enumerate as super speed?

0 Likes
1 Solution
Hemanth
Moderator
Moderator

Hi,

Please change the field: /* Total Length of Report Descriptor */ of HID Descriptor from 0x1C,0x00, to 111,0x00,

Regards,

Hemanth

Hemanth

View solution in original post

0 Likes
5 Replies
JayakrishnaT_76
Moderator
Moderator

Hello,

Please let us know if your application is to have a composite device or not. According to my understanding, you wish to have a device having multiple interfaces. One is the HID interface and on the other interface, you wish to have a Bulk endpoint. Please let us know what exactly is the other interface that you are looking forward. Is it a vendor interface?

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes
WGT_4383351
New Contributor II

Yes, one vendor interface with bulk/interrupt endpoints, and one HID interface with one interrupt endpoint that contains mouse and keyboard as the example.

As a test, I add a interface with a bulk endpint to the super speed descriptor in the example (full and high speed descriptor not modified), but it still enumerates as non super speed non composite device with one interface of mouse and keyboard.

How does the system choose which speed to use under this condition?

I also find out there are differences in the example, not sure it is a typo or not:

full speed:

    /* Interface Descriptor */

    0x09,                           /* Descriptor size */

    CY_U3P_USB_INTRFC_DESCR,        /* Interface Descriptor type */

    CY_FX_USB_HID_INTF_0,             /* Interface number */

    0x00,                           /* Alternate setting number */

    0x01,                           /* Number of end points */

    0x03,                           /* Interface class : HID Class */

    0x00,                           /* Interface sub class : None */

    0x02,                           /* Interface protocol code : Mouse */

    0x00,                           /* Interface descriptor string index */

high speed:

    /* Interface Descriptor */

    0x09,                           /* Descriptor size */

    CY_U3P_USB_INTRFC_DESCR,        /* Interface Descriptor type */

    CY_FX_USB_HID_INTF_0,             /* Interface number */

    0x00,                           /* Alternate setting number */

    0x01,                           /* Number of end points */

    0x03,                           /* Interface class : HID Class */

    0x01,                           /* Interface sub class : None */

    0x02,                           /* Interface protocol code : Mouse */

    0x00,                           /* Interface descriptor string index */

super speed:

    /* Interface Descriptor */

    0x09,                           /* Descriptor size */

    CY_U3P_USB_INTRFC_DESCR,        /* Interface Descriptor type */

    CY_FX_USB_HID_INTF_0,             /* Interface number */

    0x00,                           /* Alternate setting number */

    0x01,                           /* Number of end points */

    0x03,                           /* Interface class */

    0x00,                           /* Interface sub class : None */

    0x02,                           /* Interface protocol code */

    0x00,                           /* Interface descriptor string index */

0 Likes
Hemanth
Moderator
Moderator

Hi,

I think you are referring to the project in How to Implement Multiple HID Class Functionalities with a Single HID interface – KBA228479

In that project, CyU3PConnectState() is called with second parameter as CyFalse. So, the device does not enumerate as superspeed device and changes made to super speed descriptors does not come into effect.

Regards,

Hemanth

Hemanth
WGT_4383351
New Contributor II

When changing CyU3PConnectState to SS without other changes, the enumeration failed on Windows.

0 Likes
Hemanth
Moderator
Moderator

Hi,

Please change the field: /* Total Length of Report Descriptor */ of HID Descriptor from 0x1C,0x00, to 111,0x00,

Regards,

Hemanth

Hemanth

View solution in original post

0 Likes