Проверьте максимальный размер пакета в дескрипторе конечной точки через которую передаете. Например:
CODE
static uint8_t USBD_LINK_CfgDesc[USB_LINK_CONFIG_DESC_SIZ] =
{
...........
0x07, /*bLength: Endpoint Descriptor size*/
USB_DESC_TYPE_ENDPOINT, /*bDescriptorType:*/
LINK_EPOUT_ADDR, /*bEndpointAddress: Endpoint Address OUT)*/
USBD_EP_TYPE_INTR, /*bmAttributes: Interrupt endpoint*/
LOBYTE(LINK_EPOUT_SIZE), /*wMaxPacketSize: 2 Byte max */ <--------
HIBYTE(LINK_EPOUT_SIZE), <--------
0x20, /*bInterval: Polling Interval (20 ms)*/
...........
};
Проверьте размеры fifo для всех EP в usbd_conf.h:
CODE
USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev)
{
............
HAL_PCD_SetRxFiFo(&hpcd_USB_OTG_FS, 64);
HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_FS, 0, 16);
HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_FS, 1, 16);
HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_FS, 2, 224);
............
}
Здесь сумма всех 4-байтных слов не должна превышать 320 (1280 байт).