<?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: K64F PBD/ADC/DMA configuration problem in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64F-PBD-ADC-DMA-configuration-problem/m-p/502262#M31471</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI Alice,&lt;/P&gt;&lt;P&gt;I realized that minor count should be 2 in my configuration. After updating that, DMA is working at the first trigger but not continue although ADC conversions exist.&lt;/P&gt;&lt;P&gt;To understand cause of DMA error/inconstancy which exact registers should I look?&lt;/P&gt;&lt;P&gt;Could you please check my configuration, is there any missing point?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Serdar &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 23 Dec 2015 14:03:37 GMT</pubDate>
    <dc:creator>serdar</dc:creator>
    <dc:date>2015-12-23T14:03:37Z</dc:date>
    <item>
      <title>K64F PBD/ADC/DMA configuration problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64F-PBD-ADC-DMA-configuration-problem/m-p/502260#M31469</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;I have been trying to configure PDB/ADC/DMA chain. I achieved PDB and ADC related configuration. PDB is working in one-shot mode for debugging. I saw that ADC conversion is done when I start PDB timer. I also manage configuring DMA to copy memory to memory with manual start but I can't do it for ADC0 to memory.&lt;/P&gt;&lt;P&gt;I am using K64F, Kinetis SDK 1.20, Processor Expert. Could you please check the configuration code and point what I am missing?&lt;/P&gt;&lt;P&gt;Thanks in Advance&lt;/P&gt;&lt;P&gt;Serdar&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ADC Config&lt;/P&gt;&lt;P&gt;const adc16_converter_config_t adc_InitConfig0 = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .lowPowerEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .clkDividerMode = kAdc16ClkDividerOf1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .longSampleTimeEnable = true,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .resolution = kAdc16ResolutionBitOfSingleEndAs12,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .clkSrc = kAdc16ClkSrcOfBusClk,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .asyncClkEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .highSpeedEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .longSampleCycleMode = kAdc16LongSampleCycleOf24,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .hwTriggerEnable = true,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .refVoltSrc = kAdc16RefVoltSrcOfVref,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .continuousConvEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .dmaEnable = true,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;const adc16_hw_cmp_config_t adc_HwConfig0 = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .hwCmpEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .hwCmpGreaterThanEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .hwCmpRangeEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .cmpValue1 = 0U,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .cmpValue2 = 0U,&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;const adc16_chn_config_t adc_ChnConfig0 = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .chnIdx = kAdc16Chn14,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .convCompletedIntEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .diffConvEnable = false&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// PDB config&lt;/P&gt;&lt;P&gt;pdb_timer_config_t adcTimer_InitConfig1 = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .loadValueMode = kPdbLoadValueImmediately,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .seqErrIntEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .clkPreDiv = kPdbClkPreDivBy128,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .clkPreMultFactor = kPdbClkPreMultFactorAs1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .triggerInput = kPdbSoftTrigger,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .continuousModeEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .dmaEnable = false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .intEnable = true,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// EDMA config&lt;/P&gt;&lt;P&gt;const edma_user_config_t dmaController1_InitConfig0 = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .chnArbitration = kEDMAChnArbitrationRoundrobin,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .notHaltOnError = false,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// init&lt;/P&gt;&lt;P&gt;&amp;nbsp; ADC16_DRV_Deinit(FSL_ADC);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ADC16_DRV_Init(FSL_ADC, &amp;amp;adc_InitConfig0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ADC16_DRV_ConfigConvChn(FSL_ADC, 0U, &amp;amp;adc_ChnConfig0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PDB_DRV_Deinit(FSL_ADCTIMER);&lt;/P&gt;&lt;P&gt;&amp;nbsp; PDB_DRV_Init(FSL_ADCTIMER, &amp;amp;adcTimer_InitConfig1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; //&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PDB_DRV_ConfigAdcPreTrigger(FSL_ADCTIMER, 0, &amp;amp;adcTimer_AdcTrigInitConfig0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PDB_DRV_SetTimerModulusValue(FSL_ADCTIMER, 0xFFFU);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PDB_DRV_SetValueForTimerInterrupt(FSL_ADCTIMER, 0xFFFU);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PDB_DRV_LoadValuesCmd(FSL_ADCTIMER);&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; // Configure SIM for ADC hw trigger source PDB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_HAL_SetAdcAlternativeTriggerCmd(gSimBase[0], FSL_ADC, false);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; EDMA_DRV_Deinit();&lt;/P&gt;&lt;P&gt;&amp;nbsp; EDMA_DRV_Init(&amp;amp;dmaController1_State, &amp;amp;dmaController1_InitConfig0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // EDMA channel request.&lt;/P&gt;&lt;P&gt;&amp;nbsp; edmaStatus = EDMA_DRV_RequestChannel(channel, kDmaRequestMux0ADC0, &amp;amp;chnState);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; edma_transfer_config_t configDMA; // FIXME cikart buradan&lt;/P&gt;&lt;P&gt;&amp;nbsp; edma_software_tcd_t stcdDmaChn0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Configure DMA&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.srcAddr = (uint32_t) (&amp;amp;ADC0_RA);&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.destAddr = (uint32_t) (images[0]);&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.srcTransferSize = kEDMATransferSize_2Bytes; // Source data transfer size.&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.destTransferSize = kEDMATransferSize_2Bytes; // Destination data transfer size.&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.srcOffset = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.destOffset = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.srcLastAddrAdjust = 0; // Last source address adjustment.&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.destLastAddrAdjust = 2; /*!&amp;lt; Last destination address adjustment. Note here it is only valid when scatter/gather feature is not enabled. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.srcModulo = kEDMAModuloDisable; // Source address modulo. FIXME: bu ne&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.destModulo = kEDMAModuloDisable; // Destination address modulo.&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.minorLoopCount = 1; // Minor bytes transfer count. Number of bytes to be transferred in each service request of the channel.&lt;/P&gt;&lt;P&gt;&amp;nbsp; configDMA.majorLoopCount = 1; // Major iteration count.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; edmaStatus = EDMA_DRV_PrepareDescriptorTransfer(&amp;amp;chnState, &amp;amp;stcdDmaChn0, &amp;amp;configDMA, true, false);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (edmaStatus == kStatus_EDMA_Success)&lt;/P&gt;&lt;P&gt;&amp;nbsp; edmaStatus = EDMA_DRV_PushDescriptorToReg(&amp;amp;chnState, &amp;amp;stcdDmaChn0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Install callback for eDMA handler&lt;/P&gt;&lt;P&gt;&amp;nbsp; edmaStatus = EDMA_DRV_InstallCallback(&amp;amp;chnState, edma_isr_callback, NULL);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Dec 2015 20:15:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64F-PBD-ADC-DMA-configuration-problem/m-p/502260#M31469</guid>
      <dc:creator>serdar</dc:creator>
      <dc:date>2015-12-22T20:15:46Z</dc:date>
    </item>
    <item>
      <title>Re: K64F PBD/ADC/DMA configuration problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64F-PBD-ADC-DMA-configuration-problem/m-p/502261#M31470</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello serdar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You said&amp;nbsp; the PDB trigger the ADC can work well , while the DMA can not transfer ADC result ,&lt;/P&gt;&lt;P&gt;so i think maybe the DMA configure have some error , please check the register "DMA_ES".&lt;/P&gt;&lt;P&gt;(1) When using the eDMA you have to respect its rules:&lt;/P&gt;&lt;P&gt;- all source and destination addresses MUST be aligned (if using 32 bits the last 2 bits of the address MUST bei 00) - check UART_RINGBUFFER address.&lt;/P&gt;&lt;P&gt;- also the transfer count MUST match with the transfer width. If using 32 bit width the total size must be a multiple of this value (4, 8, 12, 16, 20 etc.) If not there will be an error and an abort.&lt;/P&gt;&lt;P&gt;Always check what the error register is telling you - it tells you the reason and whether it was due to the destination or the source. Then you should be able to see why and correct it.&amp;nbsp; (It quoted from my colleague &lt;SPAN class="j-status-levels"&gt;&lt;/SPAN&gt;&lt;SPAN class="j-post-author"&gt;&lt;STRONG&gt;&lt;A _jive_internal="true" data-avatarid="2225" data-content-finding="Community" data-externalid="" data-presence="null" data-userid="11074" data-username="mjbcswitzerland" href="https://community.nxp.com/people/mjbcswitzerland"&gt;Mark Butcher&lt;/A&gt;&amp;nbsp; &lt;/STRONG&gt;&lt;/SPAN&gt;)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;(2)&amp;nbsp; About use the PDB trigger ADC , the use DMA transfer data , you can refer to this demo :&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/docs/DOC-102951"&gt;PIT- ADC- DMA Example for FRDM-KL25z, FRDM-K64F, TWR-K60D100 and TWR-K70&lt;/A&gt;&amp;nbsp;&amp;nbsp; "&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it helps&lt;BR /&gt;Have a great day,&lt;BR /&gt;Alice Yang&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, 23 Dec 2015 02:43:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64F-PBD-ADC-DMA-configuration-problem/m-p/502261#M31470</guid>
      <dc:creator>Alice_Yang</dc:creator>
      <dc:date>2015-12-23T02:43:54Z</dc:date>
    </item>
    <item>
      <title>Re: K64F PBD/ADC/DMA configuration problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64F-PBD-ADC-DMA-configuration-problem/m-p/502262#M31471</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI Alice,&lt;/P&gt;&lt;P&gt;I realized that minor count should be 2 in my configuration. After updating that, DMA is working at the first trigger but not continue although ADC conversions exist.&lt;/P&gt;&lt;P&gt;To understand cause of DMA error/inconstancy which exact registers should I look?&lt;/P&gt;&lt;P&gt;Could you please check my configuration, is there any missing point?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Serdar &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Dec 2015 14:03:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64F-PBD-ADC-DMA-configuration-problem/m-p/502262#M31471</guid>
      <dc:creator>serdar</dc:creator>
      <dc:date>2015-12-23T14:03:37Z</dc:date>
    </item>
    <item>
      <title>Re: K64F PBD/ADC/DMA configuration problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64F-PBD-ADC-DMA-configuration-problem/m-p/502263#M31472</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Serdar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- First you need check the register&amp;nbsp; " Error Status Register (DMA_ES) "&lt;/P&gt;&lt;P&gt;- I think here have problem when configure the destination address :&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/36958i6C4A3693E0ABD9C7/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;the images[0] is a address ?&lt;/P&gt;&lt;P&gt;- and this&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/8847i57B8EC34F904DC65/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt; , &lt;/P&gt;&lt;P&gt;i think the smallest data should&amp;nbsp; be 2 , or 4 , 6, ...&lt;/P&gt;&lt;P&gt;- And first i recommend you not enable the DMA interrupt , when the dma can work well , then configure the interrupt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Alice&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Dec 2015 08:47:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64F-PBD-ADC-DMA-configuration-problem/m-p/502263#M31472</guid>
      <dc:creator>Alice_Yang</dc:creator>
      <dc:date>2015-12-24T08:47:46Z</dc:date>
    </item>
  </channel>
</rss>

