UAC2 isochronous transfer limits in full speed mode? #3635
Unanswered
gregory-whaley
asked this question in
Q&A
Replies: 1 comment 1 reply
-
|
For FS my suggestion is never exceed ~512 bytes, 1023 is the theorical limits that occupies full bandwidth of a root hub, you need a dedicated USB controller to make it work. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
I have successfully developed a USB stereo microphone device on the Raspberry Pi Pico RP2040 MCU using Tinyusb and UAC2. That system used 2 channels at 32 bit samples at 48KHz in full speed mode. The EP buffer size in this case was 384 bytes.
I am trying to expand that system to 4 channels, 32 bit samples at 48KHz. The system compiles and runs and returns no errors or warnings, however the TUSB device stack fails to respond to ISO transfers, but rather responds with an error packet and zero bytes of data. In this case, the EP buffer size is 768 bytes which is within the 1023 byte limit of the USB spec. Here is the wireshark screenshot of an error packet device response to a host ISO request.
To test if this is a buffer size limit problem I took the 4 channel microphone example from the tinyusb examples and altered the data rates. The published version is 4 channel x 16 bit x 48kHz = 384 byte EP size and it works as expected. When I change to 4 channel x 32 bit x 48KHz = 768 byte EP, it fails to transfer properly to host ISO requests.
Here's a table of trials with different transfer rates:
So I conclude there is an effective EP buffer limit of between 552 and 564 bytes.
My question is why is this the case? I expected that EP buffers up to 1023 would work, but might have throughput problems and congestion. But this limit is not congestion, rather it seems to be TUSB device code rejecting the EP size at run time. It would be helpful to understand this limit to ensure reliable operation.
Thanks for any comments!
Beta Was this translation helpful? Give feedback.
All reactions