Hello @MOhamed_Mehery,
IN High-speed mode, the multi packet process is handled through the Device controller Driver interrupts when the USB OTG core is running in Slave mode and by the internal DMA.
Data transfer is divided into Maximum Size Packet MPS, to do so, you can refer to example of calculations in the reference manual,
So that, each Fifo can hold multiple packets.
To transmit data, you might use the USBD_LL_Transmit () function and to receive data you might use USBD_LL_PrepareReceive()
USBD_LL_GetRxDataSize to return the last transferred packet size.
You can start from the usbd_conf.c file provided within STM32Cube™ package.
When your question is answered, please close this topic by choosing Select as Best.
To give better visibility on the answered topics, please click on "Best answer" on the reply which solved your issue or answered your question.Best regards,FBL