<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic LPC55Sx - USB High-Speed High-Bandwidth Isochronous Operation in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55Sx-USB-High-Speed-High-Bandwidth-Isochronous-Operation/m-p/1325728#M46196</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;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.&lt;/P&gt;&lt;P&gt;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.&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2021-08-18 154816.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/153379i3D6006DF9D62BF26/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot 2021-08-18 154816.png" alt="Screenshot 2021-08-18 154816.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;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.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="npaivacmu_0-1629316437506.png" style="width: 441px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/153380i67A6F81EC89749EF/image-dimensions/441x205?v=v2" width="441" height="205" role="button" title="npaivacmu_0-1629316437506.png" alt="npaivacmu_0-1629316437506.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Is there any way to enable sending more than one transaction a microframe for the USB-HS interface in device mode on the LPC55S2x?&lt;/P&gt;&lt;P&gt;The errata for this device states that this is not possible in host mode. Is the same true for device mode?&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="npaivacmu_1-1629316617466.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/153381iB872E7A930AFDE8A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="npaivacmu_1-1629316617466.png" alt="npaivacmu_1-1629316617466.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Nick&lt;/P&gt;</description>
    <pubDate>Wed, 18 Aug 2021 19:58:58 GMT</pubDate>
    <dc:creator>npaiva-cmu</dc:creator>
    <dc:date>2021-08-18T19:58:58Z</dc:date>
    <item>
      <title>LPC55Sx - USB High-Speed High-Bandwidth Isochronous Operation</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55Sx-USB-High-Speed-High-Bandwidth-Isochronous-Operation/m-p/1325728#M46196</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;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.&lt;/P&gt;&lt;P&gt;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.&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2021-08-18 154816.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/153379i3D6006DF9D62BF26/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot 2021-08-18 154816.png" alt="Screenshot 2021-08-18 154816.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;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.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="npaivacmu_0-1629316437506.png" style="width: 441px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/153380i67A6F81EC89749EF/image-dimensions/441x205?v=v2" width="441" height="205" role="button" title="npaivacmu_0-1629316437506.png" alt="npaivacmu_0-1629316437506.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Is there any way to enable sending more than one transaction a microframe for the USB-HS interface in device mode on the LPC55S2x?&lt;/P&gt;&lt;P&gt;The errata for this device states that this is not possible in host mode. Is the same true for device mode?&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="npaivacmu_1-1629316617466.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/153381iB872E7A930AFDE8A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="npaivacmu_1-1629316617466.png" alt="npaivacmu_1-1629316617466.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Nick&lt;/P&gt;</description>
      <pubDate>Wed, 18 Aug 2021 19:58:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55Sx-USB-High-Speed-High-Bandwidth-Isochronous-Operation/m-p/1325728#M46196</guid>
      <dc:creator>npaiva-cmu</dc:creator>
      <dc:date>2021-08-18T19:58:58Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55Sx - USB High-Speed High-Bandwidth Isochronous Operation</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55Sx-USB-High-Speed-High-Bandwidth-Isochronous-Operation/m-p/1333736#M46376</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/185904"&gt;@npaiva-cmu&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope you are doing great,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Apparently the Errata&amp;nbsp; it is not affecting the USB HS in device mode to send 3 transfers per&amp;nbsp; micro-frame , but I am currently consulting about the LPC55s2x stack and hardware support with our AE team.&amp;nbsp; I will let you know as soon I gather sufficient feedback for you.&lt;/P&gt;
&lt;P&gt;I just have some simple additional questions , could you help me with them?&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Are you taking our dev_video_virtual_camera SDK example&amp;nbsp; as a reference?&lt;/LI&gt;
&lt;LI&gt;What is the total size of&amp;nbsp;&lt;SPAN&gt;packets&amp;nbsp;per&amp;nbsp; micro-frame&amp;nbsp;do you want to achieve and tested ? (I suppose that it is&amp;nbsp; 1024 bytes per transfer)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;My apologies for the delay, &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;All the best,&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Diego.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Sep 2021 03:09:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55Sx-USB-High-Speed-High-Bandwidth-Isochronous-Operation/m-p/1333736#M46376</guid>
      <dc:creator>diego_charles</dc:creator>
      <dc:date>2021-09-02T03:09:40Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55Sx - USB High-Speed High-Bandwidth Isochronous Operation</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55Sx-USB-High-Speed-High-Bandwidth-Isochronous-Operation/m-p/1338582#M46446</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/185904"&gt;@npaiva-cmu&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope you are doing well.&lt;/P&gt;
&lt;P&gt;We have been checking with the SW team ; they&amp;nbsp; did some experiments and have the follow founds and SW patch :&lt;/P&gt;
&lt;P&gt;Case 1: The ISO IN MPS is 512 (less than 1024) and 2 additional transactions (total 3 transactions) per micro-frame.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Win10 will not poll more than once in one micro-frame as your&amp;nbsp; description. I think it is the&amp;nbsp; customer&lt;SPAN&gt;’&lt;/SPAN&gt;s case.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Case 2&lt;/STRONG&gt;: The ISO IN MPS is 1024 and 2 additional transactions per micro-frame.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Win10 will poll more than once in one micro-frame, and the ip3511 (HS USB) controller seems to&amp;nbsp; work well.&lt;/P&gt;
&lt;P&gt;Case 3: the ISO IN MPS is 1024 and 0 additional transactions per micro-frame.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; This is one IP issue and confirmed by design. Tested on&amp;nbsp; LPC55S28, where the IP3511HS controller has not interrupt when&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; transferring&amp;nbsp;1024 bytes of data.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;So only the Case 2 can work&lt;/STRONG&gt;. Because the case 3&lt;SPAN&gt;’&lt;/SPAN&gt;s IP issue, we didn&lt;SPAN&gt;’&lt;/SPAN&gt;t do much additional transactions test in SDK USB stack, there need one patch to implement it and it is attached. &lt;STRONG&gt;The patch, attached&lt;/STRONG&gt; in this reply&amp;nbsp; is based on the 2.10.0 SDK.&lt;/P&gt;
&lt;P&gt;Please notice that: we don&lt;SPAN&gt;’&lt;/SPAN&gt;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.&lt;/P&gt;
&lt;P&gt;You need call USB_DeviceVideoSend() API function&amp;nbsp; with at least the data that need be transferred in one micro-frame. For example:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;There are N (N &amp;lt;= 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.&lt;/LI&gt;
&lt;LI&gt;There are N (N &amp;gt; 1024 * 3) data that need be transferred.
&lt;OL class="lia-list-style-type-lower-alpha"&gt;
&lt;LI&gt;The all N data can be passed to USB_DeviceVideoSend, then controller will transfer all N data in multiple micro-frames.&lt;/LI&gt;
&lt;LI&gt;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.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;I hope this could help,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Diego.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 10 Sep 2021 21:28:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55Sx-USB-High-Speed-High-Bandwidth-Isochronous-Operation/m-p/1338582#M46446</guid>
      <dc:creator>diego_charles</dc:creator>
      <dc:date>2021-09-10T21:28:55Z</dc:date>
    </item>
  </channel>
</rss>

