<?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>LPC Microcontrollers中的主题 GPDMA configuration problem</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/GPDMA-configuration-problem/m-p/586337#M21410</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by milind.mishra on Mon Feb 16 01:41:31 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using the I2S DMA driver, provided by NXP, with ucOS-iii.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Whenever a request to start recording is received from the host, following steps are taken:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; 1) Buffer is allocated to store the data from the I2S.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2) The Buffer pointer and the Transfer size is set passed to the 'pDMAch' structure.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After setting up the DMA, I enable the corresponding channel dedicated for the I2S.. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I, however,&amp;nbsp; observe that the transfer size field in the register always remains zero thereby indicating the DMA controller that the DMA transfer is done, hence I tend to get very frequent interrupts.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So, is there a particular order in which I should configure the controller or is it indicative of a hardware problem?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;case GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// Assign peripheral source address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pDMAch-&amp;gt;CSrcAddr = (uint32_t)GPDMA_LUTPerAddr[GPDMAChannelConfig-&amp;gt;SrcConn];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// Assign memory destination address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pDMAch-&amp;gt;CDestAddr = GPDMAChannelConfig-&amp;gt;DstMemAddr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pDMAch-&amp;gt;CControl&amp;nbsp; =&amp;nbsp;&amp;nbsp; GPDMA_DMACCxControl_SBSize((uint32_t)GPDMA_LUTPerBurst[GPDMAChannelConfig-&amp;gt;SrcConn]) \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;| GPDMA_DMACCxControl_DBSize((uint32_t)GPDMA_LUTPerBurst[GPDMAChannelConfig-&amp;gt;SrcConn]) \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;| GPDMA_DMACCxControl_SWidth((uint32_t)GPDMA_LUTPerWid[GPDMAChannelConfig-&amp;gt;SrcConn]) \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;| GPDMA_DMACCxControl_DWidth((uint32_t)GPDMA_LUTPerWid[GPDMAChannelConfig-&amp;gt;SrcConn]) \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;| GPDMA_DMACCxControl_SrcTransUseAHBMaster1 \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;| GPDMA_DMACCxControl_DI \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | GPDMA_DMACCxControl_I;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SrcPeripheral = DMAMUX_Config(GPDMAChannelConfig-&amp;gt;SrcConn);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;STRONG&gt; pDMAch-&amp;gt;CControl |= GPDMA_DMACCxControl_TransferSize(((uint32_t)GPDMAChannelConfig-&amp;gt;TransferSize)/4);&lt;/STRONG&gt;&lt;SPAN&gt;----&amp;gt; is Always Zero&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Milind. &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 20:26:11 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T20:26:11Z</dc:date>
    <item>
      <title>GPDMA configuration problem</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/GPDMA-configuration-problem/m-p/586337#M21410</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by milind.mishra on Mon Feb 16 01:41:31 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using the I2S DMA driver, provided by NXP, with ucOS-iii.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Whenever a request to start recording is received from the host, following steps are taken:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; 1) Buffer is allocated to store the data from the I2S.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2) The Buffer pointer and the Transfer size is set passed to the 'pDMAch' structure.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After setting up the DMA, I enable the corresponding channel dedicated for the I2S.. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I, however,&amp;nbsp; observe that the transfer size field in the register always remains zero thereby indicating the DMA controller that the DMA transfer is done, hence I tend to get very frequent interrupts.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So, is there a particular order in which I should configure the controller or is it indicative of a hardware problem?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;case GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// Assign peripheral source address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pDMAch-&amp;gt;CSrcAddr = (uint32_t)GPDMA_LUTPerAddr[GPDMAChannelConfig-&amp;gt;SrcConn];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// Assign memory destination address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pDMAch-&amp;gt;CDestAddr = GPDMAChannelConfig-&amp;gt;DstMemAddr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pDMAch-&amp;gt;CControl&amp;nbsp; =&amp;nbsp;&amp;nbsp; GPDMA_DMACCxControl_SBSize((uint32_t)GPDMA_LUTPerBurst[GPDMAChannelConfig-&amp;gt;SrcConn]) \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;| GPDMA_DMACCxControl_DBSize((uint32_t)GPDMA_LUTPerBurst[GPDMAChannelConfig-&amp;gt;SrcConn]) \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;| GPDMA_DMACCxControl_SWidth((uint32_t)GPDMA_LUTPerWid[GPDMAChannelConfig-&amp;gt;SrcConn]) \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;| GPDMA_DMACCxControl_DWidth((uint32_t)GPDMA_LUTPerWid[GPDMAChannelConfig-&amp;gt;SrcConn]) \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;| GPDMA_DMACCxControl_SrcTransUseAHBMaster1 \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;| GPDMA_DMACCxControl_DI \&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | GPDMA_DMACCxControl_I;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SrcPeripheral = DMAMUX_Config(GPDMAChannelConfig-&amp;gt;SrcConn);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;STRONG&gt; pDMAch-&amp;gt;CControl |= GPDMA_DMACCxControl_TransferSize(((uint32_t)GPDMAChannelConfig-&amp;gt;TransferSize)/4);&lt;/STRONG&gt;&lt;SPAN&gt;----&amp;gt; is Always Zero&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Milind. &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:26:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/GPDMA-configuration-problem/m-p/586337#M21410</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:26:11Z</dc:date>
    </item>
  </channel>
</rss>

