Maximizing USB HID bandwidth

  • Thread starter Thread starter MWoolsey
  • Start date Start date
M

MWoolsey

Guest
I am developing a windows application that communications with a device over USB 2.0 high speed. The device has an Interrupt OUT endpoint that is 1023 bytes long, and specifies 3 transfers per microframe.

The application is using Windows HidD_ calls to setup the connection, then using WriteFile to send the data. It should be sending about 24 MBytes per seconds. I can't get much past 2 MBytes per second. Through a USB analyzer, I can see that I'm not getting 3 transfers per microframe. I'm not even getting 1 transfer every microframe. I'm averaging somewhere around 1 transfer every 4 microframes.

Does windows 7 64-bit support Interrupt endpoints with 3 transfers per microframe?

Here's something interesting: I run my test app which displays the transfer rate every second (set at high priority). If I start another application that loads down the CPU, such as start compiling another program, the transfer rate INCREASES by 20% or more. The busier the CPU, the higher my transfer rate, although I still can't get past about 2.7 MBytes per second.

Why is this?

Continue reading...
 
Back
Top