FX2 HID device unable to respond to the Get_Report_Descriptor request
Question: I am using the bulkloop example as a basis to design a HID device using the FX2. I have defined the HID descriptor correctly as stated in the HID spec but the FX2 fails to respond to the GET_HID_DESCRIPTOR request. Do you have an example that shows how to design a HID device using FX2?
Yes, we have an example that illustrates how to define descriptors for a HID device using FX2 and implement HID protocols. Please contact technical support for this example.
Regarding the failure of the enumeration of a HID device, please note that for the Get_Report_Descriptor request, the FX2 8051 cannot use the SUDPTR to send the descriptor to the host. This is because the first field of this Report descriptor is not the length of the descriptor. The SUDPTR can only be used if the first byte represents the length of the descriptor. When SUDPTRL is loaded, the FX2 reads the number of bytes requested in the SETUPDAT bytes 6 and 7 and compares this with the length of the descriptor (which is the first byte of the descriptor). In the case of a HID report Descriptor there is no length field and hence the SUDPTR cannot read this field. Please refer to page 2-14 of the FX2 Technical Reference Manual for information on how the SUDPTR is used to load descriptors into EP0 automatically.
So in order to send the report descriptor (for having the device enumerate successfully), it has to be loaded manually (done by the 8051) into the endpoint 0 and armed subsequently. Please use the example (available on request) as a reference to make sure that the HID protocols are implemented correctly in your firmware.