<?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 Help to fix custom CDC_Send function in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Help-to-fix-custom-CDC-Send-function/m-p/523800#M6436</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by crudo on Sun Sep 15 19:22:40 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using a custom code of CDC example from 177x_8x_PDL_110602 package (I am not using LPCOpen). &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am having a trouble with CDC_Send function. That is the scenary: An python script send messages to LPC1788 serial USB, they are send time to time (200ms,300ms). The message is: "ping\x00", without quotes. When the LPC received the ping message it send back to PC this message: "resp 0\x00". After any time of messages interchange (perfectly), the LPC begins send the message wrong, like this: "r 0\x00", "sp 0\x00", "esp 0\x00", "r\x00", "\x00", ...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Bellow is the code that send the message:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
void CDC_Send(const uint8_t *data, uint32_t data_size)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; // block until all bytes be sent
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (ringbuff_size(g_tx_buffer) &amp;gt; 0);

&amp;nbsp;&amp;nbsp;&amp;nbsp; // puts the data into ring buffer
&amp;nbsp;&amp;nbsp;&amp;nbsp; ringbuff_write(g_tx_buffer, data, data_size);

&amp;nbsp;&amp;nbsp;&amp;nbsp; // forces the first send
&amp;nbsp;&amp;nbsp;&amp;nbsp; CDC_BulkIn();
}


void CDC_BulkIn(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t buffer[USB_CDC_BUFSIZE];
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t bytes_to_write;

&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!g_cdc_initialized) return;

&amp;nbsp;&amp;nbsp;&amp;nbsp; memset(buffer, 0, USB_CDC_BUFSIZE);

&amp;nbsp;&amp;nbsp;&amp;nbsp; bytes_to_write = ringbuff_read(g_tx_buffer, buffer, USB_CDC_BUFSIZE);

&amp;nbsp;&amp;nbsp;&amp;nbsp; if (bytes_to_write &amp;gt; 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_WriteEP(CDC_DEP_IN, buffer, bytes_to_write);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The SetMode (command 0xF3) use the reset value (zero), so don't happen interrupts by NAK.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;After a lot of time debuging I tried to put a delay after USB_WriteEP function, the delay value is 100us. In this way the messages interchange don't fail. So, I would like to fix this (remove the delay). Any idea?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 16:46:20 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T16:46:20Z</dc:date>
    <item>
      <title>Help to fix custom CDC_Send function</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Help-to-fix-custom-CDC-Send-function/m-p/523800#M6436</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by crudo on Sun Sep 15 19:22:40 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using a custom code of CDC example from 177x_8x_PDL_110602 package (I am not using LPCOpen). &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am having a trouble with CDC_Send function. That is the scenary: An python script send messages to LPC1788 serial USB, they are send time to time (200ms,300ms). The message is: "ping\x00", without quotes. When the LPC received the ping message it send back to PC this message: "resp 0\x00". After any time of messages interchange (perfectly), the LPC begins send the message wrong, like this: "r 0\x00", "sp 0\x00", "esp 0\x00", "r\x00", "\x00", ...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Bellow is the code that send the message:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
void CDC_Send(const uint8_t *data, uint32_t data_size)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; // block until all bytes be sent
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (ringbuff_size(g_tx_buffer) &amp;gt; 0);

&amp;nbsp;&amp;nbsp;&amp;nbsp; // puts the data into ring buffer
&amp;nbsp;&amp;nbsp;&amp;nbsp; ringbuff_write(g_tx_buffer, data, data_size);

&amp;nbsp;&amp;nbsp;&amp;nbsp; // forces the first send
&amp;nbsp;&amp;nbsp;&amp;nbsp; CDC_BulkIn();
}


void CDC_BulkIn(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t buffer[USB_CDC_BUFSIZE];
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t bytes_to_write;

&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!g_cdc_initialized) return;

&amp;nbsp;&amp;nbsp;&amp;nbsp; memset(buffer, 0, USB_CDC_BUFSIZE);

&amp;nbsp;&amp;nbsp;&amp;nbsp; bytes_to_write = ringbuff_read(g_tx_buffer, buffer, USB_CDC_BUFSIZE);

&amp;nbsp;&amp;nbsp;&amp;nbsp; if (bytes_to_write &amp;gt; 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_WriteEP(CDC_DEP_IN, buffer, bytes_to_write);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The SetMode (command 0xF3) use the reset value (zero), so don't happen interrupts by NAK.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;After a lot of time debuging I tried to put a delay after USB_WriteEP function, the delay value is 100us. In this way the messages interchange don't fail. So, I would like to fix this (remove the delay). Any idea?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 16:46:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Help-to-fix-custom-CDC-Send-function/m-p/523800#M6436</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T16:46:20Z</dc:date>
    </item>
  </channel>
</rss>

