cancel
Showing results for 
Search instead for 
Did you mean: 

How can I achieve the first feature, it say that i can transmit multiple packet on each frame? My goal is to acheive minimum 1 Mbyte/sec data transfer using stm32h7 usb peripheral. This document name is "stm3220USB20user manual UM1734".

MOhamed_Mehery
Associate III
1 ACCEPTED SOLUTION

Accepted Solutions

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 Accept as Solution on the reply which solved your issue or answered your question.


I'm out of offce with limited access to my emails.
Happy New Year!

View solution in original post

5 REPLIES 5
FBL
ST Employee

Hello @MOhamed_Mehery​,

Can you specify the document you are working on? I suggest looking to the UM2195 dedicated for the package X-Cube USB Audio.

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.


I'm out of offce with limited access to my emails.
Happy New Year!

I modified the post to include the document i'm using.

I'm more dedicated to data transfer rate, not the audio class specifically.

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 Accept as Solution on the reply which solved your issue or answered your question.


I'm out of offce with limited access to my emails.
Happy New Year!

Thank you for help, I'm grateful.