<?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: UART DMA K64f in MQX Software Solutions</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444288#M14868</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Thanks &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland" rel="nofollow noopener noreferrer" target="_blank"&gt;mjbcswitzerland&lt;/A&gt;​,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;In your code you said:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_DADDR = (unsigned long)(GPIOC_PTOR_ADD);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // destination is port C toggle register&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;It marks PORT C toggle Register as the destination for DMA but what I want is PIN NOT PORT to toggle, How is that achieved ? &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;On simlar lines, I have my code here (See RED comment below):&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e23d39; font-size: 12px; font-family: Consolas, 'Courier New', Courier, mono, serif;"&gt;//I WANT TO SET PTE 8 as my destination, how do I do that ? ? ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14504548291143327 jive_text_macro" data-renderedposition="152_8_1232_1073" jivemacro_uid="_14504548291143327"&gt;&lt;P&gt;void UART3_to_UART5_DMA_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Let us DISABLE DMA channel so that we can change the source and then ENABLE it */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG2 = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; /*Enable DMA MUX ch 0&amp;nbsp; For DMAMUX channel Cfg Src, Please see Page:94 of USer Manual of K64 here: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94" rel="nofollow noopener noreferrer" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMAMUX_CHCFG2 |= DMAMUX_CHCFG_SOURCE(51); //Enable channel 51, Request souurce = PTC16&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG2 |= DMAMUX_CHCFG_ENBL_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** Initialize CH0 -&amp;gt; 1 byte received from UART 0 ***/ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set the Source Address*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const unsigned long&amp;nbsp; PTC16 = 0x000010000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_SADDR = (unsigned long)(PTC16);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //GPIOE_PTOR |= 0x100;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_DADDR = (uint32_t)(&amp;amp;GPIOE_PTOR); &lt;SPAN style="color: #e23d39;"&gt;//I WANT TO SET PTE 8 as my destination, how do I do that ? ? ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Source offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_SOFF = 0; // No offset&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Modulo off and port sizes*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_ATTR = DMA_ATTR_SSIZE(4) | DMA_ATTR_SMOD(0) | DMA_ATTR_DSIZE(4) | DMA_ATTR_DMOD(0);&amp;nbsp;&amp;nbsp; //16-byte burst&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_ATTR = DMA_ATTR_SSIZE(2) | DMA_ATTR_DSIZE(2); //source and destination size 0 = 8 bits&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Transfer size */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_NBYTES_MLNO = 4; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No adjustment to source address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_SLAST = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_DOFF = 0; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_CITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Adjustment to destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_DLASTSGA = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_BITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*...*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_CSR = DMA_CSR_DREQ_MASK; //Clear channel's ERQ bit when major loop is complete&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_CSR = 0; //Never clear channel's ERQ bit&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Start the sequence*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_ERQ |= DMA_ERQ_ERQ2_MASK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 18 Dec 2015 16:09:35 GMT</pubDate>
    <dc:creator>nitinharish</dc:creator>
    <dc:date>2015-12-18T16:09:35Z</dc:date>
    <item>
      <title>UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444269#M14849</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Can anybody point me to the UART DMA working code example for TWR-K64f ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland"&gt;mjbcswitzerland&lt;/A&gt;​, &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/soledad"&gt;soledad&lt;/A&gt;​, &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/DavidSeymour"&gt;DavidSeymour&lt;/A&gt;​&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3a0699; font-family: 'trebuchet ms', geneva;"&gt;I want to pass through data between 2 UARTS on my processor.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3a0699; font-family: 'trebuchet ms', geneva;"&gt;e.g. UART0 Rx data goes to UART1 Tx, UART1 RX data goes to UART0 Tx.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3a0699; font-family: 'trebuchet ms', geneva;"&gt;And I do NOT want CPU to be involved in that at all.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;I cannot find anything in MQX 4.1.1 and MQX4.2&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Thanks in advance.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Nitin&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Oct 2015 17:38:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444269#M14849</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2015-10-30T17:38:51Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444270#M14850</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nitin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think that a short circuit between UART_RX_x and UART_TX_x solves this very easily ;-)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In case you stil need to do it using DMA you can get fully proven K64 UART Tx and Rx DMA operation in the code at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://www.utasker.com/forum/index.php?topic=1721.0" rel="nofollow"&gt;http://www.utasker.com/forum/index.php?topic=1721.0&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It works on all 6 UARTs at the same time if needed and you can test it in the uTasker Kinetis K64 simulator (which simulates the UARTs' DMA operation so that you can see exactly how things operate in case you need to modify it in any way).&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;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Kinetis: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://www.utasker.com/kinetis.html" rel="nofollow"&gt;http://www.utasker.com/kinetis.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;K64: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://www.utasker.com/kinetis/FRDM-K64F.html" rel="nofollow"&gt;http://www.utasker.com/kinetis/FRDM-K64F.html&lt;/A&gt;&lt;SPAN&gt; / &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://www.utasker.com/kinetis/TWR-K64F120M.html" rel="nofollow"&gt;http://www.utasker.com/kinetis/TWR-K64F120M.html&lt;/A&gt;&lt;SPAN&gt; / &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://www.utasker.com/kinetis/TWR-K65F180M.html" rel="nofollow"&gt;http://www.utasker.com/kinetis/TWR-K65F180M.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;For the complete "out-of-the-box" Kinetis experience and faster time to market&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #7ed529;"&gt;:smileyinfo: Out-of-the-box support for 46 Kinetis boards and 10 IDEs (&lt;EM&gt;460 combinations from a single code source with no porting required&lt;/EM&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Oct 2015 18:22:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444270#M14850</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-10-30T18:22:16Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444271#M14851</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Nitin,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please check the attached examples. These examples were developed by one of my partners.&lt;/P&gt;&lt;P&gt;See details below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) K60D100_MQX4.1_UART_DMA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- vfnUART_init() will configure UART3 (TWR-SER port) using the MQX driver. Please note thatat the end of this function I write directly to UART_C2 and UART_C5 registes to enable UART DMA request.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- vfnDMA_init() configures DMA using MQX driver. Please note that dma_request_source and dma_tcd_reg2mem refer to UART3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- vfnUART_DMA_enable() writes directly UART_C2 and UART_C5 registers of UART5 which is the default io channel and is configured during initialization. This function enable UART DMA request in UART5 (embedded in OSJTAG). In this case UART driver is not used and you must edit parameters in dma_request_source and dma_tcd_reg2mem to reference UART5 to use this port with DMA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2) 1) K60D100_MQX4.1_UART_DMA_withoutDriver&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- vfnUART_DMA_enable() writes directly UART_C2 and UART_C5 registers of UART5 which is the default io channel and is configured during initialization. This function enable UART DMA request in UART5 (embedded in OSJTAG).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- vfnK60_DMA_init() confiures DMA directly (without the use of the driver) to be used with UART5.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Sol &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Nov 2015 21:23:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444271#M14851</guid>
      <dc:creator>soledad</dc:creator>
      <dc:date>2015-11-04T21:23:03Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444272#M14852</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Thanks &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/soledad"&gt;soledad&lt;/A&gt;​,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Can you share the initialization code for the UARTs also ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;When I try to run the following line it errors out and sets FAULT&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable receiver and transmitter and enable DMA on UART0*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&amp;nbsp; UART_C2_REG(UART0_BASE_PTR) |= UART_C2_RIE_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;As you know my application is to pass through data between 2 UARTs, &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;It will be really helpful if you can point me to an example where 2 UARTs are passing data between each other on the same processor using DMA.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3a0699; font-family: 'trebuchet ms', geneva;"&gt;I have heard freedom sample code has something similar to it, but I cannot find where is freedom code sample located ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Thanks and Regards&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Nitin&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 Dec 2015 23:02:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444272#M14852</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2015-12-08T23:02:24Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444273#M14853</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland"&gt;mjbcswitzerland&lt;/A&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;I cannot find DMA based inter UART transfer in your code.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Can you point me in the right direction ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;I am guessing what I am trying to do should be very very simple and straight forward but it appears to be very complicated as of now.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Dec 2015 01:09:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444273#M14853</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2015-12-09T01:09:43Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444274#M14854</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nitin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The uTasker UART DMA drivers save reception to a circular buffer and transmit from a circular buffer so don't perform Rx to Tx transfers.&lt;/P&gt;&lt;P&gt;However it is possible to do Rx to Tx transfers with a couple of simple changes (note that the Baud rates of the two channels must be the same otherwise tx overrun could occur!)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Configure the receiver of each UART for free-running DMA operation&lt;/P&gt;&lt;P&gt;This is done by with the setting&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;tInterfaceParameters.ucDMAConfig = (UART_RX_DMA); // free-running reception DMA and no transmission DMA&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;when opening each uart interface, with &lt;SPAN style="text-decoration: underline;"&gt;no&lt;/SPAN&gt; UART_TX_DMA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. Define an input circular buffer size of just 1&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;tInterfaceParameters.Rx_tx_sizes.RxQueueSize = 1;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;when configuring the interfaces&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. In the driver code the rx DMA destination is normally incremented using&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ptrDMA_TCD-&amp;gt;DMA_TCD_DOFF = 1; // destination incremented&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;but must should be set to no increment&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ptrDMA_TCD-&amp;gt;DMA_TCD_DOFF = 0; // destination not incremented&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4. Normally the circular buffer modulo is set to the circular buffer size but this should be also disabled&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ptrDMA_TCD-&amp;gt;DMA_TCD_DLASTSGA = (-pars-&amp;gt;Rx_tx_sizes.RxQueueSize); // when the buffer has been filled set the destination back to the start of it&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;changed to&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ptrDMA_TCD-&amp;gt;DMA_TCD_DLASTSGA = 0;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;5. When the Receiver is enabled it will usually set the Rx DMA destination to the circular buffer&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ptrDMA_TCD-&amp;gt;DMA_TCD_DADDR = (unsigned long)ptrStart; // destination is the input tty buffer&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;This must be modified to point to the UART data register of the alternative UART - for example, to route UART 0 reception to UART 1 transmission, and UART 1 reception to UART 0 transmission:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;KINETIS_UART_CONTROL *uart_reg_pair;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;switch (channel) {&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;case 0:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uart_reg_pair = fnSelectChannel(1);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;case 1:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uart_reg_pair = fnSelectChannel(0);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ptrDMA_TCD-&amp;gt;DMA_TCD_DADDR = (unsigned long)&amp;amp;(uart_reg_pair-&amp;gt;UART_D);&amp;nbsp; // destination is the alternate UART's data register&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now UART 0 reception is DMAed to UART 1 output and UART 1 reception is DMAed to UART 0 output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The thing to note is that the Tx of each UART is enabled but NOT in DMA mode and also without interrupt (normal state when it has nothing to send).&lt;/P&gt;&lt;P&gt;DMA only takes place at each UART receiver, where the byte that is received triggers a single transfer to the alternative UART data register. As soon as it has written it to the UART data register it will be sent out.&lt;/P&gt;&lt;P&gt;There is no CPU intervention and there is no data loss possible as long as the receiving Baud rate is not faster than the transmitting baud rate.&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>Wed, 09 Dec 2015 02:33:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444274#M14854</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-12-09T02:33:02Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444275#M14855</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nitin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. DMA_TCDx_DOFF should be 0 and not 1.&lt;/P&gt;&lt;P&gt;2. DMA_ERQ |= DMA_ERQ_ERQx_MASK; should be set after the DMA is initialised and not before (although unlikely a problem in reality unless you happen to receive something during the reset of the initialisation - remember that the DMA registers are random after a reset and so a prematurely attempted transfer will lead to a DMA error).&lt;/P&gt;&lt;P&gt;3. You comment that the Tx is being enabled but I don't see any code doing it [UART_C2_TE_MASK or similar]&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;Otherwise the rest looks OK - after you receive something at the UART input check the DMA status register for errors, or try a limited transfer that clears ERQ when terminating so that you can see whether it actually counts down.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Note further that this type of code has nothing to do with the OS used - it is easier to write and test in the uTasker Kinetis simulator (then you can walk though the internal DMA operation and be sure that all is Ok before having to experiment on the target) and then there is no loss in development time - you then simply use the code under any OS that you happen to work with.&lt;/EM&gt;&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>Wed, 09 Dec 2015 21:51:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444275#M14855</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-12-09T21:51:59Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444276#M14856</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland" rel="nofollow noopener noreferrer" target="_blank"&gt;mjbcswitzerland&lt;/A&gt;​, Do I need to say this again and again...&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;that you are AWESOME AWESOME AWESOME Engineer&lt;/STRONG&gt;&lt;/SPAN&gt;....&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3a0699; font-family: 'trebuchet ms', geneva;"&gt;My issue was "DMA_TCDx_DOFF ", once I fixed it, violaaa....everything works like a charm.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;And yes, I know, I started with MQX OS using dma functions and they never worked, so I fell down to Register Programming Level and this is where I am at right now.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG style="color: #3a0699; text-decoration: underline; font-family: 'trebuchet ms', geneva;"&gt;Thank you so very much for debugging.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;I am attaching my code, if somebody in the future will need it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14497597165501815" data-renderedposition="197_8_1232_0" jivemacro_uid="_14497597165501815" modifiedtitle="true"&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14497598163956463 jive_macro_code jive_text_macro" data-renderedposition="197_8_1232_4592" jivemacro_uid="_14497598163956463"&gt;&lt;P&gt;void tScStartup(uint32_t arg1)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Selecting the clock source for the UART0. We are selecting the MCGFLLCLK, 24Mhz */&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SOPT2 |= (SIM_SOPT5_UART0RXSRC(0x01) | SIM_SOPT5_UART1RXSRC(0x01)); // Set UART Source&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Make sure the clocks are enabled to all UARTs */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC4 |= (SIM_SCGC4_UART0_MASK | SIM_SCGC4_UART1_MASK | SIM_SCGC4_UART3_MASK);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC1 |= (SIM_SCGC1_UART5_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; /* Enable a full set of UART signals for each of the UART modules */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART0 functions on PTD */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTD_PCR6 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTD_PCR7 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable the UART1 functions on PTC */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR3 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR4 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable the UART3 functions on PTC */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR16 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR17 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable the UART5 functions on PTE */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTE_PCR8 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTE_PCR9 = PORT_PCR_MUX(0x3); // UART is alt3 function for this pin&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uart_init (UART0_BASE_PTR, 120000, 9600);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; uart_init (UART1_BASE_PTR, 120000, 9600); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uart_init (UART3_BASE_PTR, 60000, 115200); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uart_init (UART5_BASE_PTR, 60000, 115200); &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable receiver and transmitter and enable DMA on UART0*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_C2_REG(UART0_BASE_PTR) |= UART_C2_RIE_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Enable DMA*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_C5_REG(UART0_BASE_PTR) |= (UART_C5_RDMAS_MASK);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_PFIFO_REG(UART0_BASE_PTR) = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable receiver and transmitter and enable DMA on UART1*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_C2_REG(UART1_BASE_PTR) |= UART_C2_RIE_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Enable DMA*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_C5_REG(UART1_BASE_PTR) |= (UART_C5_RDMAS_MASK);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_PFIFO_REG(UART1_BASE_PTR) = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable receiver and transmitter and enable DMA on UART3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_C2_REG(UART3_BASE_PTR) |= UART_C2_RIE_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Enable DMA*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_C5_REG(UART3_BASE_PTR) |= (UART_C5_RDMAS_MASK);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_PFIFO_REG(UART3_BASE_PTR) = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable receiver and transmitter and enable DMA on UART5*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_C2_REG(UART5_BASE_PTR) |= UART_C2_RIE_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Enable DMA*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_C5_REG(UART5_BASE_PTR) |= (UART_C5_RDMAS_MASK);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; UART_PFIFO_REG(UART5_BASE_PTR) = 0; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC6 |= SIM_SCGC6_DMAMUX_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SCGC7 |= SIM_SCGC7_DMA_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; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0_to_UART1_DMA_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1_to_UART0_DMA_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART3_to_UART5_DMA_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART5_to_UART3_DMA_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1)&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; _time_delay(10000000);&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;/P&gt;&lt;P&gt;}// end void tScStartup(uint_32 arg1)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void UART0_to_UART1_DMA_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Let us DISABLE DMA channel so that we can change the source and then ENABLE it */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG0 = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; /*Enable DMA MUX ch 0&amp;nbsp; For DMAMUX channel Cfg Src, Please see Page:94 of USer Manual of K64 here: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94" rel="nofollow noopener noreferrer" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMAMUX_CHCFG0 |= DMAMUX_CHCFG_SOURCE(2); //Enable channel 2, Request souurce = UART 0 Receive&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG0 |= DMAMUX_CHCFG_ENBL_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** Initialize CH0 -&amp;gt; 1 byte received from UART 0 ***/ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set the Source Address*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_SADDR = (uint32_t)(&amp;amp;UART0_D);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_DADDR = (uint32_t)(&amp;amp;UART1_D);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Source offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_SOFF = 0; // No offset&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Modulo off and port sizes*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_ATTR = DMA_ATTR_SSIZE(4) | DMA_ATTR_SMOD(0) | DMA_ATTR_DSIZE(4) | DMA_ATTR_DMOD(0);&amp;nbsp;&amp;nbsp; //16-byte burst&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0); //source and destination size 0 = 8 bits&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Transfer size */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_NBYTES_MLNO = 1; //1 byte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No adjustment to source address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_SLAST = 0;//-32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_DOFF = 0; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_CITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Adjustment to destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_DLASTSGA = 0;//-32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_BITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*...*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_CSR = DMA_CSR_DREQ_MASK; //Clear channel's ERQ bit when major loop is complete&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_CSR = 0; //Never clear channel's ERQ bit&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Start the sequence*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_ERQ |= DMA_ERQ_ERQ0_MASK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void UART1_to_UART0_DMA_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Let us DISABLE DMA channel so that we can change the source and then ENABLE it */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG1 = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; /*Enable DMA MUX ch 0&amp;nbsp; For DMAMUX channel Cfg Src, Please see Page:94 of USer Manual of K64 here: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94" rel="nofollow noopener noreferrer" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMAMUX_CHCFG1 |= DMAMUX_CHCFG_SOURCE(4); //Enable channel 4, Request souurce = UART 1 Receive&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG1 |= DMAMUX_CHCFG_ENBL_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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;/P&gt;&lt;P&gt;&amp;nbsp; /*** Initialize CH0 -&amp;gt; 1 byte received from UART 0 ***/ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set the Source Address*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_SADDR = (uint32_t)(&amp;amp;UART1_D);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_DADDR = (uint32_t)(&amp;amp;UART0_D);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Source offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_SOFF = 0; // No offset&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Modulo off and port sizes*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_ATTR = DMA_ATTR_SSIZE(4) | DMA_ATTR_SMOD(0) | DMA_ATTR_DSIZE(4) | DMA_ATTR_DMOD(0);&amp;nbsp;&amp;nbsp; //16-byte burst&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0); //source and destination size 0 = 8 bits&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Transfer size */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_NBYTES_MLNO = 1; //1 byte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No adjustment to source address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_SLAST = 0;//-32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_DOFF = 0; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_CITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Adjustment to destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_DLASTSGA = 0;//-32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_BITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*...*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_CSR = DMA_CSR_DREQ_MASK; //Clear channel's ERQ bit when major loop is complete&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD1_CSR = 0; //Never clear channel's ERQ bit&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Start the sequence*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_ERQ |= DMA_ERQ_ERQ1_MASK; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void UART3_to_UART5_DMA_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Let us DISABLE DMA channel so that we can change the source and then ENABLE it */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG2 = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; /*Enable DMA MUX ch 0&amp;nbsp; For DMAMUX channel Cfg Src, Please see Page:94 of USer Manual of K64 here: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94" rel="nofollow noopener noreferrer" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMAMUX_CHCFG2 |= DMAMUX_CHCFG_SOURCE(8); //Enable channel 8, Request souurce = UART 3 Receive&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG2 |= DMAMUX_CHCFG_ENBL_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** Initialize CH0 -&amp;gt; 1 byte received from UART 0 ***/ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set the Source Address*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_SADDR = (uint32_t)(&amp;amp;UART3_D);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_DADDR = (uint32_t)(&amp;amp;UART5_D);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Source offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_SOFF = 0; // No offset&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Modulo off and port sizes*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_ATTR = DMA_ATTR_SSIZE(4) | DMA_ATTR_SMOD(0) | DMA_ATTR_DSIZE(4) | DMA_ATTR_DMOD(0);&amp;nbsp;&amp;nbsp; //16-byte burst&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0); //source and destination size 0 = 8 bits&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Transfer size */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_NBYTES_MLNO = 1; //1 byte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No adjustment to source address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_SLAST = 0;//-32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_DOFF = 0; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_CITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Adjustment to destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_DLASTSGA = 0;//-32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_BITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*...*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_CSR = DMA_CSR_DREQ_MASK; //Clear channel's ERQ bit when major loop is complete&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_CSR = 0; //Never clear channel's ERQ bit&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Start the sequence*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_ERQ |= DMA_ERQ_ERQ2_MASK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void UART5_to_UART3_DMA_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Let us DISABLE DMA channel so that we can change the source and then ENABLE it */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG3 = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; /*Enable DMA MUX ch 0&amp;nbsp; For DMAMUX channel Cfg Src, Please see Page:94 of USer Manual of K64 here: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94" rel="nofollow noopener noreferrer" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMAMUX_CHCFG3 |= DMAMUX_CHCFG_SOURCE(11); //Enable channel 11, Request souurce = UART 5 Receive&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG3 |= DMAMUX_CHCFG_ENBL_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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;/P&gt;&lt;P&gt;&amp;nbsp; /*** Initialize CH0 -&amp;gt; 1 byte received from UART 0 ***/ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set the Source Address*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_SADDR = (uint32_t)(&amp;amp;UART5_D);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_DADDR = (uint32_t)(&amp;amp;UART3_D);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Source offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_SOFF = 0; // No offset&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Modulo off and port sizes*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_ATTR = DMA_ATTR_SSIZE(4) | DMA_ATTR_SMOD(0) | DMA_ATTR_DSIZE(4) | DMA_ATTR_DMOD(0);&amp;nbsp;&amp;nbsp; //16-byte burst&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0); //source and destination size 0 = 8 bits&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Transfer size */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_NBYTES_MLNO = 1; //1 byte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No adjustment to source address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_SLAST = 0;//-32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_DOFF = 0; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_CITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Adjustment to destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_DLASTSGA = 0;//-32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_BITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*...*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_CSR = DMA_CSR_DREQ_MASK; //Clear channel's ERQ bit when major loop is complete&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD3_CSR = 0; //Never clear channel's ERQ bit&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Start the sequence*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_ERQ |= DMA_ERQ_ERQ3_MASK; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void uart_init (UART_MemMapPtr uartch, int sysclk, int baud)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt; register uint16 ubd, brfa;&lt;/P&gt;&lt;P&gt; uint8 temp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /* Enable the clock to the selected UART */&lt;/P&gt;&lt;P&gt; if(uartch == UART0_BASE_PTR)&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC4 |= SIM_SCGC4_UART0_MASK;&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; else&lt;/P&gt;&lt;P&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (uartch == UART1_BASE_PTR)&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; SIM_SCGC4 |= SIM_SCGC4_UART1_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; else&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; if (uartch == UART2_BASE_PTR)&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; SIM_SCGC4 |= SIM_SCGC4_UART2_MASK;&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; else&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; if(uartch == UART3_BASE_PTR)&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; SIM_SCGC4 |= SIM_SCGC4_UART3_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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&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; if(uartch == UART4_BASE_PTR)&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; SIM_SCGC1 |= SIM_SCGC1_UART4_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; }&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; else&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; SIM_SCGC1 |= SIM_SCGC1_UART5_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; }&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; }&lt;/P&gt;&lt;P&gt; /* Make sure that the transmitter and receiver are disabled while we&lt;/P&gt;&lt;P&gt; * change settings.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt; UART_C2_REG(uartch) &amp;amp;= ~(UART_C2_TE_MASK | UART_C2_RE_MASK );&lt;/P&gt;&lt;P&gt; /* Configure the UART for 8-bit mode, no parity */&lt;/P&gt;&lt;P&gt; /* We need all default settings, so entire register is cleared */&lt;/P&gt;&lt;P&gt; UART_C1_REG(uartch) = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /* Calculate baud settings */&lt;/P&gt;&lt;P&gt; ubd = (uint16)((sysclk*1000)/(baud * 16));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /* Save off the current value of the UARTx_BDH except for the SBR */&lt;/P&gt;&lt;P&gt; temp = UART_BDH_REG(uartch) &amp;amp; ~(UART_BDH_SBR(0x1F));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; UART_BDH_REG(uartch) = temp | UART_BDH_SBR(((ubd &amp;amp; 0x1F00) &amp;gt;&amp;gt; 8));&lt;/P&gt;&lt;P&gt; UART_BDL_REG(uartch) = (uint8)(ubd &amp;amp; UART_BDL_SBR_MASK);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /* Determine if a fractional divider is needed to get closer to the baud rate */&lt;/P&gt;&lt;P&gt; brfa = (((sysclk*32000)/(baud * 16)) - (ubd * 32));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /* Save off the current value of the UARTx_C4 register except for the BRFA */&lt;/P&gt;&lt;P&gt; temp = UART_C4_REG(uartch) &amp;amp; ~(UART_C4_BRFA(0x1F));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; UART_C4_REG(uartch) = temp | UART_C4_BRFA(brfa);&lt;/P&gt;&lt;P&gt; /* Enable receiver and transmitter */&lt;/P&gt;&lt;P&gt; UART_C2_REG(uartch) |= (UART_C2_TE_MASK | UART_C2_RE_MASK );&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Dec 2015 15:04:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444276#M14856</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2015-12-10T15:04:02Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444277#M14857</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland"&gt;mjbcswitzerland&lt;/A&gt;​&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;1 last question, looks like I have to set the baud rate via "uart_init" function above, if I do not do that, it does NOT work ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;since DMA is working on the basis on UART DATA register having data or NOT, then why should I need to set the baud rate ?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Dec 2015 15:12:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444277#M14857</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2015-12-10T15:12:41Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444278#M14858</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nitin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I suspect that it is because if you leave the baud rate divider set to 0 it disables the UART clock. Not programming the Baud will also not allow an interrupt driven system to operate either.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You need to ensure that rx and tx have the same baud or the tx has a faster one than the rx&amp;nbsp; if not, the Tx will send slower than the rx may be receiving and its output buffer max overrun (with tx data being lost).&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>Thu, 10 Dec 2015 15:22:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444278#M14858</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-12-10T15:22:43Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444279#M14859</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;So, &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland"&gt;mjbcswitzerland&lt;/A&gt;, does it mean, even though I am setting the baud rate to be some constant number for e.g. 4800, but since I am using DMA, transfers are based on interrupt on UART_D register and hence achieved baud rate is faster than the configured of 4800 ?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Dec 2015 15:33:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444279#M14859</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2015-12-10T15:33:08Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444280#M14860</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nitin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When using DMA the Rx character interrupt is used to trigger a DMA transfer. This means that at 4800 Baud the Rx wil receive (about) 11 bits at that speed, trigger an interrupt once all bits have been received (around 2.3ms later than the start bit), causing the DMA controller to transfer the content of the Rx data register to the other Tx data register. Then the same (approx) 11 bits will start being shifted out of the Tx. About 2.3ms later the character will have been completely.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is thus a dealy between Rx and Tx of one character. The delay and speed depends on the Baud rate and not on DMA usage.&lt;/P&gt;&lt;P&gt;In any case, your Rx Baud must match the baud of your source otherwise it won't receive the correct data content.&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>Thu, 10 Dec 2015 15:57:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444280#M14860</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-12-10T15:57:00Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444281#M14861</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland"&gt;mjbcswitzerland&lt;/A&gt;​&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;My RX and TX BAUDs are ensured to be exactly the same, so, no worries there.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;But my issue is, since my application is a passthrough mechanism between UARTs, I don't want to set the baud rate because, I will NOT know what BAUDs are the other processors running at, as this processor is just a bridge between 2 other processors.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;What I want is, if UART receives data, DMA triggers and passes it on to TX, irrespective of the Baud rate, something like this guy was asking for....&lt;A href="https://community.nxp.com/message/334590"&gt;https://community.nxp.com/message/334590&lt;/A&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;data transfer between UARTs irrespective of the Baud rate&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Dec 2015 16:07:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444281#M14861</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2015-12-10T16:07:23Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444282#M14862</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nitin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The UARTs are "asynchronous" which means that they 'need' to match the baud rate of the data being received. Also the parity and stop bit settings must match.&lt;/P&gt;&lt;P&gt;The receiver detects a start bit, samples 8 bits of data, the optional parity bit and a number of stop bits. Then it waits for the next start bit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_0.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/22051i5EAE950834117FA5/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_0.png" alt="pastedImage_0.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The Tx generates a start bit (with one Baud period), adds 8 data bits (those received) then adds an optional parity bit, followed by one or two stop bits. Then it is ready to send a following character.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Therefore you have no choice but to set the UART characters accordingly otherwise it will sample in the data content incorrectly and also send it on at a Baud rate that the destination will not understand - On top of that, it its parity setting is wrong the destination may also declare reception as with errors.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In your case what you need is a possibilty to switch the input to the output using a logic circuit and not via UARTs Rx/Tx.&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>Thu, 10 Dec 2015 16:23:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444282#M14862</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-12-10T16:23:13Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444283#M14863</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;So, &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland"&gt;mjbcswitzerland&lt;/A&gt;​&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;I was thinking, can I configure my PINS as GPIOs and then somehow source my DMA with those GPIO pins (for e.g. Source 49-53 (for Kinetis K64)).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Do you think it will work ?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Dec 2015 16:38:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444283#M14863</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2015-12-10T16:38:35Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444284#M14864</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland" rel="noopener noreferrer" target="_blank"&gt;mjbcswitzerland&lt;/A&gt;​&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;This is my scenario:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="IMG_20151210_181906_907.jpg"&gt;&lt;IMG alt="IMG_20151210_181906_907.jpg" src="https://community.nxp.com/t5/image/serverpage/image-id/22147i0B62BB48DF201DC0/image-size/large?v=v2&amp;amp;px=999" title="IMG_20151210_181906_907.jpg" /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;I am writing SW for the Red font K64F and it is just a bridges between 2 processors.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Initially I thought, I will use DMA with UARTs and it should be done, but it seems from your valid points that it will need me to know the baud rate.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;But my problem is, I will NOT know the baud rate, so, I thought let me configure all PINS as MUX 1 so that they act as GPIOs and then via IRQC value of 1 on PORTx_PCRn registers, I can trigger the DMA.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;This is the code, I have come up with, but it does NOT work. Thoughts ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14497900465296826 jive_text_macro" data-renderedposition="658_8_1232_2400" jivemacro_uid="_14497900465296826"&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;#define SET_PCR_GPIO_ONLY_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000100&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;#define PIN3_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000008&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;#define PIN4_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000010&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;#define PIN6_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000040&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;#define PIN7_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000080&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;#define PIN8_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000100&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;#define PIN9_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000200&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;#define PIN16_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00010000&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;#define PIN17_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00020000&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;void tScStartup(uint32_t arg1)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //UART3 RX&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR16 = SET_PCR_GPIO_ONLY_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //UART3 TX&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR17 = SET_PCR_GPIO_ONLY_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIOC_PDDR |= PIN17_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //UART5 RX&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTE_PCR9 = SET_PCR_GPIO_ONLY_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //UART5 TX&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTE_PCR8 = SET_PCR_GPIO_ONLY_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIOE_PDDR |= PIN8_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC6 |= SIM_SCGC6_DMAMUX_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; SIM_SCGC7 |= SIM_SCGC7_DMA_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* trigger DMA on rising edge */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; PORTD_PCR6&amp;nbsp; |= PORT_PCR_IRQC(0x01);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTE_PCR9&amp;nbsp; |= PORT_PCR_IRQC(0x01);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR3&amp;nbsp; |= PORT_PCR_IRQC(0x01);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC_PCR16 |= PORT_PCR_IRQC(0x01);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART3_to_UART5_DMA_init();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART5_to_UART3_DMA_init();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _time_delay(10000000);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;}// end void tScStartup(uint_32 arg1)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;void UART3_to_UART5_DMA_init(void)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Let us DISABLE DMA channel so that we can change the source and then ENABLE it */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG2 = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&lt;SPAN&gt;&amp;nbsp; /*Enable DMA MUX ch 0&amp;nbsp; For DMAMUX channel Cfg Src, Please see Page:94 of USer Manual of K64 here: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMAMUX_CHCFG2 |= DMAMUX_CHCFG_SOURCE(51); //Enable channel 51, Request souurce = PTC16&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG2 |= DMAMUX_CHCFG_ENBL_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*** Initialize CH0 -&amp;gt; 1 byte received from UART 0 ***/ &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Set the Source Address*/ &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_SADDR = (uint32_t)(GPIOC_PDIR);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Destination address */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_DADDR = (uint32_t)(GPIOE_PTOR);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Source offset*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_SOFF = 0; // No offset&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*Modulo off and port sizes*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; //DMA_TCD0_ATTR = DMA_ATTR_SSIZE(4) | DMA_ATTR_SMOD(0) | DMA_ATTR_DSIZE(4) | DMA_ATTR_DMOD(0);&amp;nbsp;&amp;nbsp; //16-byte burst&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0); //source and destination size 0 = 8 bits&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Transfer size */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_NBYTES_MLNO = 1; //1 byte&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* No adjustment to source address */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_SLAST = 0;//-32&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Destination offset*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_DOFF = 0; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* No link channel, transactions */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_CITER_ELINKNO = 1; //1 major loop&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Adjustment to destination address */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_DLASTSGA = 0;//-32&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* No link channel, transactions */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_BITER_ELINKNO = 1; //1 major loop&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*...*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; //DMA_TCD0_CSR = DMA_CSR_DREQ_MASK; //Clear channel's ERQ bit when major loop is complete&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD2_CSR = 0; //Never clear channel's ERQ bit&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*Start the sequence*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_ERQ |= DMA_ERQ_ERQ2_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;void UART5_to_UART3_DMA_init(void)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Let us DISABLE DMA channel so that we can change the source and then ENABLE it */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG3 = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&lt;SPAN&gt;&amp;nbsp; /*Enable DMA MUX ch 0&amp;nbsp; For DMAMUX channel Cfg Src, Please see Page:94 of USer Manual of K64 here: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMAMUX_CHCFG3 |= DMAMUX_CHCFG_SOURCE(53); //Enable channel 11, Request souurce = PortE Pin 9&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG3 |= DMAMUX_CHCFG_ENBL_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*** Initialize CH0 -&amp;gt; 1 byte received from UART 0 ***/ &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Set the Source Address*/ &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_SADDR = (uint32_t)(&amp;amp;GPIOE_PDIR);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Destination address */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_DADDR = (uint32_t)(&amp;amp;GPIOC_PTOR);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Source offset*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_SOFF = 0; // No offset&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*Modulo off and port sizes*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; //DMA_TCD0_ATTR = DMA_ATTR_SSIZE(4) | DMA_ATTR_SMOD(0) | DMA_ATTR_DSIZE(4) | DMA_ATTR_DMOD(0);&amp;nbsp;&amp;nbsp; //16-byte burst&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0); //source and destination size 0 = 8 bits&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Transfer size */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_NBYTES_MLNO = 1; //1 byte&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* No adjustment to source address */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_SLAST = 0;//-32&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Destination offset*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_DOFF = 0; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* No link channel, transactions */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_CITER_ELINKNO = 1; //1 major loop&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Adjustment to destination address */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_DLASTSGA = 0;//-32&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* No link channel, transactions */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_BITER_ELINKNO = 1; //1 major loop&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*...*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; //DMA_TCD0_CSR = DMA_CSR_DREQ_MASK; //Clear channel's ERQ bit when major loop is complete&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD3_CSR = 0; //Never clear channel's ERQ bit&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*Start the sequence*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_ERQ |= DMA_ERQ_ERQ3_MASK; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;void UART0_to_UART1_DMA_init(void)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Let us DISABLE DMA channel so that we can change the source and then ENABLE it */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG0 = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&lt;SPAN&gt;&amp;nbsp; /*Enable DMA MUX ch 0&amp;nbsp; For DMAMUX channel Cfg Src, Please see Page:94 of USer Manual of K64 here: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMAMUX_CHCFG0 |= DMAMUX_CHCFG_SOURCE(52); //Enable channel 52, Request souurce = Port D Pin 6&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG0 |= DMAMUX_CHCFG_ENBL_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*** Initialize CH0 -&amp;gt; 1 byte received from UART 0 ***/ &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Set the Source Address*/ &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_SADDR = (uint32_t)(&amp;amp;PORTD_PCR6);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Destination address */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_DADDR = (uint32_t)(&amp;amp;PORTC_PCR4);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Source offset*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_SOFF = 0; // No offset&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*Modulo off and port sizes*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0); //source and destination size 0 = 8 bits&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Transfer size */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_NBYTES_MLNO = 1; //1 byte&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* No adjustment to source address */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_SLAST = 0;//-32&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Destination offset*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_DOFF = 0; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* No link channel, transactions */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_CITER_ELINKNO = 1; //1 major loop&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* Adjustment to destination address */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_DLASTSGA = 0;//-32&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /* No link channel, transactions */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_BITER_ELINKNO = 1; //1 major loop&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; /*...*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; //DMA_TCD0_CSR = DMA_CSR_DREQ_MASK; //Clear channel's ERQ bit when major loop is complete&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_TCD0_CSR = 0; //Never clear channel's ERQ bit&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Start the sequence*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;&amp;nbsp; DMA_ERQ |= DMA_ERQ_ERQ0_MASK;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2020 13:21:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444284#M14864</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2020-11-02T13:21:55Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444285#M14865</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nitin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Set DMA triggers on &lt;SPAN style="text-decoration: underline;"&gt;both&lt;/SPAN&gt; rising and falling edges [PORT_PCR_IRQC(&lt;SPAN class="number"&gt;&lt;STRONG&gt;0x03&lt;/STRONG&gt;)&lt;/SPAN&gt;] - eg. for UART 0 to UART 1 set DMA trigger on both edges of PTD6&lt;/P&gt;&lt;P&gt;2. For UART0 to UART 1 set&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;DMA_TCD2_DADDR = (uint32_t)(GPIOC_PTOR);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;and&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;DMA_TCD2_SADDR = (unsigned long)&amp;amp;ulTogglePTC4;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;where&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static const unsigned long ulTogglePTC4 = 0x0x00000010;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now each time PTD5 changes the output PTC4 will toggle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The only thing that you need to worry about is that the output and input are at the same state when it starts and then the output will follow the input with a very short delay.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you wanted to relay the UART0 input to UART1 and UART3 outputs &lt;EM&gt;at the same time&lt;/EM&gt; just set &lt;STRONG&gt;ulTogglePTC4 = 0x0x00020010;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you wanted to relay the UART0 input to UART1 output on PTC4 and also in an inverted form to UART3 output on PTC17 (for example) you can use the same value but start with the output register value on output PTC17 in the inverted state.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;etc...&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>Fri, 11 Dec 2015 00:44:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444285#M14865</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-12-11T00:44:26Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444286#M14866</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland" rel="noopener noreferrer" target="_blank"&gt;mjbcswitzerland&lt;/A&gt;​, after your feedback, this is what I came up with, but still NO data transfer is happening at all:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14497959018076943" data-renderedposition="50_8_1232_993" jivemacro_uid="_14497959018076943" modifiedtitle="true"&gt;&lt;P&gt;void UART0_to_UART1_DMA_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Let us DISABLE DMA channel so that we can change the source and then ENABLE it */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG0 = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; /*Enable DMA MUX ch 0&amp;nbsp; For DMAMUX channel Cfg Src, Please see Page:94 of USer Manual of K64 here: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMAMUX_CHCFG0 |= DMAMUX_CHCFG_SOURCE(52); //Enable channel 52, Request souurce = Port D Pin 6&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG0 |= DMAMUX_CHCFG_ENBL_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** Initialize CH0 -&amp;gt; 1 byte received from UART 0 ***/ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set the Source Address*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const unsigned long PTD6 = 0x00000040;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_SADDR = (unsigned long)(&amp;amp;PTD6);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_DADDR = (uint32_t)(&amp;amp;GPIOC_PTOR);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Source offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_SOFF = 0; // No offset&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Modulo off and port sizes*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0); //source and destination size 0 = 8 bits&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Transfer size */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_NBYTES_MLNO = 1; //1 byte&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No adjustment to source address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_SLAST = 0;//-32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_DOFF = 0; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_CITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Adjustment to destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_DLASTSGA = 0;//-32&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_BITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*...*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_CSR = DMA_CSR_DREQ_MASK; //Clear channel's ERQ bit when major loop is complete&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD0_CSR = 0; //Never clear channel's ERQ bit&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Start the sequence*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_ERQ |= DMA_ERQ_ERQ0_MASK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;This is my DMA register status:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="Untitled.png"&gt;&lt;IMG alt="Untitled.png" src="https://community.nxp.com/t5/image/serverpage/image-id/22148i83D20BBE29577DCB/image-size/large?v=v2&amp;amp;px=999" title="Untitled.png" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2020 13:21:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444286#M14866</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2020-11-02T13:21:57Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444287#M14867</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nitin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Your source destination sizes are not correct - &lt;SPAN style="text-decoration: underline;"&gt;they should be 32 bit and not 8 bit.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;2. DMA_TCD2_NBYTES_MLNO &lt;SPAN style="text-decoration: underline;"&gt;must be 4&lt;/SPAN&gt; and not 1 since it is the count of bytes in the transfer (4 bytes in the long word)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Beware that you can only trigger from one input per port (your UARTs 1 and 3 are on the same port so you should look to see whether you can move one to different pins). The reason is that you have only a "port A", "port B" etc. trigger and not one that can be selected per pin in a port. If you have port C selected for two DMA channels, both will trigger each time there is a change, which would give false output toggling on one of them.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is working code as reference - I haven't shown the port input DMA trigger setup since this is encapsulated in the configuration that I use (there is nothing special in there apart from the fact that I tell it to not reconfigure the input as GPIO input but instead leave it at its peripheral function; this allows the UART to operate normally and also the DMA mirroring to another pin to take place at the same time).&lt;/P&gt;&lt;PRE&gt;INTERRUPT_SETUP interrupt_setup;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // interrupt configuration parameters
interrupt_setup.int_type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = PORT_INTERRUPT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // identifier to configure port interrupt
interrupt_setup.int_port&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = PORTB;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the port that the interrupt input is on
interrupt_setup.int_port_bits&amp;nbsp; = PORTB_BIT16;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 input pin
interrupt_setup.int_port_sense = (IRQ_BOTH_EDGES | PULLUP_ON | PORT_DMA_MODE | PORT_KEEP_PERIPHERAL); // DMA on both edges and keep peripheral function
interrupt_setup.int_handler = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // no interrupt handler when using DMA
fnConfigureInterrupt((void *)&amp;amp;interrupt_setup);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // configure interrupt&lt;/PRE&gt;&lt;P&gt;The DMA port to port mirroring from this input to PTC16 looks like this:&lt;/P&gt;&lt;PRE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const unsigned long ulOutput = PORTC_BIT16;
&amp;nbsp;&amp;nbsp;&amp;nbsp; KINETIS_DMA_TDC *ptrDMA_TCD = (KINETIS_DMA_TDC *)eDMA_DESCRIPTORS;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD += 9;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // use DMA channel 9
&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_SOFF = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 not incremented
&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_DOFF = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // destination not incremented
&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_BITER_ELINK = ptrDMA_TCD-&amp;gt;DMA_TCD_CITER_ELINK = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_ATTR = (DMA_TCD_ATTR_DSIZE_32 | DMA_TCD_ATTR_SSIZE_32); // transfer sizes always single bytes
&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_SADDR = (unsigned long)&amp;amp;ulOutput;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // source is the location of a fixed pattern to be written
&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_DADDR = (unsigned long)(GPIOC_PTOR_ADD);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // destination is port C toggle register
&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_SLAST = ptrDMA_TCD-&amp;gt;DMA_TCD_DLASTSGA = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; // no change to address when the transfer loop has completed
&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_NBYTES_ML = sizeof(unsigned long);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // each request starts a single long word transfer
&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_CSR = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // free-running
&amp;nbsp;&amp;nbsp;&amp;nbsp; POWER_UP(6, SIM_SCGC6_DMAMUX0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 DMA multiplexer 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX0_CHCFG9 = (DMAMUX0_CHCFG_SOURCE_PORTB | DMAMUX_CHCFG_ENBL); // trigger DMA channel 9 on port B input changes
&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_ERQ |= (DMA_ERQ_ERQ9);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 request source&lt;/PRE&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>Fri, 11 Dec 2015 04:02:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444287#M14867</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-12-11T04:02:42Z</dc:date>
    </item>
    <item>
      <title>Re: UART DMA K64f</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444288#M14868</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;Thanks &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/mjbcswitzerland" rel="nofollow noopener noreferrer" target="_blank"&gt;mjbcswitzerland&lt;/A&gt;​,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;In your code you said:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptrDMA_TCD-&amp;gt;DMA_TCD_DADDR = (unsigned long)(GPIOC_PTOR_ADD);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // destination is port C toggle register&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;It marks PORT C toggle Register as the destination for DMA but what I want is PIN NOT PORT to toggle, How is that achieved ? &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'trebuchet ms', geneva; color: #3a0699;"&gt;On simlar lines, I have my code here (See RED comment below):&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e23d39; font-size: 12px; font-family: Consolas, 'Courier New', Courier, mono, serif;"&gt;//I WANT TO SET PTE 8 as my destination, how do I do that ? ? ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14504548291143327 jive_text_macro" data-renderedposition="152_8_1232_1073" jivemacro_uid="_14504548291143327"&gt;&lt;P&gt;void UART3_to_UART5_DMA_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Let us DISABLE DMA channel so that we can change the source and then ENABLE it */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG2 = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; /*Enable DMA MUX ch 0&amp;nbsp; For DMAMUX channel Cfg Src, Please see Page:94 of USer Manual of K64 here: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94" rel="nofollow noopener noreferrer" target="_blank"&gt;http://cache.freescale.com/files/microcontrollers/doc/ref_manual/K64P144M120SF5RM.pdf#page=94&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMAMUX_CHCFG2 |= DMAMUX_CHCFG_SOURCE(51); //Enable channel 51, Request souurce = PTC16&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_CHCFG2 |= DMAMUX_CHCFG_ENBL_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*** Initialize CH0 -&amp;gt; 1 byte received from UART 0 ***/ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set the Source Address*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const unsigned long&amp;nbsp; PTC16 = 0x000010000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_SADDR = (unsigned long)(PTC16);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //GPIOE_PTOR |= 0x100;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_DADDR = (uint32_t)(&amp;amp;GPIOE_PTOR); &lt;SPAN style="color: #e23d39;"&gt;//I WANT TO SET PTE 8 as my destination, how do I do that ? ? ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Source offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_SOFF = 0; // No offset&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Modulo off and port sizes*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_ATTR = DMA_ATTR_SSIZE(4) | DMA_ATTR_SMOD(0) | DMA_ATTR_DSIZE(4) | DMA_ATTR_DMOD(0);&amp;nbsp;&amp;nbsp; //16-byte burst&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_ATTR = DMA_ATTR_SSIZE(2) | DMA_ATTR_DSIZE(2); //source and destination size 0 = 8 bits&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Transfer size */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_NBYTES_MLNO = 4; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No adjustment to source address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_SLAST = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Destination offset*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_DOFF = 0; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_CITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Adjustment to destination address */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_DLASTSGA = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* No link channel, transactions */&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_BITER_ELINKNO = 1; //1 major loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*...*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; //DMA_TCD0_CSR = DMA_CSR_DREQ_MASK; //Clear channel's ERQ bit when major loop is complete&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_TCD2_CSR = 0; //Never clear channel's ERQ bit&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*Start the sequence*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; DMA_ERQ |= DMA_ERQ_ERQ2_MASK;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 18 Dec 2015 16:09:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/UART-DMA-K64f/m-p/444288#M14868</guid>
      <dc:creator>nitinharish</dc:creator>
      <dc:date>2015-12-18T16:09:35Z</dc:date>
    </item>
  </channel>
</rss>

