<?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 K20 UART TX with DMA in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K20-UART-TX-with-DMA/m-p/286281#M11052</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I found an error in configuration. It was a problem with DMAMUX_UART1_SLOT constant value which was wrong. Manual says that it should be a source number (slot) and I defined constat by slot nr. of peripheral which is 107 instead of source number which is under DMA_MUX0 section as number 5. After that change DMA works just fine. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 25 Jul 2013 07:08:06 GMT</pubDate>
    <dc:creator>Nixon</dc:creator>
    <dc:date>2013-07-25T07:08:06Z</dc:date>
    <item>
      <title>Kinetis K20 UART TX with DMA</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K20-UART-TX-with-DMA/m-p/286278#M11049</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;Hi,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;I am currently working on small project and I would like to use DMA for UART transmission.&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12px; line-height: 1.5em;"&gt;My current configuration is not working properly. I configured everything and in interrupt mode my UART TX is working ok but not with DMA. DMA always transfers only one byte.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;I would be really grateful for any help. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;Here is my code for transfering 4 bytes from memory to UART: &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-size: 12px; font-family: 'courier new', courier;"&gt; // Enable DMA clocks&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; SIM-&amp;gt;SCGC6 |= SIM_SCGC6_DMAMUX_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; SIM-&amp;gt;SCGC7 |= SIM_SCGC7_DMA_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; // Enable UART1, PORT clocks, and TX line&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; // configure TX pin&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; SIM-&amp;gt;SCGC5 |=&amp;nbsp; SIM_SCGC5_PORTE_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; PORTE-&amp;gt;PCR[0] &amp;amp;= ~PORT_PCR_MUX_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; PORTE-&amp;gt;PCR[0] |= PORT_PCR_MUX(GPIO_AF_ALT3);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; SIM-&amp;gt;SCGC4 |= SIM_SCGC4_UART1_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; br_mpx = __UART_BRR(48000000, 9600);&amp;nbsp;&amp;nbsp; // calculate baud rate mpx from desired clock&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; // clear baud rate registers&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;BDH &amp;amp;= ~(UART_BDH_SBR_MASK);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;BDL = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; // set baud rate&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;BDH |= HI_BYTE(br_mpx);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;BDL |= LO_BYTE(br_mpx);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; // Set baud rate&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;C1&amp;nbsp; = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; // Set FIFO water marks &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;TWFIFO = UART_TWFIFO_TXWATER(1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;RWFIFO = UART_RWFIFO_RXWATER(1);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; // Enable transmitter&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;C2 = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;C2 |= UART_C2_TE_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;S2 = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;C3 = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; // Configure TX DMA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMAMUX-&amp;gt;CHCFG[0] &amp;amp;= ~(DMAMUX_CHCFG_ENBL_MASK);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;CR = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMAMUX-&amp;gt;CHCFG[0] = DMAMUX_CHCFG_SOURCE(DMAMUX_UART1_SLOT);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;C2 |= UART_C2_TIE_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; UART1-&amp;gt;C5 |= UART_C5_TDMAS_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].BITER_ELINKNO = 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].CITER_ELINKNO = 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].SADDR = (uint32_t) &amp;amp;data_in[0];&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].ATTR = DMA_ATTR_SMOD(8) | DMA_ATTR_SSIZE(0) | DMA_ATTR_DMOD(0) | DMA_ATTR_DSIZE(0);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].SOFF = 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].NBYTES_MLNO = 4;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].SLAST = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].DADDR = (uint32_t) &amp;amp;(UART1-&amp;gt;D);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].DOFF = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].DLAST_SGA = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;ERQ &amp;amp;= ~DMA_ERQ_ERQ0_MASK; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMAMUX-&amp;gt;CHCFG[0] |= DMAMUX_CHCFG_ENBL_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; NVIC_EnableIRQ(DMA0_IRQn);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; DMA0-&amp;gt;TCD[0].CSR = DMA_CSR_DREQ_MASK | DMA_CSR_DONE_MASK | DMA_CSR_INTMAJOR_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px; font-family: 'courier new', courier; color: #3d3d3d;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-size: 12px; font-family: 'courier new', courier;"&gt;&amp;nbsp; DMA0-&amp;gt;ERQ |= DMA_ERQ_ERQ0_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Jul 2013 05:07:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K20-UART-TX-with-DMA/m-p/286278#M11049</guid>
      <dc:creator>Nixon</dc:creator>
      <dc:date>2013-07-23T05:07:57Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis K20 UART TX with DMA</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K20-UART-TX-with-DMA/m-p/286279#M11050</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The number of bytes to transfer is controlled by DMA_TCD_BITER_ELINK and DMA_TCD_CITER_ELINK so it seems correct that the above nitialisation would only send 1 byte.&lt;/P&gt;&lt;P&gt;Each time there is a buffer ready for transmission the length needs to be configured accordingly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Example from the uTasker Kinetis project:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;// Start transfer of a block via DMA&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;//&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;extern QUEUE_TRANSFER fnTxByteDMA(QUEUE_HANDLE channel, unsigned char *ptrStart, QUEUE_TRANSFER tx_length)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; KINETIS_DMA_TDC *ptrDMA_TCD = (KINETIS_DMA_TDC *)eDMA_DESCRIPTORS;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD += UART_DMA_TX_CHANNEL[channel];&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_BITER_ELINK = ptrDMA_TCD-&amp;gt;DMA_TCD_CITER_ELINK = tx_length; // the number of service requests (the number of bytes to be transferred)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_SADDR = (unsigned long)ptrStart;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // source is tty output buffer&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_ERQ |= (DMA_ERQ_ERQ0 &amp;lt;&amp;lt; UART_DMA_TX_CHANNEL[channel]);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable request source&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tx_length;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Note that the uTasker project [&lt;A href="http://www.utasker.com/kinetis.html"&gt;http://www.utasker.com/kinetis.html&lt;/A&gt;] supports Rx and Tx DMA on all 6 UARTs. Its Kinetis simulator also simulates the UART DMA operation to allow simple analysis and testing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Jul 2013 21:40:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K20-UART-TX-with-DMA/m-p/286279#M11050</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2013-07-23T21:40:36Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis K20 UART TX with DMA</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K20-UART-TX-with-DMA/m-p/286280#M11051</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks for your reply. I tried to modify my code in way you proposed so here it is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My data source is defined as:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; uint8_t data_in[16];&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; for (idx = 0; idx&amp;lt;16; idx++) {&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_in[idx] = 65 + idx;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; }&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and code as follows (except UART initialization part which is ok):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; ch = 0;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; // Clear all TCDs.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; memset((void*)(&amp;amp;DMA0-&amp;gt;TCD[ch]), 0, sizeof(DMA0-&amp;gt;TCD));&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].SADDR = (uint32_t) &amp;amp;data_in[0];&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].SOFF = 1;//DMA_SOFF_SOFF(1);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].SLAST = 0;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].DADDR = (uint32_t) &amp;amp;(UART1-&amp;gt;D);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].DOFF = DMA_DOFF_DOFF(0);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].DLAST_SGA = 0;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].NBYTES_MLNO = 1;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].BITER_ELINKNO = 0;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].CITER_ELINKNO = 0;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMAMUX-&amp;gt;CHCFG[ch] = DMAMUX_CHCFG_SOURCE(DMAMUX_UART1_SLOT);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMAMUX-&amp;gt;CHCFG[ch] |= DMAMUX_CHCFG_ENBL_MASK;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].CSR = DMA_CSR_DREQ_MASK | DMA_CSR_INTMAJOR_MASK ;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; NVIC_EnableIRQ(DMA0_IRQn);&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].BITER_ELINKNO = DMA_BITER_ELINKNO_BITER(4);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].CITER_ELINKNO = DMA_CITER_ELINKNO_CITER(4);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;TCD[ch].CSR |=&amp;nbsp; DMA_CSR_START_MASK;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; DMA0-&amp;gt;ERQ = DMA_ERQ_ERQ0_MASK &amp;lt; ch;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;My request is to transfer four bytes but all I get is still a single char which is really strange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Jul 2013 05:37:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K20-UART-TX-with-DMA/m-p/286280#M11051</guid>
      <dc:creator>Nixon</dc:creator>
      <dc:date>2013-07-24T05:37:55Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis K20 UART TX with DMA</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K20-UART-TX-with-DMA/m-p/286281#M11052</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I found an error in configuration. It was a problem with DMAMUX_UART1_SLOT constant value which was wrong. Manual says that it should be a source number (slot) and I defined constat by slot nr. of peripheral which is 107 instead of source number which is under DMA_MUX0 section as number 5. After that change DMA works just fine. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Jul 2013 07:08:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-K20-UART-TX-with-DMA/m-p/286281#M11052</guid>
      <dc:creator>Nixon</dc:creator>
      <dc:date>2013-07-25T07:08:06Z</dc:date>
    </item>
  </channel>
</rss>

