Strictly necessary cookies are on by default and cannot be turned off. Functional, Performance and Tracking/targeting/sharing cookies can be turned on below based on your preferences (this banner will remain available for you to accept cookies). You may change your cookie settings by deleting cookies from your browser. Then this banner will appear again. You can learn more details about cookies HERE.
Strictly necessary (always on)
Functional, Performance and Tracking/targeting/sharing (default off)
Hello! I'm trying to program a CYUSB3KET-003 Demo module to work with the Windows driver written for FX2LP. The driver for Windows wrote itself. it works. I wanted a compatibility mode. I need the wMaxPacketSize parameter in the CY_U3P_USB_ENDPNT_DESCR descriptor of the CyFxUSBHSConfigDscr structure to be less than 512 bytes (for example, 64) for BULK EP. However, when connecting, Windows generates an invalid handle error (xHCI & Windows 8.1). CONFIGURATION_DESCRIPTOR_VALIDATION_FAILURE! The error applies to all descriptors and even the VID & PID does not match the ones specified in CyFxUSB20DeviceDscr. The working code from the example, with a value of 512 - everything works. With any other value - does not work.
How to solve this problem? Does the chip support values other than those specified by default?
PS If in the descriptor to change the Endpoint Type from BULK to Interrupt it works with any length Max packet size.
So far I've found one way. But not the best it seems to me:
It is necessary in the CyFxUSB20 descriptorDeviceDisc to change the version // 0x10,0x02, / * USB 2.10 * / on 0x00,0x02, / * USB 2.00 * /
Then you can set any length of Max packet size in USB 2.0 mode.
Fx3 supports bytes less than 512 for high speed. The error is specific to the host side. So the work around you found seems to be the only option as this is out of FX3's scope. Any device, other than FX3 would also face the same issue with those descriptors.