USB bulk transfer speed

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

USB bulk transfer speed

1,408 Views
martindusek
Contributor V

Hi,

I use latest USB stack on MK22 MCU (full speed usb transceiver). I achieve approx 600 kB/s transfer rate when sending data from MCU to PC (Windows 10) via bulk endpoint.

On PC I read data using libusb (libusb_bulk_transfer(devHandle, endpoint, data, requiredSize, &actualSize, timeout)).

Can you please help in optimizing the transfer rate (i.e. achieving higher transfer rate)? Is there any configuration in USB stack which can achieve higher transfer rate? What is optimal data chunk size written to endpoint in MCU (USB_DeviceSendRequest())?

Labels (2)
1 Reply

1,074 Views
bobpaddock
Senior Contributor III

For full speed the packet size is a max of 64 bytes.  For high speed it is 512 bytes.

Set the Polling Interval in the endpoint descriptor to the lowest value that will not generate NAKs on the endpoints.

Minimize transactions by sending full packets (this may be out of your control in the stock library code).

USB in a NutShell - Chapter 4 - Endpoint Types