2021-11-25 05:36 AM
Hi,
I have massive trouble while implementing USB HID on a STM32F373.
I use the CubeIDE, made a new project configured the USB pins and the USB Device middleware as „Custom Human Interface Device Class„.
The report descriptor has a length of 37 Byte and the Report Length is 64 Byte.
After generating the code I set a Pull-up which is necessary for USB and added my Report Description in the „usbd_custom_hid_if.c“:
__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
{
/* USER CODE BEGIN 0 */
0x06, 0x00, 0xFF,
0x09, 0x01,
0xA1, 0x01,
0x09, 0x01,
0x15, 0x00,
0x26, 0xFF, 0x00,
0x95, 0x40,
0x75, 0x08,
0x81, 0x02,
0x06, 0x00, 0xFF,
0x09, 0x02,
0x15, 0x00,
0x26, 0xFF, 0x00,
0x95, 0x40,
0x75, 0x08,
0x91, 0x02,
/* USER CODE END 0 */
0xC0 /* END_COLLECTION */
};
Shouldn‘t Windows detect the Device in Device manager correctly after these steps?
But the device Manager only Manager detects an unknown device with the error code 43 the detailed description oft the error is: „usb.inf:USB\DEVICE_DESCRIPTOR_FAILURE:00FF2000“
Have I missed some steps?
If anyone have an idea what I can try, please let me know.
Thank you very much.
Best regards
Dominik
2022-01-25 02:16 AM
2022-01-27 03:50 AM
Hello @DSchu.6 (Community Member)
Have you enabled the interrupt of the USB ?
If you use the HAL_Delay() function inside the USB function, you better set the USB interrupt to higher number (lower priority).
See the image of my CubeMx example (it is different MCU, but the principle is the same).
You can also try this site https://eleccelerator.com/usbdescreqparser/ to check your CUSTOM_HID_ReportDesc_FS
Best Regards,
Yosi.