Hi,
I am trying to develop a USB Video application (UVC) using the LPC55S26 microcontroller. I have gotten USB-HS to work reliably with one transaction per microframe, but have not been able to successfully get it working with multiple transactions per microframe.
I have tried changing the "wMaxPacketSize" in the endpoint descriptor to request more transactions. The endpoint descriptor successfully shows up in Microsoft USBView as supporting "2 transactions per microframe". Unfortunately, this does not cause the computer to poll more than once a microframe.
I suspect that something else needs to be changed related to the Packet IDs. For only a single transaction per frame the USB driver only has to send DATA0 packets. In order to successfully do more than one transaction per microframe the driver needs to send DATA1 and/or DATA2 packets (see the image below from the USB-Video specification). Unfortunately I have not yet found a way to change the packet ID in the source code.
Is there any way to enable sending more than one transaction a microframe for the USB-HS interface in device mode on the LPC55S2x?
The errata for this device states that this is not possible in host mode. Is the same true for device mode?
Thanks,
Nick
Hi @npaiva-cmu
I hope you are doing great,
Apparently the Errata it is not affecting the USB HS in device mode to send 3 transfers per micro-frame , but I am currently consulting about the LPC55s2x stack and hardware support with our AE team. I will let you know as soon I gather sufficient feedback for you.
I just have some simple additional questions , could you help me with them?
My apologies for the delay,
All the best,
Diego.
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:
I hope this could help,
Diego.