<?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のトピックUART</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/UART/m-p/1823296#M55589</link>
    <description>&lt;DIV&gt;#include "pin_mux.h"&lt;/DIV&gt;&lt;DIV&gt;#include "board.h"&lt;/DIV&gt;&lt;DIV&gt;#include "fsl_usart.h"&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;stdbool.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;string.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* Definitions */&lt;/DIV&gt;&lt;DIV&gt;#define EXAMPLE_USART&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; USART0&lt;/DIV&gt;&lt;DIV&gt;#define EXAMPLE_USART_CLK_SRC&amp;nbsp; kCLOCK_MainClk&lt;/DIV&gt;&lt;DIV&gt;#define EXAMPLE_USART_CLK_FREQ CLOCK_GetFreq(EXAMPLE_USART_CLK_SRC)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define RX_RING_BUFFER_SIZE 8U&lt;/DIV&gt;&lt;DIV&gt;#define ECHO_BUFFER_SIZE&amp;nbsp; &amp;nbsp; 1024U&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* Prototypes */&lt;/DIV&gt;&lt;DIV&gt;static void EXAMPLE_USARTUserCallback(USART_Type *base, usart_handle_t *handle, status_t status, void *userData);&lt;/DIV&gt;&lt;DIV&gt;static void EXAMPLE_USARTInit(void);&lt;/DIV&gt;&lt;DIV&gt;static void EXAMPLE_USARTPrepareTransfer(void);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* Variables */&lt;/DIV&gt;&lt;DIV&gt;usart_handle_t g_uartHandle;&lt;/DIV&gt;&lt;DIV&gt;uint8_t g_tipString[] = "USART RX ring buffer example.\r\nSend back received data.\r\nEcho every 8 bytes.\r\n";&lt;/DIV&gt;&lt;DIV&gt;uint8_t g_rxRingBuffer[RX_RING_BUFFER_SIZE] = {0}; /* RX ring buffer. */&lt;/DIV&gt;&lt;DIV&gt;uint8_t rxBuffer[ECHO_BUFFER_SIZE] = {0}; /* Buffer for receive data to echo. */&lt;/DIV&gt;&lt;DIV&gt;uint8_t txBuffer[ECHO_BUFFER_SIZE] = {0}; /* Buffer for send data to echo. */&lt;/DIV&gt;&lt;DIV&gt;volatile bool rxBufferEmpty = true;&lt;/DIV&gt;&lt;DIV&gt;volatile bool txBufferFull = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool txOnGoing = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool rxOnGoing = false;&lt;/DIV&gt;&lt;DIV&gt;usart_transfer_t sendXfer;&lt;/DIV&gt;&lt;DIV&gt;usart_transfer_t receiveXfer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* USART user callback */&lt;/DIV&gt;&lt;DIV&gt;void EXAMPLE_USARTUserCallback(USART_Type *base, usart_handle_t *handle, status_t status, void *userData)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; userData = userData;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (kStatus_USART_TxIdle == status)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txBufferFull = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txOnGoing = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (kStatus_USART_RxIdle == status)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxBufferEmpty = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxOnGoing = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void transmitData()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Fill rxBuffer with 'A'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; ECHO_BUFFER_SIZE; ++i) {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txBuffer[i] = 'A';&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/*void receivedata()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;for (int i = 0; i &amp;lt; ECHO_BUFFER_SIZE; ++i) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxBuffer[i] = 'A';&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/*!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;* @brief Main function&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;int main(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; size_t receivedBytes;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Initialize the hardware. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; BOARD_InitBootPins();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; BOARD_InitBootClocks();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; CLOCK_Select(kUART0_Clk_From_MainClk);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Initialize the USART instance. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; EXAMPLE_USARTInit();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Prepare for transactional transmission. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; EXAMPLE_USARTPrepareTransfer();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Send tip information. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; txOnGoing = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; USART_TransferSendNonBlocking(EXAMPLE_USART, &amp;amp;g_uartHandle, &amp;amp;sendXfer);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; transmitData();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Wait for transmission to complete. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; while (txOnGoing)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; while (1)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* If txBuffer is empty and rxBuffer is full, copy rxBuffer to txBuffer. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ((!rxBufferEmpty) &amp;amp;&amp;amp; (!txBufferFull))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memcpy(txBuffer, rxBuffer, ECHO_BUFFER_SIZE);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxBufferEmpty = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txBufferFull = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* If RX is idle and rxBuffer is empty, start to read data to rxBuffer. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ((!rxOnGoing) &amp;amp;&amp;amp; rxBufferEmpty)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxOnGoing = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; USART_ReadByte(EXAMPLE_USART);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; receivedata();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (ECHO_BUFFER_SIZE == receivedBytes)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxBufferEmpty = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxOnGoing = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* If TX is idle and txBuffer is full, start to send data. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ((!txOnGoing) &amp;amp;&amp;amp; txBufferFull)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txOnGoing = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; USART_TransferSendNonBlocking(EXAMPLE_USART, &amp;amp;g_uartHandle, &amp;amp;sendXfer);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; transmitData();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;static void EXAMPLE_USARTInit(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; usart_config_t config;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; USART_GetDefaultConfig(&amp;amp;config);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; config.baudRate_Bps = BOARD_DEBUG_USART_BAUDRATE;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; config.enableRx = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; config.enableTx = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; USART_Init(EXAMPLE_USART, &amp;amp;config, EXAMPLE_USART_CLK_FREQ);&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;static void EXAMPLE_USARTPrepareTransfer(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Create USART handle and install callback function. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; USART_TransferCreateHandle(EXAMPLE_USART, &amp;amp;g_uartHandle, EXAMPLE_USARTUserCallback, NULL);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Start ring buffer. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; USART_TransferStartRingBuffer(EXAMPLE_USART, &amp;amp;g_uartHandle, g_rxRingBuffer, RX_RING_BUFFER_SIZE);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Prepare transfer for sending the received characters. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; sendXfer.data = txBuffer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; sendXfer.dataSize = ECHO_BUFFER_SIZE;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Prepare transfer for receiving characters. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; receiveXfer.data = rxBuffer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; receiveXfer.dataSize = ECHO_BUFFER_SIZE;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I AM USING LPC804&lt;/P&gt;&lt;P&gt;USING THIS CODE I AM TRYING TO SEND THE CONTINEOUS DATA AND I WANT TO&amp;nbsp; RECEIVE THE SAME TRANSMITTED DATA IN rxBUFFER. HERE I AM TRANSMITTIND DATA 'A' CONTINEOUSLY AND I WANT RECEIVE THE SAME DATA IN rxBUFFER THAT TOO CONTINEOUSLY. IT WILL BE GREAT IF I GET PROPER CODE AND METHOD .&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;THANK YOU&lt;/P&gt;</description>
    <pubDate>Thu, 07 Mar 2024 11:14:17 GMT</pubDate>
    <dc:creator>khalid11</dc:creator>
    <dc:date>2024-03-07T11:14:17Z</dc:date>
    <item>
      <title>UART</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/UART/m-p/1823296#M55589</link>
      <description>&lt;DIV&gt;#include "pin_mux.h"&lt;/DIV&gt;&lt;DIV&gt;#include "board.h"&lt;/DIV&gt;&lt;DIV&gt;#include "fsl_usart.h"&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;stdbool.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;string.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* Definitions */&lt;/DIV&gt;&lt;DIV&gt;#define EXAMPLE_USART&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; USART0&lt;/DIV&gt;&lt;DIV&gt;#define EXAMPLE_USART_CLK_SRC&amp;nbsp; kCLOCK_MainClk&lt;/DIV&gt;&lt;DIV&gt;#define EXAMPLE_USART_CLK_FREQ CLOCK_GetFreq(EXAMPLE_USART_CLK_SRC)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define RX_RING_BUFFER_SIZE 8U&lt;/DIV&gt;&lt;DIV&gt;#define ECHO_BUFFER_SIZE&amp;nbsp; &amp;nbsp; 1024U&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* Prototypes */&lt;/DIV&gt;&lt;DIV&gt;static void EXAMPLE_USARTUserCallback(USART_Type *base, usart_handle_t *handle, status_t status, void *userData);&lt;/DIV&gt;&lt;DIV&gt;static void EXAMPLE_USARTInit(void);&lt;/DIV&gt;&lt;DIV&gt;static void EXAMPLE_USARTPrepareTransfer(void);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* Variables */&lt;/DIV&gt;&lt;DIV&gt;usart_handle_t g_uartHandle;&lt;/DIV&gt;&lt;DIV&gt;uint8_t g_tipString[] = "USART RX ring buffer example.\r\nSend back received data.\r\nEcho every 8 bytes.\r\n";&lt;/DIV&gt;&lt;DIV&gt;uint8_t g_rxRingBuffer[RX_RING_BUFFER_SIZE] = {0}; /* RX ring buffer. */&lt;/DIV&gt;&lt;DIV&gt;uint8_t rxBuffer[ECHO_BUFFER_SIZE] = {0}; /* Buffer for receive data to echo. */&lt;/DIV&gt;&lt;DIV&gt;uint8_t txBuffer[ECHO_BUFFER_SIZE] = {0}; /* Buffer for send data to echo. */&lt;/DIV&gt;&lt;DIV&gt;volatile bool rxBufferEmpty = true;&lt;/DIV&gt;&lt;DIV&gt;volatile bool txBufferFull = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool txOnGoing = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool rxOnGoing = false;&lt;/DIV&gt;&lt;DIV&gt;usart_transfer_t sendXfer;&lt;/DIV&gt;&lt;DIV&gt;usart_transfer_t receiveXfer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* USART user callback */&lt;/DIV&gt;&lt;DIV&gt;void EXAMPLE_USARTUserCallback(USART_Type *base, usart_handle_t *handle, status_t status, void *userData)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; userData = userData;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (kStatus_USART_TxIdle == status)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txBufferFull = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txOnGoing = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (kStatus_USART_RxIdle == status)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxBufferEmpty = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxOnGoing = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void transmitData()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Fill rxBuffer with 'A'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; ECHO_BUFFER_SIZE; ++i) {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txBuffer[i] = 'A';&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/*void receivedata()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;for (int i = 0; i &amp;lt; ECHO_BUFFER_SIZE; ++i) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxBuffer[i] = 'A';&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/*!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;* @brief Main function&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;int main(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; size_t receivedBytes;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Initialize the hardware. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; BOARD_InitBootPins();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; BOARD_InitBootClocks();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; CLOCK_Select(kUART0_Clk_From_MainClk);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Initialize the USART instance. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; EXAMPLE_USARTInit();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Prepare for transactional transmission. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; EXAMPLE_USARTPrepareTransfer();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Send tip information. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; txOnGoing = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; USART_TransferSendNonBlocking(EXAMPLE_USART, &amp;amp;g_uartHandle, &amp;amp;sendXfer);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; transmitData();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Wait for transmission to complete. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; while (txOnGoing)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; while (1)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* If txBuffer is empty and rxBuffer is full, copy rxBuffer to txBuffer. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ((!rxBufferEmpty) &amp;amp;&amp;amp; (!txBufferFull))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memcpy(txBuffer, rxBuffer, ECHO_BUFFER_SIZE);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxBufferEmpty = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txBufferFull = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* If RX is idle and rxBuffer is empty, start to read data to rxBuffer. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ((!rxOnGoing) &amp;amp;&amp;amp; rxBufferEmpty)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxOnGoing = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; USART_ReadByte(EXAMPLE_USART);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; receivedata();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (ECHO_BUFFER_SIZE == receivedBytes)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxBufferEmpty = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rxOnGoing = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* If TX is idle and txBuffer is full, start to send data. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ((!txOnGoing) &amp;amp;&amp;amp; txBufferFull)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txOnGoing = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; USART_TransferSendNonBlocking(EXAMPLE_USART, &amp;amp;g_uartHandle, &amp;amp;sendXfer);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; transmitData();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;static void EXAMPLE_USARTInit(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; usart_config_t config;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; USART_GetDefaultConfig(&amp;amp;config);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; config.baudRate_Bps = BOARD_DEBUG_USART_BAUDRATE;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; config.enableRx = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; config.enableTx = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; USART_Init(EXAMPLE_USART, &amp;amp;config, EXAMPLE_USART_CLK_FREQ);&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;static void EXAMPLE_USARTPrepareTransfer(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Create USART handle and install callback function. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; USART_TransferCreateHandle(EXAMPLE_USART, &amp;amp;g_uartHandle, EXAMPLE_USARTUserCallback, NULL);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Start ring buffer. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; USART_TransferStartRingBuffer(EXAMPLE_USART, &amp;amp;g_uartHandle, g_rxRingBuffer, RX_RING_BUFFER_SIZE);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Prepare transfer for sending the received characters. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; sendXfer.data = txBuffer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; sendXfer.dataSize = ECHO_BUFFER_SIZE;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Prepare transfer for receiving characters. */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; receiveXfer.data = rxBuffer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; receiveXfer.dataSize = ECHO_BUFFER_SIZE;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I AM USING LPC804&lt;/P&gt;&lt;P&gt;USING THIS CODE I AM TRYING TO SEND THE CONTINEOUS DATA AND I WANT TO&amp;nbsp; RECEIVE THE SAME TRANSMITTED DATA IN rxBUFFER. HERE I AM TRANSMITTIND DATA 'A' CONTINEOUSLY AND I WANT RECEIVE THE SAME DATA IN rxBUFFER THAT TOO CONTINEOUSLY. IT WILL BE GREAT IF I GET PROPER CODE AND METHOD .&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;THANK YOU&lt;/P&gt;</description>
      <pubDate>Thu, 07 Mar 2024 11:14:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/UART/m-p/1823296#M55589</guid>
      <dc:creator>khalid11</dc:creator>
      <dc:date>2024-03-07T11:14:17Z</dc:date>
    </item>
    <item>
      <title>Re: UART</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/UART/m-p/1824401#M55600</link>
      <description>&lt;P&gt;Hello, my name is Pavel, and I will be supporting your case, I recommend review the available examples on the SDK, if the issue persist, please let me know.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pavel_Hernandez_0-1709928771017.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/267339i7897742EB43EF0B9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Pavel_Hernandez_0-1709928771017.png" alt="Pavel_Hernandez_0-1709928771017.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://mcuxpresso.nxp.com/en/select" target="_blank"&gt;Select Board | MCUXpresso SDK Builder (nxp.com)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;BR /&gt;Pavel&lt;/P&gt;</description>
      <pubDate>Fri, 08 Mar 2024 20:13:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/UART/m-p/1824401#M55600</guid>
      <dc:creator>Pavel_Hernandez</dc:creator>
      <dc:date>2024-03-08T20:13:25Z</dc:date>
    </item>
  </channel>
</rss>

