<?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 DMA settings: is my requirement too complicated to be done? in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/DMA-settings-is-my-requirement-too-complicated-to-be-done/m-p/690790#M42563</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is what I achieved so far with channel linking:&lt;/P&gt;&lt;P&gt;* DMA will transfer out ADC results: 2-ADC channels(c1,c2), 3 samples per channel (s1,s1,s3)&lt;/P&gt;&lt;P&gt;----------------------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;DMA0-&amp;gt;TCD[0].SADDR = (uint32_t)&amp;amp;adc_mux[0]; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp;(adc_mux[] = {c1, c2} //channel-1, 2&lt;BR /&gt; DMA0-&amp;gt;TCD[0].DADDR = (uint32_t)&amp;amp;ADC1-&amp;gt;SC1[0];&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------------------&lt;BR /&gt; DMA0-&amp;gt;TCD[1].SADDR = (uint32_t) &amp;amp;ADC1-&amp;gt;R[0];&lt;BR /&gt; DMA0-&amp;gt;TCD[1].DADDR = (uint32_t)&amp;amp;adc_result[0];&lt;BR /&gt; DMA0-&amp;gt;TCD[1].SOFF = 0x00;&lt;/P&gt;&lt;P&gt;//**** 16 bit =&amp;gt; 2 bytes&lt;BR /&gt; DMA0-&amp;gt;TCD[1].DOFF = 0x02;&lt;BR /&gt; DMA0-&amp;gt;TCD[1].ATTR = DMA_ATTR_SSIZE(1)| DMA_ATTR_DSIZE(1);&lt;BR /&gt; DMA0-&amp;gt;TCD[1].NBYTES_MLNO = 0x02;&lt;BR /&gt; DMA0-&amp;gt;TCD[1].CITER_ELINKNO = (DMA_CITER_ELINKNO_ELINK_MASK | 0x06);&lt;BR /&gt; DMA0-&amp;gt;TCD[1].BITER_ELINKNO =(DMA_BITER_ELINKNO_ELINK_MASK|0x0000|0x06);&lt;/P&gt;&lt;P&gt;DMA0-&amp;gt;TCD[1].SLAST = 0x00;&lt;BR /&gt; DMA0-&amp;gt;TCD[1].DLAST_SGA = -12;&lt;BR /&gt; DMA0-&amp;gt;TCD[1].CSR = DMA_CSR_INTMAJOR_MASK |DMA_CSR_MAJORELINK_MASK | DMA_CSR_MAJORLINKCH(0);&lt;/P&gt;&lt;P&gt;------------------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;* adc_result[ ]: [ c1s1, c2s1, &amp;nbsp; &amp;nbsp;c1s2, c2s2, &amp;nbsp; &amp;nbsp;c1s3, c2s3 ] and repeat &amp;nbsp;-------------- &lt;STRONG&gt;so far so good!&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Now I want to change outputs to be:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;* adc_result[ ]: [ c1s1, c1s2, c1s3, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c2s1, c2s2, c2s3 ] and repeat&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;* (Attention: ADC still produce results in order of: c1s1, c2s1, &amp;nbsp;c1s2, c2s2, c1s3, c2s3 )!&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;* How can I achieve this?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;Jerry&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 23 May 2017 21:41:52 GMT</pubDate>
    <dc:creator>jerrylian</dc:creator>
    <dc:date>2017-05-23T21:41:52Z</dc:date>
    <item>
      <title>DMA settings: is my requirement too complicated to be done?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/DMA-settings-is-my-requirement-too-complicated-to-be-done/m-p/690790#M42563</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is what I achieved so far with channel linking:&lt;/P&gt;&lt;P&gt;* DMA will transfer out ADC results: 2-ADC channels(c1,c2), 3 samples per channel (s1,s1,s3)&lt;/P&gt;&lt;P&gt;----------------------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;DMA0-&amp;gt;TCD[0].SADDR = (uint32_t)&amp;amp;adc_mux[0]; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;nbsp;(adc_mux[] = {c1, c2} //channel-1, 2&lt;BR /&gt; DMA0-&amp;gt;TCD[0].DADDR = (uint32_t)&amp;amp;ADC1-&amp;gt;SC1[0];&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------------------&lt;BR /&gt; DMA0-&amp;gt;TCD[1].SADDR = (uint32_t) &amp;amp;ADC1-&amp;gt;R[0];&lt;BR /&gt; DMA0-&amp;gt;TCD[1].DADDR = (uint32_t)&amp;amp;adc_result[0];&lt;BR /&gt; DMA0-&amp;gt;TCD[1].SOFF = 0x00;&lt;/P&gt;&lt;P&gt;//**** 16 bit =&amp;gt; 2 bytes&lt;BR /&gt; DMA0-&amp;gt;TCD[1].DOFF = 0x02;&lt;BR /&gt; DMA0-&amp;gt;TCD[1].ATTR = DMA_ATTR_SSIZE(1)| DMA_ATTR_DSIZE(1);&lt;BR /&gt; DMA0-&amp;gt;TCD[1].NBYTES_MLNO = 0x02;&lt;BR /&gt; DMA0-&amp;gt;TCD[1].CITER_ELINKNO = (DMA_CITER_ELINKNO_ELINK_MASK | 0x06);&lt;BR /&gt; DMA0-&amp;gt;TCD[1].BITER_ELINKNO =(DMA_BITER_ELINKNO_ELINK_MASK|0x0000|0x06);&lt;/P&gt;&lt;P&gt;DMA0-&amp;gt;TCD[1].SLAST = 0x00;&lt;BR /&gt; DMA0-&amp;gt;TCD[1].DLAST_SGA = -12;&lt;BR /&gt; DMA0-&amp;gt;TCD[1].CSR = DMA_CSR_INTMAJOR_MASK |DMA_CSR_MAJORELINK_MASK | DMA_CSR_MAJORLINKCH(0);&lt;/P&gt;&lt;P&gt;------------------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;* adc_result[ ]: [ c1s1, c2s1, &amp;nbsp; &amp;nbsp;c1s2, c2s2, &amp;nbsp; &amp;nbsp;c1s3, c2s3 ] and repeat &amp;nbsp;-------------- &lt;STRONG&gt;so far so good!&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Now I want to change outputs to be:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;* adc_result[ ]: [ c1s1, c1s2, c1s3, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c2s1, c2s2, c2s3 ] and repeat&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;* (Attention: ADC still produce results in order of: c1s1, c2s1, &amp;nbsp;c1s2, c2s2, c1s3, c2s3 )!&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;* How can I achieve this?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;Jerry&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 May 2017 21:41:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/DMA-settings-is-my-requirement-too-complicated-to-be-done/m-p/690790#M42563</guid>
      <dc:creator>jerrylian</dc:creator>
      <dc:date>2017-05-23T21:41:52Z</dc:date>
    </item>
    <item>
      <title>Re: DMA settings: is my requirement too complicated to be done?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/DMA-settings-is-my-requirement-too-complicated-to-be-done/m-p/690791#M42564</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jerry Lian&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is not possible to set that order with a configuration of DOFF, CITER, BITER, etc. for this case you could use another DMA to order your array, but this is not the most optimal implementation, so I don't know if it works for you. Another option is to use scatter gatter feature, but for this you will have to implement 12 different TCD configuration, so I don't know if it works for you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this information could help you. Please let me know fi you have any other question.&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;P&gt;Jorge Alcala&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Jun 2017 01:43:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/DMA-settings-is-my-requirement-too-complicated-to-be-done/m-p/690791#M42564</guid>
      <dc:creator>jorge_a_vazquez</dc:creator>
      <dc:date>2017-06-02T01:43:49Z</dc:date>
    </item>
    <item>
      <title>Re: DMA settings: is my requirement too complicated to be done?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/DMA-settings-is-my-requirement-too-complicated-to-be-done/m-p/690792#M42565</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Jorge:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have figured it by using dynamic scatter/gather feature. And I just need one TCD instead of 12 in TCD-loop, surely I need to update TCD during major interrupt!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your answer!&lt;/P&gt;&lt;P&gt;Jerry&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Jun 2017 14:26:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/DMA-settings-is-my-requirement-too-complicated-to-be-done/m-p/690792#M42565</guid>
      <dc:creator>jerrylian</dc:creator>
      <dc:date>2017-06-02T14:26:15Z</dc:date>
    </item>
  </channel>
</rss>

