<?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>MQX Software SolutionsのトピックRe: K53 USB CDC data rate issue MQX</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/K53-USB-CDC-data-rate-issue-MQX/m-p/673477#M17359</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi annamol:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The usbd library uses Bulk endpoints. Per the usb specification, the bulk endpoints have guaranteed delivery but don't have guaranteed bandwidth. If you have an application with a requirement of guaranteed bandwidth, you will need to consider using isochronous endpoints. Unfortunately current MQX not supports this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 01 Aug 2017 05:42:49 GMT</pubDate>
    <dc:creator>danielchen</dc:creator>
    <dc:date>2017-08-01T05:42:49Z</dc:date>
    <item>
      <title>K53 USB CDC data rate issue MQX</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/K53-USB-CDC-data-rate-issue-MQX/m-p/673476#M17358</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;We have a custom board with MK53DN512CLQ10 in which we are trying to analyze feasibility of using MQX based USB CDC implementation for a higher data rate.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To test the data rate achievable, I tried pushing a saved buffer say,&lt;/P&gt;&lt;P&gt;uint8_t recv_data[]={"C1234567D1234567E1234567F1234567G1234567H1234567I1234567J1234567"}; &lt;/P&gt;&lt;P&gt;void Virtual_Com_App(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* User Code */ &lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; if(g_recv_size) &lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _mqx_int i;&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Copy Buffer to Send Buff */&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; g_recv_size; i++)&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Copied: %c\n", g_curr_recv_buf[i]);&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;g_curr_send_buf[g_send_size++] = g_curr_recv_buf[i];&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_recv_size = 0;&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;//&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; if(g_send_size) &lt;BR /&gt;&amp;nbsp;&amp;nbsp; while(1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_send_size=sizeof(recv_data);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t error;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t size = g_send_size;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_send_size = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error = USB_Class_CDC_Send_Data(g_app_handle, DIC_BULK_IN_ENDPOINT,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;recv_data, size);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!error &amp;amp;&amp;amp; !(size % DIC_BULK_IN_ENDP_PACKET_SIZE)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If the last packet is the size of endpoint, then send also zero-ended packet,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ** meaning that we want to inform the host that we do not have any additional&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ** data, so it can flush the output.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error = USB_Class_CDC_Send_Data(g_app_handle, DIC_BULK_IN_ENDPOINT, NULL, 0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(error != USB_OK) &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Failure to send Data Handling code here */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After dumping the code, I tried capturing data via real term for 10seconds onto a file. The data rate seems very low as per the observed file. I am getting 800sps as per the implementation (As per file size). This data rate changes depending on my string length and the maximum I got is 1ksps. &lt;/P&gt;&lt;P&gt;Am i going wrong in configuration or doing something terribly wrong? Data rate is critical for our implementation in which there will be 5 (SPI and&amp;nbsp; I2C peripherals) channels pushing out 2bytes data at say 1ksps or higher.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Jul 2017 14:53:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/K53-USB-CDC-data-rate-issue-MQX/m-p/673476#M17358</guid>
      <dc:creator>annamol</dc:creator>
      <dc:date>2017-07-19T14:53:16Z</dc:date>
    </item>
    <item>
      <title>Re: K53 USB CDC data rate issue MQX</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/K53-USB-CDC-data-rate-issue-MQX/m-p/673477#M17359</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi annamol:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The usbd library uses Bulk endpoints. Per the usb specification, the bulk endpoints have guaranteed delivery but don't have guaranteed bandwidth. If you have an application with a requirement of guaranteed bandwidth, you will need to consider using isochronous endpoints. Unfortunately current MQX not supports this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 01 Aug 2017 05:42:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/K53-USB-CDC-data-rate-issue-MQX/m-p/673477#M17359</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2017-08-01T05:42:49Z</dc:date>
    </item>
  </channel>
</rss>

