<?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>LPC MicrocontrollersのトピックLPC11U6x UART Rom API Full Duplex safe?</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-UART-Rom-API-Full-Duplex-safe/m-p/539125#M11798</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Belias on Wed Jul 02 07:05:49 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;When using the LPC11U6X ROM API for U(S)ART, is it possible and allowed to do the following (having two different callback functions for rx and tx):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;/* UART write finished callback */
static void writeCallback(uint32_t err_code, uint32_t n) {
if (err_code != LPC_OK) {
errorUART();
}
(*tx_done_handler)();
}

/* UART read finished callback */
static void readCallback(uint32_t err_code, uint32_t n) {
if (err_code != LPC_OK) {
errorUART();
}
(*rx_done_handler)();
}


void send_BT_UART(const char *send_data, uint32_t length) {
UART_PARAM_T param;

param.buffer = (uint8_t *) send_data;
param.size = length;

/* Interrupt mode, do not append CR/LF to sent data */
param.transfer_mode = TX_MODE_BUF_EMPTY;
param.driver_mode = DRIVER_MODE_INTERRUPT;

/* Setup the transmit callback, this will get called when the
 transfer is complete */
param.callback_func_pt = (UART_CALLBK_T) writeCallback;

if (LPC_UARTND_API-&amp;gt;uart_put_line(uartHandle, &amp;amp;param)) {
errorUART();
}
}


void recv_BT_UART(char *receive_buffer, uint32_t length) {
UART_PARAM_T param;

param.buffer = (uint8_t *) receive_buffer;
param.size = length;

/* Receive data up to the CR/LF character in polling mode. Will
 truncate at length if too long.*/
param.transfer_mode = RX_MODE_BUF_FULL;
param.driver_mode = DRIVER_MODE_INTERRUPT;

/* Setup the receive callback, this will get called when the
 transfer is complete */
param.callback_func_pt = (UART_CALLBK_T) readCallback;

if (LPC_UARTND_API-&amp;gt;uart_get_line(uartHandle, &amp;amp;param)) {
errorUART();
}
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And calling&lt;/SPAN&gt;&lt;I&gt; send_BT_UART()&lt;/I&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;I&gt;recv_BT_UART()&lt;/I&gt;&lt;SPAN&gt; before the callback strikes?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
send_BT_UART(...)
// Do not wait for callback
recv_BT_UART(...)
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I think that it might be possible that when calling &lt;/SPAN&gt;&lt;I&gt;LPC_UARTND_API-&amp;gt;uart_get_line&lt;/I&gt;&lt;SPAN&gt; that the callback which &lt;/SPAN&gt;&lt;I&gt;send_BT_UART()&lt;/I&gt;&lt;SPAN&gt; sets gets overwritten by&lt;/SPAN&gt;&lt;I&gt; recv_BT_UART().&lt;/I&gt;&lt;BR /&gt;&lt;SPAN&gt;Is this true? Is there a workaround, that when using a single callback I can find out if it originates from an rx or an tx operation? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks alot! &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 19:39:57 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T19:39:57Z</dc:date>
    <item>
      <title>LPC11U6x UART Rom API Full Duplex safe?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-UART-Rom-API-Full-Duplex-safe/m-p/539125#M11798</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Belias on Wed Jul 02 07:05:49 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;When using the LPC11U6X ROM API for U(S)ART, is it possible and allowed to do the following (having two different callback functions for rx and tx):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;/* UART write finished callback */
static void writeCallback(uint32_t err_code, uint32_t n) {
if (err_code != LPC_OK) {
errorUART();
}
(*tx_done_handler)();
}

/* UART read finished callback */
static void readCallback(uint32_t err_code, uint32_t n) {
if (err_code != LPC_OK) {
errorUART();
}
(*rx_done_handler)();
}


void send_BT_UART(const char *send_data, uint32_t length) {
UART_PARAM_T param;

param.buffer = (uint8_t *) send_data;
param.size = length;

/* Interrupt mode, do not append CR/LF to sent data */
param.transfer_mode = TX_MODE_BUF_EMPTY;
param.driver_mode = DRIVER_MODE_INTERRUPT;

/* Setup the transmit callback, this will get called when the
 transfer is complete */
param.callback_func_pt = (UART_CALLBK_T) writeCallback;

if (LPC_UARTND_API-&amp;gt;uart_put_line(uartHandle, &amp;amp;param)) {
errorUART();
}
}


void recv_BT_UART(char *receive_buffer, uint32_t length) {
UART_PARAM_T param;

param.buffer = (uint8_t *) receive_buffer;
param.size = length;

/* Receive data up to the CR/LF character in polling mode. Will
 truncate at length if too long.*/
param.transfer_mode = RX_MODE_BUF_FULL;
param.driver_mode = DRIVER_MODE_INTERRUPT;

/* Setup the receive callback, this will get called when the
 transfer is complete */
param.callback_func_pt = (UART_CALLBK_T) readCallback;

if (LPC_UARTND_API-&amp;gt;uart_get_line(uartHandle, &amp;amp;param)) {
errorUART();
}
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And calling&lt;/SPAN&gt;&lt;I&gt; send_BT_UART()&lt;/I&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;I&gt;recv_BT_UART()&lt;/I&gt;&lt;SPAN&gt; before the callback strikes?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
send_BT_UART(...)
// Do not wait for callback
recv_BT_UART(...)
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I think that it might be possible that when calling &lt;/SPAN&gt;&lt;I&gt;LPC_UARTND_API-&amp;gt;uart_get_line&lt;/I&gt;&lt;SPAN&gt; that the callback which &lt;/SPAN&gt;&lt;I&gt;send_BT_UART()&lt;/I&gt;&lt;SPAN&gt; sets gets overwritten by&lt;/SPAN&gt;&lt;I&gt; recv_BT_UART().&lt;/I&gt;&lt;BR /&gt;&lt;SPAN&gt;Is this true? Is there a workaround, that when using a single callback I can find out if it originates from an rx or an tx operation? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks alot! &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:39:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-UART-Rom-API-Full-Duplex-safe/m-p/539125#M11798</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:39:57Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x UART Rom API Full Duplex safe?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-UART-Rom-API-Full-Duplex-safe/m-p/539126#M11799</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by xianghuiwang on Thu Jul 03 15:59:41 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi, Belias,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Can you check is HDEN bit is set?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;We will confirm and clarify the API usage as well.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:39:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-UART-Rom-API-Full-Duplex-safe/m-p/539126#M11799</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:39:58Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x UART Rom API Full Duplex safe?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-UART-Rom-API-Full-Duplex-safe/m-p/539127#M11800</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bob_walker on Wed Jun 10 22:26:38 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Did this ever get answered?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:39:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-UART-Rom-API-Full-Duplex-safe/m-p/539127#M11800</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:39:59Z</dc:date>
    </item>
  </channel>
</rss>

