<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Kinetis MKV58F1M0VLQ24  UART0 TX DMA in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-MKV58F1M0VLQ24-UART0-TX-DMA/m-p/1429580#M62662</link>
    <description>&lt;P&gt;OK SOLVED!&lt;/P&gt;&lt;P&gt;After days of test now i can transfer over DMA 32 bytes on UART0 tx.&lt;/P&gt;&lt;P&gt;Now i must work for UART0 rx dma..&lt;/P&gt;&lt;P&gt;The UART0 is pre-configured before, with standard fsl_uart.c (mcuxpresso)&lt;/P&gt;&lt;P&gt;The code:&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt;* Definitions&lt;BR /&gt;******************************************************************************/&lt;BR /&gt;uint8_t str[32]={'X','2','3','4','5','6','7','Y','K','2','3','4','5','6','7','W',\&lt;BR /&gt;'?','2','3','4','5','6','7','$','%','2','3','4','5','6','7','&amp;amp;'};&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt;* Prototypes&lt;BR /&gt;******************************************************************************/&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt;* Code&lt;BR /&gt;******************************************************************************/&lt;BR /&gt;/*!&lt;BR /&gt;* @brief Main function&lt;BR /&gt;*/&lt;BR /&gt;int init_my_dma(void)&lt;BR /&gt;{ // Enable DMA clocks&lt;/P&gt;&lt;P&gt;SIM-&amp;gt;SCGC6 |= SIM_SCGC6_DMAMUX_MASK;&lt;BR /&gt;SIM-&amp;gt;SCGC7 |= SIM_SCGC7_DMA_MASK;&lt;/P&gt;&lt;P&gt;UART0-&amp;gt;C5|=0b10000000;&lt;BR /&gt;UART0-&amp;gt;C2|=0b10000000;&lt;BR /&gt;// Configure TX DMA&lt;BR /&gt;DMAMUX-&amp;gt;CHCFG[0] &amp;amp;= ~(DMAMUX_CHCFG_ENBL_MASK);&lt;BR /&gt;DMAMUX-&amp;gt;CHCFG[0] = DMAMUX_CHCFG_SOURCE(3);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].BITER_ELINKNO = 32;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].CITER_ELINKNO = 32;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].SADDR = (__IO uint32_t)str;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].ATTR = DMA_ATTR_SMOD(0) | DMA_ATTR_SSIZE(0) | DMA_ATTR_DMOD(0) | DMA_ATTR_DSIZE(0);&lt;BR /&gt;DMA0-&amp;gt;TCD[0].SOFF = 1;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].NBYTES_MLNO = DMA_NBYTES_MLNO_NBYTES(1);&lt;BR /&gt;DMA0-&amp;gt;TCD[0].SLAST = -32;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].DADDR =(__IO uint32_t) &amp;amp;UART0-&amp;gt;D;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].DOFF = 0;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].DLAST_SGA = 0;&lt;BR /&gt;DMA0-&amp;gt;ERQ &amp;amp;= ~DMA_ERQ_ERQ0_MASK;&lt;BR /&gt;DMAMUX-&amp;gt;CHCFG[0] |= DMAMUX_CHCFG_ENBL_MASK;&lt;BR /&gt;NVIC_EnableIRQ(IRQ_DMA0_IRQN);&lt;/P&gt;&lt;P&gt;DMA0-&amp;gt;TCD[0].CSR |= DMA_CSR_DREQ_MASK | DMA_CSR_DONE_MASK | DMA_CSR_INTMAJOR_MASK;&lt;BR /&gt;DMA0-&amp;gt;ERQ |= DMA_ERQ_ERQ0_MASK; //this line start the dma transfert&lt;/P&gt;&lt;P&gt;return 0;&lt;BR /&gt;}&lt;/P&gt;</description>
    <pubDate>Wed, 16 Mar 2022 20:51:50 GMT</pubDate>
    <dc:creator>thieulam</dc:creator>
    <dc:date>2022-03-16T20:51:50Z</dc:date>
    <item>
      <title>Kinetis MKV58F1M0VLQ24  UART0 TX DMA</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-MKV58F1M0VLQ24-UART0-TX-DMA/m-p/1428040#M62631</link>
      <description>&lt;P&gt;Hello everybody.&lt;BR /&gt;I am trying to initialize the uart0 tx DMA module on the kinetis MKV58F1M0VLQ24.&lt;BR /&gt;I can make everything work up to a maximum of 8 characters,&lt;BR /&gt;if I try to make a 16-character dma tx, 8 always come out of the serial. Can you help me? Here is my code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;uint8_t str[32]={'X','2','3','4','5','6','7','Y','K','2','3','4','5','6','7','W','&amp;amp;','%','$'};&lt;/P&gt;&lt;P&gt;int init_my_dma(void)&lt;BR /&gt;{&lt;BR /&gt;//disable request channels&lt;BR /&gt;DMA0-&amp;gt;TCD[0].CSR &amp;amp;= ~DMA_CSR_ACTIVE_MASK;&lt;BR /&gt;DMA0-&amp;gt;ERQ = 0U;&lt;BR /&gt;DMA0-&amp;gt;EEI = 0U;&lt;BR /&gt;DMA0-&amp;gt;SEEI = 0U;&lt;/P&gt;&lt;P&gt;//set source addr&lt;BR /&gt;DMA0-&amp;gt;TCD[0].SADDR = (__IO uint32_t)str;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].NBYTES_MLNO = DMA_NBYTES_MLNO_NBYTES(16) ;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].NBYTES_MLOFFNO=16;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].NBYTES_MLOFFYES=16;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0); //8-bit transfer&lt;BR /&gt;DMA0-&amp;gt;TCD[0].DADDR = (__IO uint32_t)&amp;amp;UART0_PERIPHERAL-&amp;gt;D;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;// Adjustment value used to restore the source and destiny address to the initial value&lt;BR /&gt;DMA0-&amp;gt;TCD[0].SLAST = -16;//(-1 * size_of_tx); // Source address adjustment&lt;BR /&gt;DMA0-&amp;gt;TCD[0].DLAST_SGA = 0;//(-1); // Destination address adjustment&lt;BR /&gt;// Set an offset for source and destination address&lt;BR /&gt;DMA0-&amp;gt;TCD[0].SOFF = 1; // Source address offset&lt;BR /&gt;DMA0-&amp;gt;TCD[0].DOFF = 0; // Destination address offset&lt;/P&gt;&lt;P&gt;// Current major iteration count (a single iteration of 'size_of_tx' bytes)&lt;BR /&gt;DMA0-&amp;gt;TCD[0].CITER_ELINKNO = 1;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].BITER_ELINKNO = 1;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;DMA0-&amp;gt;CERR = DMA_CERR_CAEI_MASK;&lt;/P&gt;&lt;P&gt;DMA0-&amp;gt;TCD[0].CSR |= DMA_CSR_ACTIVE_MASK;&lt;/P&gt;&lt;P&gt;DMA0-&amp;gt;CERQ = DMA_CERQ_CAER_MASK;&lt;/P&gt;&lt;P&gt;DMA0-&amp;gt;TCD[0].CSR |= DMA_CSR_START_MASK;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//wait for DMA to complete&lt;/P&gt;&lt;P&gt;while(!(DMA0-&amp;gt;TCD[0].CSR &amp;amp; DMA_CSR_DONE_MASK)); //DMA_CSR_DREQ_MASK&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Tue, 15 Mar 2022 00:40:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-MKV58F1M0VLQ24-UART0-TX-DMA/m-p/1428040#M62631</guid>
      <dc:creator>thieulam</dc:creator>
      <dc:date>2022-03-15T00:40:52Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis MKV58F1M0VLQ24  UART0 TX DMA</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-MKV58F1M0VLQ24-UART0-TX-DMA/m-p/1429580#M62662</link>
      <description>&lt;P&gt;OK SOLVED!&lt;/P&gt;&lt;P&gt;After days of test now i can transfer over DMA 32 bytes on UART0 tx.&lt;/P&gt;&lt;P&gt;Now i must work for UART0 rx dma..&lt;/P&gt;&lt;P&gt;The UART0 is pre-configured before, with standard fsl_uart.c (mcuxpresso)&lt;/P&gt;&lt;P&gt;The code:&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt;* Definitions&lt;BR /&gt;******************************************************************************/&lt;BR /&gt;uint8_t str[32]={'X','2','3','4','5','6','7','Y','K','2','3','4','5','6','7','W',\&lt;BR /&gt;'?','2','3','4','5','6','7','$','%','2','3','4','5','6','7','&amp;amp;'};&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt;* Prototypes&lt;BR /&gt;******************************************************************************/&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt;* Code&lt;BR /&gt;******************************************************************************/&lt;BR /&gt;/*!&lt;BR /&gt;* @brief Main function&lt;BR /&gt;*/&lt;BR /&gt;int init_my_dma(void)&lt;BR /&gt;{ // Enable DMA clocks&lt;/P&gt;&lt;P&gt;SIM-&amp;gt;SCGC6 |= SIM_SCGC6_DMAMUX_MASK;&lt;BR /&gt;SIM-&amp;gt;SCGC7 |= SIM_SCGC7_DMA_MASK;&lt;/P&gt;&lt;P&gt;UART0-&amp;gt;C5|=0b10000000;&lt;BR /&gt;UART0-&amp;gt;C2|=0b10000000;&lt;BR /&gt;// Configure TX DMA&lt;BR /&gt;DMAMUX-&amp;gt;CHCFG[0] &amp;amp;= ~(DMAMUX_CHCFG_ENBL_MASK);&lt;BR /&gt;DMAMUX-&amp;gt;CHCFG[0] = DMAMUX_CHCFG_SOURCE(3);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].BITER_ELINKNO = 32;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].CITER_ELINKNO = 32;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].SADDR = (__IO uint32_t)str;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].ATTR = DMA_ATTR_SMOD(0) | DMA_ATTR_SSIZE(0) | DMA_ATTR_DMOD(0) | DMA_ATTR_DSIZE(0);&lt;BR /&gt;DMA0-&amp;gt;TCD[0].SOFF = 1;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].NBYTES_MLNO = DMA_NBYTES_MLNO_NBYTES(1);&lt;BR /&gt;DMA0-&amp;gt;TCD[0].SLAST = -32;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].DADDR =(__IO uint32_t) &amp;amp;UART0-&amp;gt;D;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].DOFF = 0;&lt;BR /&gt;DMA0-&amp;gt;TCD[0].DLAST_SGA = 0;&lt;BR /&gt;DMA0-&amp;gt;ERQ &amp;amp;= ~DMA_ERQ_ERQ0_MASK;&lt;BR /&gt;DMAMUX-&amp;gt;CHCFG[0] |= DMAMUX_CHCFG_ENBL_MASK;&lt;BR /&gt;NVIC_EnableIRQ(IRQ_DMA0_IRQN);&lt;/P&gt;&lt;P&gt;DMA0-&amp;gt;TCD[0].CSR |= DMA_CSR_DREQ_MASK | DMA_CSR_DONE_MASK | DMA_CSR_INTMAJOR_MASK;&lt;BR /&gt;DMA0-&amp;gt;ERQ |= DMA_ERQ_ERQ0_MASK; //this line start the dma transfert&lt;/P&gt;&lt;P&gt;return 0;&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Wed, 16 Mar 2022 20:51:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-MKV58F1M0VLQ24-UART0-TX-DMA/m-p/1429580#M62662</guid>
      <dc:creator>thieulam</dc:creator>
      <dc:date>2022-03-16T20:51:50Z</dc:date>
    </item>
  </channel>
</rss>

