<?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 Re: Kinetis UART TX DMA Transmit Complete Interrupt fails occasionally in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505137#M31683</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Julian,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your configurations seems to be ok, however, it is very difficult to find a solution without recreate the problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My advice is to wait for the MCU to fails, and once it fails attach the debugger to the running MCU. This will let you debug your system and look for the problem once the problem has been generated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://mcuoneclipse.com/2015/03/20/attaching-to-a-running-target-with-segger-j-link-gdb-and-eclipse/" title="http://mcuoneclipse.com/2015/03/20/attaching-to-a-running-target-with-segger-j-link-gdb-and-eclipse/"&gt;Attaching to a Running Target with Segger J-Link, GDB and Eclipse | MCU on Eclipse&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please let me know if this solution is helpful for you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Earl.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 13 Feb 2016 00:04:44 GMT</pubDate>
    <dc:creator>EarlOrlando</dc:creator>
    <dc:date>2016-02-13T00:04:44Z</dc:date>
    <item>
      <title>Kinetis UART TX DMA Transmit Complete Interrupt fails occasionally</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505136#M31682</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 UART driver on a Kinetis K10DX using DMA to TX and single character interrupt for the RX.&lt;/P&gt;&lt;P&gt;It all works just fine but occasionally, very occasionally (like 10 days), it appears the Transmit Complete interrupt fails to fire causing us some problems.&lt;/P&gt;&lt;P&gt;I've poured over the code and put debug code in to try to re-create the problem without success.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I could put in a work around to check the state of TCFIFO after a timeout but this sound like a bit of a hack.&lt;/P&gt;&lt;P&gt;I think the question are:&lt;/P&gt;&lt;P&gt;1) Has anyone else had issues with the Transmit Complete interrupt (UART_S1_TC)?&lt;/P&gt;&lt;P&gt;2) Does anyone have any suggestions for a fix or a robust work around?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Here are the relevant bits of the driver:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;// ===================================================================&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;// UART TX send buffer&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;// ===================================================================&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;void Uart0_TxBuff(UCHAR* buffer, USHORT length)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; DMA_TCD2_BITER_ELINKNO = DMA_BITER_ELINKNO_BITER(length);&amp;nbsp;&amp;nbsp; // set beginning loop count&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; DMA_TCD2_CITER_ELINKNO = DMA_CITER_ELINKNO_CITER(length);&amp;nbsp;&amp;nbsp; // set loop current count&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; DMA_TCD2_SADDR = (ULONG)buffer;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set source address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; DMA_SERQ = UART0_CHANNEL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set enable request&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; UART0_C2 |= UART_C2_TCIE_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable TX complete interrupts&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;// ===================================================================&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;// UART TX/RX Interrupt&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;// ===================================================================&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;void UART0_RX_TX_IRQHandler()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; UCHAR data;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; UCHAR statReg1 = UART0_S1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // save status register&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; if (statReg1 &amp;amp; (UART_S1_OR_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // is any error flag set?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&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; | UART_S1_NF_MASK&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&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; | UART_S1_FE_MASK&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&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; | UART_S1_PF_MASK))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data = UART0_D;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // consume any data and ignore it&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; else if (statReg1 &amp;amp; UART_S1_RDRF_MASK)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // is RX data available?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data = UART0_D;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get data&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxFunction(data);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send client the received character&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; if ((UART0_C2 &amp;amp; UART_C2_TCIE_MASK) &amp;amp;&amp;amp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // is TX complete enabled and&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (statReg1 &amp;amp; UART_S1_TC_MASK))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // is TX complete?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0_C2 &amp;amp;= ~UART_C2_TCIE_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // disable TX complete interrupts&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseCompleteFunction();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // notify client transmission complete&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; font-size: 8pt;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Feb 2016 15:39:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505136#M31682</guid>
      <dc:creator>julian_morrison</dc:creator>
      <dc:date>2016-02-11T15:39:10Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis UART TX DMA Transmit Complete Interrupt fails occasionally</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505137#M31683</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Julian,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your configurations seems to be ok, however, it is very difficult to find a solution without recreate the problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My advice is to wait for the MCU to fails, and once it fails attach the debugger to the running MCU. This will let you debug your system and look for the problem once the problem has been generated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://mcuoneclipse.com/2015/03/20/attaching-to-a-running-target-with-segger-j-link-gdb-and-eclipse/" title="http://mcuoneclipse.com/2015/03/20/attaching-to-a-running-target-with-segger-j-link-gdb-and-eclipse/"&gt;Attaching to a Running Target with Segger J-Link, GDB and Eclipse | MCU on Eclipse&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please let me know if this solution is helpful for you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Earl.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 13 Feb 2016 00:04:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505137#M31683</guid>
      <dc:creator>EarlOrlando</dc:creator>
      <dc:date>2016-02-13T00:04:44Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis UART TX DMA Transmit Complete Interrupt fails occasionally</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505138#M31684</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Earl,&lt;/P&gt;&lt;P&gt;Its good to know that at least there is nothing fundamentally wrong with the code.&lt;/P&gt;&lt;P&gt;It's going to be tricky getting access to the debug port as the modules are embedded in our system.&lt;/P&gt;&lt;P&gt;However, lets see what this shows up.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers, Julian&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Feb 2016 10:18:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505138#M31684</guid>
      <dc:creator>julian_morrison</dc:creator>
      <dc:date>2016-02-15T10:18:56Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis UART TX DMA Transmit Complete Interrupt fails occasionally</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505139#M31685</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Earl,&lt;/P&gt;&lt;P&gt;I managed to capture some register details after the event.&lt;/P&gt;&lt;P&gt;It appears that there is no DMA error, no UART error, DMA has completed and the FIFO is empty. The TC complete flag is set and TCIE is reset suggesting that the interrupt had occurred but the responseCompleteFunction had not been called??&lt;/P&gt;&lt;P&gt;Here are the contents of the registers I managed to log:&lt;/P&gt;&lt;P&gt;C1&amp;nbsp;&amp;nbsp; 0x00&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;:C2&amp;nbsp;&amp;nbsp; 0xAC&amp;nbsp; TIE,RIE,TE,RE (TCIE disabled)&amp;nbsp; &lt;/P&gt;&lt;P&gt;:C3&amp;nbsp;&amp;nbsp; 0x0F&amp;nbsp; errors enabled&amp;nbsp; &lt;/P&gt;&lt;P&gt;:C4&amp;nbsp;&amp;nbsp; 0x03&amp;nbsp; BRFA&amp;nbsp; &lt;/P&gt;&lt;P&gt;C5&amp;nbsp;&amp;nbsp; 0x80&amp;nbsp; TDMAS&amp;nbsp; &lt;/P&gt;&lt;P&gt;:C6&amp;nbsp;&amp;nbsp; 0x00&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;BDL&amp;nbsp;&amp;nbsp; 0x41&amp;nbsp; 19.2k,20MHz&amp;nbsp; &lt;/P&gt;&lt;P&gt;:BDH&amp;nbsp;&amp;nbsp; 0x00&amp;nbsp; RXEDGIE disabled&amp;nbsp; &lt;/P&gt;&lt;P&gt;S1&amp;nbsp;&amp;nbsp; 0xD0&amp;nbsp; TDRE,TC,IDLE&amp;nbsp; &lt;/P&gt;&lt;P&gt;:S2&amp;nbsp;&amp;nbsp; 0x40&amp;nbsp; RXEDGIF (not enabled)&amp;nbsp; &lt;/P&gt;&lt;P&gt;SFIFO&amp;nbsp;&amp;nbsp; 0xC0&amp;nbsp; TXEMPT,RXEMPT&amp;nbsp; &lt;/P&gt;&lt;P&gt;:CFIFO&amp;nbsp;&amp;nbsp; 0x00&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;:PFIFO&amp;nbsp;&amp;nbsp; 0xAA&amp;nbsp; fifo's enabled&amp;nbsp; &lt;/P&gt;&lt;P&gt;RCFIFO&amp;nbsp;&amp;nbsp; 0x00&amp;nbsp; RX fifo empty&amp;nbsp; &lt;/P&gt;&lt;P&gt;:RWFIFO&amp;nbsp;&amp;nbsp; 0x01&amp;nbsp; wmark = 1&amp;nbsp; &lt;/P&gt;&lt;P&gt;:TCFIFO&amp;nbsp;&amp;nbsp; 0x00&amp;nbsp; TX fifo empty&amp;nbsp; &lt;/P&gt;&lt;P&gt;:TWFIFO&amp;nbsp;&amp;nbsp; 0x01&amp;nbsp; wmark = 1&amp;nbsp; &lt;/P&gt;&lt;P&gt;TCD2_SADDR&amp;nbsp; 0x1FFFE738&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;CITER_ELINKNO&amp;nbsp; 0x0019&amp;nbsp; TX length&amp;nbsp; &lt;/P&gt;&lt;P&gt;:BITER_ELINKNO&amp;nbsp; 0x0019&amp;nbsp; TX length&amp;nbsp; &lt;/P&gt;&lt;P&gt;TCD2_CSR&amp;nbsp; 0x0088&amp;nbsp; DONE,DREQ&amp;nbsp; &lt;/P&gt;&lt;P&gt;:DMA_ERR&amp;nbsp; 0x0000&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;DMA_ES&amp;nbsp;&amp;nbsp; 0x0000&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;DMA_CR&amp;nbsp;&amp;nbsp; 0x0084&amp;nbsp; EMLM(???),ERCA&amp;nbsp; &lt;/P&gt;&lt;P&gt;NBYTES_MLOFFYES&amp;nbsp; 0x80000401 SMLOE,MLOFF=1,NBYTES=1 &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We need to fix this urgently as it is becoming an serious issue for our customers.&lt;/P&gt;&lt;P&gt;In desperation I am thinking of trying the following:&lt;/P&gt;&lt;P&gt;a) Turning off the RX/TX FIFO's&lt;/P&gt;&lt;P&gt;b) Using DMA complete interrupt instead of UART TC interrupt&lt;/P&gt;&lt;P&gt;c) Not using DMA at all and ship the data out one character at a time!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you see anything that may be causing the problem or think of anything else?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers, Julian&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Feb 2016 14:00:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505139#M31685</guid>
      <dc:creator>julian_morrison</dc:creator>
      <dc:date>2016-02-17T14:00:34Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis UART TX DMA Transmit Complete Interrupt fails occasionally</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505140#M31686</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Julian,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is it possible to confirm that the responseCompleteFunction is not being called? It could be achieved through some LEDs or some flags (i.e. setting it before to call this function and clearing it inside the function).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Honestly, starting from this information, this behavior is very odd. I don't think this is happening but supposing that the interrupt handler is being executed, then it would mean that the TX flag is being cleared outside this function. Please double check that there is not another instruction in the code that is doing this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At this moment, the only workaround that comes to mi mind is to do the same as the responseCompleteFunction does in the IRQ before to clear the TX interrupts.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Earl.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Feb 2016 23:16:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505140#M31686</guid>
      <dc:creator>EarlOrlando</dc:creator>
      <dc:date>2016-02-17T23:16:28Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis UART TX DMA Transmit Complete Interrupt fails occasionally</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505141#M31687</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Earl,&lt;/P&gt;&lt;P&gt;I believe I have found the problem. After putting counters in the entry and exit of the ISR and callback I see that that the callback is being called!! I believe I have an issue with the state machine being pre-empted by the ISR which I can fix. I shall mark your last response as Correct Answer.&lt;/P&gt;&lt;P&gt;Thanks you so much for your assistance and patience :-)&lt;/P&gt;&lt;P&gt;Cheers, Julian&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Feb 2016 14:01:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-UART-TX-DMA-Transmit-Complete-Interrupt-fails/m-p/505141#M31687</guid>
      <dc:creator>julian_morrison</dc:creator>
      <dc:date>2016-02-18T14:01:51Z</dc:date>
    </item>
  </channel>
</rss>

