<?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のトピックRe: USART with CMSIS: no receive events</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471645#M49119</link>
    <description>&lt;P&gt;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/137574"&gt;@frank_m&lt;/a&gt;&amp;nbsp;I go through the other post and found the that, it is same issue which is i am facing.&lt;/P&gt;&lt;P&gt;I have made changes as per below image. I see some improvement but getting still same issue. I would appreciate your suggession.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DineshRibadiya_0-1654790921540.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/182821iE3EF696FDDBF0A4B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="DineshRibadiya_0-1654790921540.png" alt="DineshRibadiya_0-1654790921540.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 09 Jun 2022 16:09:30 GMT</pubDate>
    <dc:creator>DineshRibadiya</dc:creator>
    <dc:date>2022-06-09T16:09:30Z</dc:date>
    <item>
      <title>USART with CMSIS: no receive events</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1399558#M47638</link>
      <description>&lt;P&gt;Hi there,&lt;/P&gt;&lt;P&gt;I'm developing for a LPC55xx based board. I'm trying to be a good NXP customer and use MCUXpresso IDE with all tools (Pins, Clocks, Peripherals).&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I configured the Flexcom/USART component using Peripherals tools.&amp;nbsp; Peripherals tool also adds code to initialize USART. The code is based on "fsl_usart_cmsis.h". It's based on ARM's CMSIS API and looks like this:&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="c"&gt;static void FLEXCOMM0_init(void) {
  /* Initialize CMSIS USART */
  FLEXCOMM0_PERIPHERAL.Initialize(USART0_SignalEvent);
  /* Power control of CMSIS USART */
  FLEXCOMM0_PERIPHERAL.PowerControl(ARM_POWER_FULL);
  /* Control of CMSIS USART */
  FLEXCOMM0_PERIPHERAL.Control(ARM_USART_MODE_ASYNCHRONOUS | ARM_USART_DATA_BITS_8 | ARM_USART_PARITY_NONE | ARM_USART_STOP_BITS_1, 230400);
  /* Enable or disable receiver. */
  FLEXCOMM0_PERIPHERAL.Control(ARM_USART_CONTROL_RX , 1);
  /* Enable or disable transmitter. */
  FLEXCOMM0_PERIPHERAL.Control(ARM_USART_CONTROL_TX , 1);
}&lt;/LI-CODE&gt;&lt;P&gt;As you can see, a user callback function &lt;STRONG&gt;USART0_SignalEvent&lt;/STRONG&gt; is registered for serial events (e.g. data received).&lt;/P&gt;&lt;P&gt;However, this functions is only called once when sending data out.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The issue here: The user callback function is not called when data is received by the MCU.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Why is this?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I can see in the debugger that the receive interrupt is called. The call stack is:&lt;/P&gt;&lt;P&gt;FLEXCOMM0_IRQHandler -&amp;gt;&amp;nbsp;FLEXCOMM0_DriverIRQHandler -&amp;gt;&amp;nbsp;USART_TransferHandleIRQ&lt;/P&gt;&lt;P&gt;in &lt;STRONG&gt;void USART_TransferHandleIRQ(USART_Type *base, usart_handle_t *handle)&lt;/STRONG&gt; the handle struct looks like:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="danielholala_0-1642176466281.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/167672i9937AE9A57AEF49E/image-size/large?v=v2&amp;amp;px=999" role="button" title="danielholala_0-1642176466281.png" alt="danielholala_0-1642176466281.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Received bytes have been stored in a RingBuffer&amp;nbsp;handle-&amp;gt;rxRingBuffer.&lt;BR /&gt;There are 3 bytes (handle-&amp;gt;rxRingBufferHead ==3).&lt;/P&gt;&lt;P&gt;The user callback &lt;STRONG&gt;USART0_SignalEvent&lt;/STRONG&gt; is stored in handle-&amp;gt;userData and is called from &lt;STRONG&gt;KSDK_USART_NonBlockingCallback()&lt;/STRONG&gt;&amp;nbsp;(aka &lt;STRONG&gt;handle-&amp;gt;callback)&amp;nbsp;&lt;/STRONG&gt;which in turn is called from &lt;STRONG&gt;USART_TransferHandleIRQ &lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;However, I do not see a call to &lt;STRONG&gt;handle-&amp;gt;callback&lt;/STRONG&gt; in the code for the "ringbuffer case". There's only a call to signal ringbuffer overflow:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;handle-&amp;gt;callback(base, handle, kStatus_USART_RxRingBufferOverrun, handle-&amp;gt;userData);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any idea what I might be missing here?&lt;/P&gt;</description>
      <pubDate>Fri, 14 Jan 2022 16:22:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1399558#M47638</guid>
      <dc:creator>danielholala</dc:creator>
      <dc:date>2022-01-14T16:22:22Z</dc:date>
    </item>
    <item>
      <title>Re: USART with CMSIS: no receive events</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1399744#M47645</link>
      <description>&lt;P&gt;I figured that the API is not designed as I expected it. From reading &lt;A href="https://docs.silabs.com/cmsis/latest/driver/theoryOperation" target="_self"&gt;other documents&lt;/A&gt; on CMSIS I gleaned that I might have to initiate a read transfer first using e.g.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT face="andale mono,times"&gt;int32_t ARM_USART_Receive ( void * data, uint32_t num )&lt;/FONT&gt; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;and then the&amp;nbsp;ARM_USART_EVENT_RECEIVE_COMPLETE&amp;nbsp; event will be triggered as soon as the requested bytes have been read.&lt;/P&gt;&lt;P&gt;I wonder how to use this API if a limited but unknown numbers of characters are to be read, e.g., when using a line based text procotol? If I read one character after another that's inefficient, if I request more characters than which will be send, the event does not trigger.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 16 Jan 2022 11:06:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1399744#M47645</guid>
      <dc:creator>danielholala</dc:creator>
      <dc:date>2022-01-16T11:06:12Z</dc:date>
    </item>
    <item>
      <title>Re: USART with CMSIS: no receive events</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1400314#M47662</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Hi, Daniel,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I have to admit the software architecture is complex.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;But I think this is the a clue to understand the code.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;#define DEMO_USART Driver_USART0&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;1)calling DEMO_USART.PowerControl(ARM_POWER_FULL); in main() is the same as calling&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;DEMO_USART.USART0_NonBlockingPowerControl(ARM_POWER_FULL);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;ARM_DRIVER_USART Driver_USART0 = {&lt;BR /&gt;USARTx_GetVersion, USARTx_GetCapabilities,&lt;BR /&gt;#if RTE_USART0_DMA_EN&lt;BR /&gt;USART0_DmaInitialize, USART0_DmaUninitialize, USART0_DmaPowerControl, USART0_DmaSend, USART0_DmaReceive,&lt;BR /&gt;USART0_DmaTransfer, USART0_DmaGetTxCount, USART0_DmaGetRxCount, USART0_DmaControl, USART0_DmaGetStatus,&lt;BR /&gt;#else&lt;BR /&gt;USART0_NonBlockingInitialize,&lt;BR /&gt;USART0_NonBlockingUninitialize,&lt;BR /&gt;USART0_NonBlockingPowerControl,&lt;BR /&gt;USART0_NonBlockingSend,&lt;BR /&gt;USART0_NonBlockingReceive,&lt;BR /&gt;USART0_NonBlockingTransfer,&lt;BR /&gt;USART0_NonBlockingGetTxCount,&lt;BR /&gt;USART0_NonBlockingGetRxCount,&lt;BR /&gt;USART0_NonBlockingControl,&lt;BR /&gt;USART0_NonBlockingGetStatus,&lt;BR /&gt;#endif&lt;BR /&gt;USARTx_SetModemControl, USARTx_GetModemStatus};&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;2)In the USART_NonBlockingPowerControl(), the USART_TransferCreateHandle(usart-&amp;gt;resource-&amp;gt;base, usart-&amp;gt;handle, KSDK_USART_NonBlockingCallback,&lt;BR /&gt;(void *)usart-&amp;gt;cb_event); is called.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;static int32_t USART_NonBlockingPowerControl(ARM_POWER_STATE state, cmsis_usart_non_blocking_driver_state_t *usart)&lt;BR /&gt;{&lt;BR /&gt;usart_config_t config;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;switch (state)&lt;BR /&gt;{&lt;BR /&gt;case ARM_POWER_OFF:&lt;BR /&gt;if (usart-&amp;gt;flags &amp;amp; USART_FLAG_POWER)&lt;BR /&gt;{&lt;BR /&gt;USART_Deinit(usart-&amp;gt;resource-&amp;gt;base);&lt;BR /&gt;usart-&amp;gt;flags = USART_FLAG_INIT;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;case ARM_POWER_LOW:&lt;BR /&gt;return ARM_DRIVER_ERROR_UNSUPPORTED;&lt;BR /&gt;case ARM_POWER_FULL:&lt;BR /&gt;/* Must be initialized first. */&lt;BR /&gt;if (usart-&amp;gt;flags == USART_FLAG_UNINIT)&lt;BR /&gt;{&lt;BR /&gt;return ARM_DRIVER_ERROR;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;if (usart-&amp;gt;flags &amp;amp; USART_FLAG_POWER)&lt;BR /&gt;{&lt;BR /&gt;/* Driver already powered */&lt;BR /&gt;break;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;USART_GetDefaultConfig(&amp;amp;config);&lt;BR /&gt;config.enableTx = true;&lt;BR /&gt;config.enableRx = true;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;USART_Init(usart-&amp;gt;resource-&amp;gt;base, &amp;amp;config, usart-&amp;gt;resource-&amp;gt;GetFreq());&lt;BR /&gt;USART_TransferCreateHandle(usart-&amp;gt;resource-&amp;gt;base, usart-&amp;gt;handle, KSDK_USART_NonBlockingCallback,&lt;BR /&gt;(void *)usart-&amp;gt;cb_event);&lt;BR /&gt;usart-&amp;gt;flags |= (USART_FLAG_POWER | USART_FLAG_CONFIGURED);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;break;&lt;BR /&gt;default:&lt;BR /&gt;return ARM_DRIVER_ERROR_UNSUPPORTED;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;return ARM_DRIVER_OK;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;3)In the USART_TransferCreateHandle(), the FLEXCOMM_SetIRQHandler() is called&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;status_t USART_TransferCreateHandle(USART_Type *base,&lt;BR /&gt;usart_handle_t *handle,&lt;BR /&gt;usart_transfer_callback_t callback,&lt;BR /&gt;void *userData)&lt;BR /&gt;{&lt;BR /&gt;/* Check 'base' */&lt;BR /&gt;assert(!((NULL == base) || (NULL == handle)));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;uint32_t instance = 0;&lt;BR /&gt;usart_to_flexcomm_t handler;&lt;BR /&gt;handler.usart_master_handler = USART_TransferHandleIRQ;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;if ((NULL == base) || (NULL == handle))&lt;BR /&gt;{&lt;BR /&gt;return kStatus_InvalidArgument;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;instance = USART_GetInstance(base);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;(void)memset(handle, 0, sizeof(*handle));&lt;BR /&gt;/* Set the TX/RX state. */&lt;BR /&gt;handle-&amp;gt;rxState = (uint8_t)kUSART_RxIdle;&lt;BR /&gt;handle-&amp;gt;txState = (uint8_t)kUSART_TxIdle;&lt;BR /&gt;/* Set the callback and user data. */&lt;BR /&gt;handle-&amp;gt;callback = callback;&lt;BR /&gt;handle-&amp;gt;userData = userData;&lt;BR /&gt;handle-&amp;gt;rxWatermark = (uint8_t)USART_FIFOTRIG_RXLVL_GET(base);&lt;BR /&gt;handle-&amp;gt;txWatermark = (uint8_t)USART_FIFOTRIG_TXLVL_GET(base);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;FLEXCOMM_SetIRQHandler(base, handler.flexcomm_handler, handle);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/* Enable interrupt in NVIC. */&lt;BR /&gt;(void)EnableIRQ(s_usartIRQ[instance]);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;return kStatus_Success;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;typedef union usart_to_flexcomm&lt;BR /&gt;{&lt;BR /&gt;flexcomm_usart_irq_handler_t usart_master_handler;&lt;BR /&gt;flexcomm_irq_handler_t flexcomm_handler;&lt;BR /&gt;} usart_to_flexcomm_t;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;4)In the FLEXCOMM_SetIRQHandler(), the&amp;nbsp;s_flexcommIrqHandler[instance] is initialized by handler;, the s_flexcommIrqHandler[instance] is called by USART ISR.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;void FLEXCOMM_SetIRQHandler(void *base, flexcomm_irq_handler_t handler, void *handle)&lt;BR /&gt;{&lt;BR /&gt;uint32_t instance;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/* Look up instance number */&lt;BR /&gt;instance = FLEXCOMM_GetInstance(base);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/* Clear handler first to avoid execution of the handler with wrong handle */&lt;BR /&gt;s_flexcommIrqHandler[instance] = NULL;&lt;BR /&gt;s_flexcommHandle[instance] = handle;&lt;BR /&gt;s_flexcommIrqHandler[instance] = handler;&lt;BR /&gt;SDK_ISR_EXIT_BARRIER;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;5) in the end, the &lt;/SPAN&gt;&lt;STRONG&gt;USART_TransferHandleIRQ() is called by ISR&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;USART_TransferHandleIRQ&lt;/STRONG&gt;(USART_Type *base, usart_handle_t *handle)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check arguments */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert((NULL != base) &amp;amp;&amp;amp; (NULL != handle));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool receiveEnabled = ((handle-&amp;gt;rxDataSize != 0U) || (handle-&amp;gt;rxRingBuffer != NULL));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool sendEnabled&amp;nbsp;&amp;nbsp;&amp;nbsp; = (handle-&amp;gt;txDataSize != 0U);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t rxdata;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; size_t tmpsize;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If RX overrun. */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_RXERR_MASK) != 0U)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear &lt;U&gt;rx&lt;/U&gt; error state. */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;FIFOSTAT |= USART_FIFOSTAT_RXERR_MASK;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* clear rxFIFO */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;FIFOCFG |= USART_FIFOCFG_EMPTYRX_MASK;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Trigger callback. */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (handle-&amp;gt;callback != NULL)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; handle-&amp;gt;callback(base, handle, &lt;EM&gt;kStatus_USART_RxError&lt;/EM&gt;, handle-&amp;gt;userData);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;while&lt;/STRONG&gt; ((receiveEnabled &amp;amp;&amp;amp; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_RXNOTEMPTY_MASK) != 0U)) ||&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; (sendEnabled &amp;amp;&amp;amp; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_TXNOTFULL_MASK) != 0U)))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive data */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (receiveEnabled &amp;amp;&amp;amp; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_RXNOTEMPTY_MASK) != 0U))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; /* Receive to &lt;U&gt;app&lt;/U&gt; &lt;U&gt;bufffer&lt;/U&gt; if &lt;U&gt;app&lt;/U&gt; buffer is present */&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; &lt;STRONG&gt;if&lt;/STRONG&gt; (handle-&amp;gt;rxDataSize != 0U)&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; {&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;&amp;nbsp;&amp;nbsp; rxdata&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (uint8_t)base-&amp;gt;FIFORD;&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;&amp;nbsp;&amp;nbsp; *handle-&amp;gt;rxData = rxdata;&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;&amp;nbsp;&amp;nbsp; handle-&amp;gt;rxDataSize--;&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;&amp;nbsp;&amp;nbsp; handle-&amp;gt;rxData++;&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;&amp;nbsp;&amp;nbsp; receiveEnabled = ((handle-&amp;gt;rxDataSize != 0U) || (handle-&amp;gt;rxRingBuffer != NULL));&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;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (0U == handle-&amp;gt;rxDataSize)&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;&amp;nbsp;&amp;nbsp; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (NULL == handle-&amp;gt;rxRingBuffer)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;FIFOINTENCLR = USART_FIFOINTENCLR_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handle-&amp;gt;rxState = (uint8_t)&lt;EM&gt;kUSART_RxIdle&lt;/EM&gt;;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (handle-&amp;gt;callback != NULL)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handle-&amp;gt;callback(base, handle, &lt;EM&gt;kStatus_USART_RxIdle&lt;/EM&gt;, handle-&amp;gt;userData);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;&amp;nbsp;&amp;nbsp; }&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; }&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; /* Otherwise receive to ring buffer if ring buffer is present */&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; &lt;STRONG&gt;else&lt;/STRONG&gt;&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; {&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;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (handle-&amp;gt;rxRingBuffer != NULL)&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;&amp;nbsp;&amp;nbsp; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If RX ring buffer is full, trigger callback to notify over run. */&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (USART_TransferIsRxRingBufferFull(handle))&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (handle-&amp;gt;callback != NULL)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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;&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; handle-&amp;gt;callback(base, handle, &lt;EM&gt;kStatus_USART_RxRingBufferOverrun&lt;/EM&gt;, handle-&amp;gt;userData);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If ring buffer is still full after callback function, the oldest data is overridden. */&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (USART_TransferIsRxRingBufferFull(handle))&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Increase handle-&amp;gt;rxRingBufferTail to make room for new data. */&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; ((size_t)handle-&amp;gt;rxRingBufferTail + 1U == handle-&amp;gt;rxRingBufferSize)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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;&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; handle-&amp;gt;rxRingBufferTail = 0U;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;else&lt;/STRONG&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&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; handle-&amp;gt;rxRingBufferTail++;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Read data. */&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxdata&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (uint8_t)base-&amp;gt;FIFORD;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;handle-&amp;gt;rxRingBuffer[handle-&amp;gt;rxRingBufferHead] = rxdata;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Increase handle-&amp;gt;rxRingBufferHead. */&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; ((size_t)handle-&amp;gt;rxRingBufferHead + 1U == handle-&amp;gt;rxRingBufferSize)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handle-&amp;gt;rxRingBufferHead = 0U;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;else&lt;/STRONG&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handle-&amp;gt;rxRingBufferHead++;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&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;&amp;nbsp;&amp;nbsp; }&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; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Send data */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (sendEnabled &amp;amp;&amp;amp; ((base-&amp;gt;FIFOSTAT &amp;amp; USART_FIFOSTAT_TXNOTFULL_MASK) != 0U))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; base-&amp;gt;FIFOWR = *handle-&amp;gt;txData;&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; handle-&amp;gt;txDataSize--;&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; handle-&amp;gt;txData++;&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; sendEnabled = handle-&amp;gt;txDataSize != 0U;&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; &lt;STRONG&gt;if&lt;/STRONG&gt; (!sendEnabled)&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; {&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;&amp;nbsp;&amp;nbsp; base-&amp;gt;FIFOINTENCLR = USART_FIFOINTENCLR_TXLVL_MASK;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; base-&amp;gt;INTENSET = USART_INTENSET_TXIDLEEN_MASK;&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; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;U&gt;Tx&lt;/U&gt; idle and the interrupt is enabled. */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; ((0U != (base-&amp;gt;INTENSET &amp;amp; USART_INTENSET_TXIDLEEN_MASK)) &amp;amp;&amp;amp; (0U != (base-&amp;gt;INTSTAT &amp;amp; USART_INTSTAT_TXIDLE_MASK)))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set txState to idle only when all data has been sent out to bus. */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handle-&amp;gt;txState = (uint8_t)&lt;EM&gt;kUSART_TxIdle&lt;/EM&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable &lt;U&gt;tx&lt;/U&gt; idle interrupt */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;INTENCLR = USART_INTENCLR_TXIDLECLR_MASK;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Trigger callback. */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (handle-&amp;gt;callback != NULL)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; handle-&amp;gt;callback(base, handle, &lt;EM&gt;kStatus_USART_TxIdle&lt;/EM&gt;, handle-&amp;gt;userData);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ring buffer is not used */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (NULL == handle-&amp;gt;rxRingBuffer)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmpsize = handle-&amp;gt;rxDataSize;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* restore if &lt;U&gt;rx&lt;/U&gt; transfer ends and rxLevel is different from default value */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; ((tmpsize == 0U) &amp;amp;&amp;amp; (USART_FIFOTRIG_RXLVL_GET(base) != handle-&amp;gt;rxWatermark))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; base-&amp;gt;FIFOTRIG =&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;&amp;nbsp;&amp;nbsp; (base-&amp;gt;FIFOTRIG &amp;amp; (~USART_FIFOTRIG_RXLVL_MASK)) | USART_FIFOTRIG_RXLVL(handle-&amp;gt;rxWatermark);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* decrease level if &lt;U&gt;rx&lt;/U&gt; transfer is bellow */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; ((tmpsize != 0U) &amp;amp;&amp;amp; (tmpsize &amp;lt; (USART_FIFOTRIG_RXLVL_GET(base) + 1U)))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; base-&amp;gt;FIFOTRIG = (base-&amp;gt;FIFOTRIG &amp;amp; (~USART_FIFOTRIG_RXLVL_MASK)) | (USART_FIFOTRIG_RXLVL(tmpsize - 1U));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Hope it can help you&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;BR&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;XiangJun Rong&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Jan 2022 13:22:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1400314#M47662</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2022-01-17T13:22:06Z</dc:date>
    </item>
    <item>
      <title>Re: USART with CMSIS: no receive events</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471264#M49109</link>
      <description>&lt;P&gt;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/139806"&gt;@danielholala&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I am using LPC55Sxx controller and facing similar kind of the issue. Did you get any solution?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/26034"&gt;@xiangjun_rong&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In my case, I am sending large data file from LPC55xx to the other controller over USART. I am receiving few data from other controller to the LPC55xx during sending file.&lt;/P&gt;&lt;P&gt;Many times LPC55xx able to receive the data but sometime not getting expected data and&lt;STRONG&gt;&amp;nbsp;rxState is set&amp;nbsp; kUSART_RxBusy&lt;/STRONG&gt; in _usart_handle structure. After that&amp;nbsp;&lt;STRONG&gt;rxState does not set as kUSART_RxIdle. &lt;/STRONG&gt;It is indicates that not getting USART Rx interrupt. (Not calling the&amp;nbsp; USART_TransferHandleIRQ() where we are expecting to set&amp;nbsp;&lt;STRONG&gt;kUSART_RxIdle &lt;/STRONG&gt;after getting all remaining data).&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jun 2022 07:16:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471264#M49109</guid>
      <dc:creator>DineshRibadiya</dc:creator>
      <dc:date>2022-06-09T07:16:44Z</dc:date>
    </item>
    <item>
      <title>Re: USART with CMSIS: no receive events</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471323#M49110</link>
      <description>&lt;P&gt;I suppose you get a receive error your interrupt handler does not handle.&lt;/P&gt;&lt;P&gt;In most USART implementation I know, one needs to check for Rx errors and reset the respective flag explicitly, or else reception does not resume.&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jun 2022 08:38:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471323#M49110</guid>
      <dc:creator>frank_m</dc:creator>
      <dc:date>2022-06-09T08:38:34Z</dc:date>
    </item>
    <item>
      <title>Re: USART with CMSIS: no receive events</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471517#M49116</link>
      <description>&lt;P&gt;hello Frank,&lt;/P&gt;&lt;P&gt;Thanks for the prompt response!&lt;/P&gt;&lt;P&gt;I am handling the&amp;nbsp;USART_FIFOSTAT_RXERR_MASK. please refer below image and suggest me if i am missing anything else.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DineshRibadiya_0-1654780400620.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/182797i184D990881807F27/image-size/medium?v=v2&amp;amp;px=400" role="button" title="DineshRibadiya_0-1654780400620.png" alt="DineshRibadiya_0-1654780400620.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jun 2022 13:14:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471517#M49116</guid>
      <dc:creator>DineshRibadiya</dc:creator>
      <dc:date>2022-06-09T13:14:35Z</dc:date>
    </item>
    <item>
      <title>Re: USART with CMSIS: no receive events</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471542#M49117</link>
      <description>&lt;P&gt;I would use the debugger, and check if any UART or FIFO&amp;nbsp; error flag is set in peripheral registers when reception stops.&lt;/P&gt;&lt;P&gt;To be honest, it is years since I worked on UART code for NXP MCUs the last time. I did a lot with other devices, many without FIFO (some rely on DMA instead).&lt;/P&gt;&lt;P&gt;UART is not really "CMSIS", i.e. there is hardly anything common amongst vendors, the concepts and register interface is highly specific. Perhaps you need the USART section of the MCU's&amp;nbsp; user manual for reference.&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jun 2022 13:35:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471542#M49117</guid>
      <dc:creator>frank_m</dc:creator>
      <dc:date>2022-06-09T13:35:55Z</dc:date>
    </item>
    <item>
      <title>Re: USART with CMSIS: no receive events</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471645#M49119</link>
      <description>&lt;P&gt;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/137574"&gt;@frank_m&lt;/a&gt;&amp;nbsp;I go through the other post and found the that, it is same issue which is i am facing.&lt;/P&gt;&lt;P&gt;I have made changes as per below image. I see some improvement but getting still same issue. I would appreciate your suggession.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DineshRibadiya_0-1654790921540.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/182821iE3EF696FDDBF0A4B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="DineshRibadiya_0-1654790921540.png" alt="DineshRibadiya_0-1654790921540.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jun 2022 16:09:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471645#M49119</guid>
      <dc:creator>DineshRibadiya</dc:creator>
      <dc:date>2022-06-09T16:09:30Z</dc:date>
    </item>
    <item>
      <title>Re: USART with CMSIS: no receive events</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471980#M49125</link>
      <description>&lt;P&gt;Perhaps it's just a plain data size issue. The rxState member is set in fsl_uart.c in the following manner:&lt;/P&gt;&lt;LI-CODE lang="c"&gt;if (bytesToReceive != 0U)
{
    /* No data in ring buffer, save the request to UART handle. */
    ...
    handle-&amp;gt;rxState = (uint8_t)kUSART_RxBusy;
}&lt;/LI-CODE&gt;&lt;P&gt;If your data size is not exactly a multiple of the DMA or FIFO block size, there is always a problem with&amp;nbsp; the last package. Or, when characters are lost.&lt;/P&gt;&lt;P&gt;This is why I prefer single-character interrupts for asynchronous reception.&lt;/P&gt;</description>
      <pubDate>Fri, 10 Jun 2022 05:04:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USART-with-CMSIS-no-receive-events/m-p/1471980#M49125</guid>
      <dc:creator>frank_m</dc:creator>
      <dc:date>2022-06-10T05:04:51Z</dc:date>
    </item>
  </channel>
</rss>

