cancel
Showing results for 
Search instead for 
Did you mean: 

Issue with Custom HID Report Size on STM32F765 – Fails Above 16 Bytes

Badrinathan
Associate II

 

Hello ST Community & @stforum@stforum2   

I am working on a project using the STM32F765VGT6 MCU with STM32CubeIDE on Windows, and I'm implementing a Custom HID USB interface.

Objective:
To send more than 16 bytes of data over USB using the `USBD_CUSTOM_HID_SendReport()` function.


USB Report Descriptor (Working - 16 Bytes):

__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
{
0x06, 0x00, 0xFF, // USAGE_PAGE (Vendor Defined Page: 0xFF00)
0x09, 0x01, // USAGE (Vendor Defined)
0xA1, 0x01, // COLLECTION (Application)

// Output Report (16 bytes)
0x85, 0xE3, // REPORT_ID (227)
0x09, 0x01,
0x15, 0x00,
0x25, 0x01,
0x75, 0x08,
0x95, 0x10, // REPORT_COUNT = 16
0xB1, 0x03, // FEATURE (Data, Var, Abs)

// Input Report (16 bytes)
0x85, 0xE4, // REPORT_ID (228)
0x09, 0x02,
0x15, 0x00,
0x25, 0xFF,
0x75, 0x08,
0x95, 0x10, // REPORT_COUNT = 16
0x81, 0x02, // INPUT (Data, Var, Abs)

0xC0 // END_COLLECTION
};

#define USBD_CUSTOMHID_OUTREPORT_BUF_SIZE 16U
#define USBD_CUSTOM_HID_REPORT_DESC_SIZE 32U

#define CUSTOM_HID_EPIN_ADDR 0x81U
#define CUSTOM_HID_EPIN_SIZE 0x40U
#define CUSTOM_HID_EPOUT_ADDR 0x01U
#define CUSTOM_HID_EPOUT_SIZE 0x40U

 


Modified Descriptor for 32 Bytes (Not Working):

// Output Report (32 bytes)
0x85, 0xE3,
0x09, 0x01,
0x15, 0x00,
0x25, 0x01,
0x75, 0x08,
0x95, 0x20, // REPORT_COUNT = 32
0xB1, 0x03,

// Input Report (32 bytes)
0x85, 0xE4,
0x09, 0x02,
0x15, 0x00,
0x25, 0xFF,
0x75, 0x08,
0x95, 0x20, // REPORT_COUNT = 32
0x81, 0x02,

For 32 bytes and 64 bytes unable to transmit the data and sometimes device not detecting

Thanks
Badrinathan J

 

0 REPLIES 0