Hi @npaiva-cmu
I hope you are doing well.
We have been checking with the SW team ; they did some experiments and have the follow founds and SW patch :
Case 1: The ISO IN MPS is 512 (less than 1024) and 2 additional transactions (total 3 transactions) per micro-frame.
Win10 will not poll more than once in one micro-frame as your description. I think it is the customer’s case.
Case 2: The ISO IN MPS is 1024 and 2 additional transactions per micro-frame.
Win10 will poll more than once in one micro-frame, and the ip3511 (HS USB) controller seems to work well.
Case 3: the ISO IN MPS is 1024 and 0 additional transactions per micro-frame.
This is one IP issue and confirmed by design. Tested on LPC55S28, where the IP3511HS controller has not interrupt when transferring 1024 bytes of data.
So only the Case 2 can work. Because the case 3’s IP issue, we didn’t do much additional transactions test in SDK USB stack, there need one patch to implement it and it is attached. The patch, attached in this reply is based on the 2.10.0 SDK.
Please notice that: we don’t do much test for the IP3511HS controller additional transactions function. Since the case 3 IP bug, we cannot guarantee that the additional transactions can always work well for some corner cases, our customers can try it and do more tests.
You need call USB_DeviceVideoSend() API function with at least the data that need be transferred in one micro-frame. For example:
- There are N (N <= 1024*3) data that need be transferred in one micro-frame, the all N data need be passed to USB_DeviceVideoSend, then controller will transfer all the data to Host in one micro-frame.
- There are N (N > 1024 * 3) data that need be transferred.
- The all N data can be passed to USB_DeviceVideoSend, then controller will transfer all N data in multiple micro-frames.
- The 1024*3 data can be passed to USB_DeviceVideoSend firstly, it will be transferred in one micro-frame. Then pass the remaining data to USB_DeviceVideoSend again.
I hope this could help,
Diego.