<?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>Kinetis MicrocontrollersのトピックK64 ADC sample  abnormal?</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850706#M51152</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;os: ucosiii + LWIP&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;hardware:&lt;SPAN style="font-weight: bold;"&gt;K64&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;PIT0 -&amp;gt; DMA0&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;DMA0-&amp;gt;ADC0&amp;nbsp;&amp;nbsp;DMA0 transfer command change adc channel and trigger adc conver.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;ADC0-&amp;gt;DMA8&amp;nbsp; transfer the result to buffer.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;set DMA0 priority to 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #e66a08; font-weight: bold; font-size: 18px;"&gt;set DMA8 priority to 8;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #e66a08; font-weight: bold; font-size: 18px;"&gt;ADC convert rate:25kps/per channel.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #e66a08; font-weight: bold; font-size: 18px;"&gt;adc convert data send to PC by ethernet.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #e66a08; font-weight: bold; font-size: 18px;"&gt;some times adc sample data is abnormal, have&amp;nbsp;glitch， sometimes is normal, how to solve this problem?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 22 Jan 2019 03:23:32 GMT</pubDate>
    <dc:creator>xxwl0406</dc:creator>
    <dc:date>2019-01-22T03:23:32Z</dc:date>
    <item>
      <title>K64 ADC sample  abnormal?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850706#M51152</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;os: ucosiii + LWIP&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;hardware:&lt;SPAN style="font-weight: bold;"&gt;K64&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;PIT0 -&amp;gt; DMA0&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;DMA0-&amp;gt;ADC0&amp;nbsp;&amp;nbsp;DMA0 transfer command change adc channel and trigger adc conver.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;ADC0-&amp;gt;DMA8&amp;nbsp; transfer the result to buffer.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e66a08; background-color: #ffffff; font-weight: bold; font-size: 18px;"&gt;set DMA0 priority to 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #e66a08; font-weight: bold; font-size: 18px;"&gt;set DMA8 priority to 8;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #e66a08; font-weight: bold; font-size: 18px;"&gt;ADC convert rate:25kps/per channel.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #e66a08; font-weight: bold; font-size: 18px;"&gt;adc convert data send to PC by ethernet.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #e66a08; font-weight: bold; font-size: 18px;"&gt;some times adc sample data is abnormal, have&amp;nbsp;glitch， sometimes is normal, how to solve this problem?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Jan 2019 03:23:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850706#M51152</guid>
      <dc:creator>xxwl0406</dc:creator>
      <dc:date>2019-01-22T03:23:32Z</dc:date>
    </item>
    <item>
      <title>Re: K64 ADC sample  abnormal?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850707#M51153</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Zh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would suggest you check with your power, could you please test your app with a stable power? we should first rule out the power issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please also refer to below AN4373, Cookbook for SAR ADC Measurements&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://www.nxp.com/docs/en/application-note/AN4373.pdf" title="https://www.nxp.com/docs/en/application-note/AN4373.pdf"&gt;https://www.nxp.com/docs/en/application-note/AN4373.pdf&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Feb 2019 03:20:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850707#M51153</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2019-02-01T03:20:00Z</dc:date>
    </item>
    <item>
      <title>Re: K64 ADC sample  abnormal?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850708#M51154</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@&lt;A _jive_internal="true" data-content-finding="Community" data-userid="216019" data-username="danielchen@fsl" href="https://community.nxp.com/people/danielchen@fsl" style="color: #3d9ce7; background-color: #ffffff; border: 0px; font-weight: 200; text-decoration: none; font-size: 1.286rem;"&gt;Daniel Chen&lt;/A&gt;&lt;SPAN style="color: #3d9ce7; background-color: #ffffff; font-weight: 500;"&gt;&lt;SPAN&gt;&amp;nbsp;，Can check my adc code for me ?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;volatile int16_t adc0_0_acqusition_buffer[ACCELERATION_DATA_LENGTH * NUMBER_OF_ADC0MEASUREMENT * 2];&lt;BR /&gt;volatile int16_t adc1_1_acqusition_buffer[ACCELERATION_DATA_LENGTH * NUMBER_OF_ADC1MEASUREMENT * 2];&lt;/P&gt;&lt;P&gt;edma_handle_t EDMA_ADC0_setchannel_handle;&lt;BR /&gt;/* for transfer ADC0 result to memory */&lt;BR /&gt;edma_handle_t EDMA_ADC0_transfer_handle;&lt;/P&gt;&lt;P&gt;/* for transfer switch channel command to sc1 register */&lt;BR /&gt;edma_handle_t EDMA_ADC1_setchannel_handle;&lt;BR /&gt;/* for transfer ADC1 result to memory */&lt;BR /&gt;edma_handle_t EDMA_ADC1_transfer_handle;&lt;/P&gt;&lt;P&gt;/* define transfer type */&lt;BR /&gt;edma_transfer_config_t ADC0_setchannel_config;&lt;BR /&gt;edma_transfer_config_t ADC0_transfer_config;&lt;BR /&gt;edma_transfer_config_t ADC1_setchannel_config;&lt;BR /&gt;edma_transfer_config_t ADC1_transfer_config;&lt;/P&gt;&lt;P&gt;const uint8_t ADC0_channels_cmd[] = &lt;BR /&gt;{&lt;BR /&gt; ADC_SC1_ADCH(0),&lt;BR /&gt; ADC_SC1_ADCH(1),&lt;BR /&gt; ADC_SC1_ADCH(21),&lt;BR /&gt; ADC_SC1_ADCH(22),&lt;BR /&gt; ADC_SC1_ADCH(26) /* reserved */&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;const uint8_t ADC1_channels_cmd[] = &lt;BR /&gt;{&lt;BR /&gt; ADC_SC1_ADCH(0),&lt;BR /&gt; ADC_SC1_ADCH(1),&lt;BR /&gt; ADC_SC1_ADCH(18),&lt;BR /&gt; ADC_SC1_ADCH(14),&lt;BR /&gt; ADC_SC1_ADCH(23) /* reserved */&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;static void eDMA_ADC0_callback(edma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds);&lt;BR /&gt;static void eDMA_ADC1_callback(edma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds);&lt;/P&gt;&lt;P&gt;void DMAMUX_configuration(void)&lt;BR /&gt;{&lt;BR /&gt; /* Configure DMAMUX */&lt;BR /&gt; DMAMUX_Init(DMAMUX0);&lt;/P&gt;&lt;P&gt;/* Map ADC0 set sc1 register to channel 0 */&lt;BR /&gt; DMAMUX_SetSource(DMAMUX0, DMA_ADC0_SETCHANNEL, DMA_ADC0_ALWAYSENABLED);&lt;BR /&gt; DMAMUX_EnablePeriodTrigger(DMAMUX0, DMA_ADC0_SETCHANNEL);&lt;BR /&gt; DMAMUX_EnableChannel(DMAMUX0, DMA_ADC0_SETCHANNEL);&lt;/P&gt;&lt;P&gt;/* Map ADC0 result to channel 1 */&lt;BR /&gt; DMAMUX_SetSource(DMAMUX0, DMA_ADC0_TRANSFER, DMA_ADC0_RESULT);&lt;BR /&gt; DMAMUX_EnableChannel(DMAMUX0, DMA_ADC0_TRANSFER);&lt;BR /&gt; &lt;BR /&gt; /* Map ADC1 set sc1 register to channel 2 */&lt;BR /&gt; DMAMUX_SetSource(DMAMUX0, DMA_ADC1_SETCHANNEL, DMA_ADC1_ALWAYSENABLED);&lt;BR /&gt; DMAMUX_EnablePeriodTrigger(DMAMUX0, DMA_ADC1_SETCHANNEL);&lt;BR /&gt; DMAMUX_EnableChannel(DMAMUX0, DMA_ADC1_SETCHANNEL);&lt;/P&gt;&lt;P&gt;/* Map ADC0 result to channel 3 */&lt;BR /&gt; DMAMUX_SetSource(DMAMUX0, DMA_ADC1_TRANSFER, DMA_ADC1_RESULT);&lt;BR /&gt; DMAMUX_EnableChannel(DMAMUX0, DMA_ADC1_TRANSFER);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;#define ENABLE_DMA_PREEMPTION 1&lt;BR /&gt;/*****************************************************************************&lt;BR /&gt;** Funcation : eDMA_configuration&lt;BR /&gt;** Description: inital dma and create handles for adc0 and adc1 .&lt;BR /&gt;** Arguments : void&lt;BR /&gt;** Return : void&lt;BR /&gt;*****************************************************************************/&lt;BR /&gt;void eDMA_ADC0_configuration(void)&lt;BR /&gt;{&lt;BR /&gt; edma_config_t userConfig;&lt;BR /&gt; status_t status;&lt;/P&gt;&lt;P&gt;const edma_channel_Preemption_config_t adc0_setchl_config = &lt;BR /&gt; {&lt;BR /&gt; .enableChannelPreemption = true,&lt;BR /&gt; .enablePreemptAbility = true,&lt;BR /&gt; .channelPriority = DMA_ADC0_SETCHANNEL, //low priority&lt;BR /&gt; };&lt;BR /&gt; &lt;BR /&gt; const edma_channel_Preemption_config_t adc0_transfer_config = &lt;BR /&gt; {&lt;BR /&gt; .enableChannelPreemption = true,&lt;BR /&gt; .enablePreemptAbility = true,&lt;BR /&gt; .channelPriority = DMA_ADC0_TRANSFER, //high priority&lt;BR /&gt; };&lt;BR /&gt; &lt;BR /&gt; EDMA_GetDefaultConfig(&amp;amp;userConfig);&lt;BR /&gt; userConfig.enableContinuousLinkMode = true;&lt;BR /&gt; EDMA_Init(DMA0, &amp;amp;userConfig);&lt;BR /&gt; &lt;BR /&gt; EDMA_ResetChannel(DMA0, DMA_ADC0_SETCHANNEL);&lt;BR /&gt; &lt;BR /&gt; #if ENABLE_DMA_PREEMPTION&lt;BR /&gt; EDMA_SetChannelPreemptionConfig(DMA0, DMA_ADC0_SETCHANNEL, &amp;amp;adc0_setchl_config);&lt;BR /&gt; #endif&lt;BR /&gt; &lt;BR /&gt; /* init dma channel 0 for set ADC0 channel */&lt;BR /&gt; EDMA_CreateHandle(&amp;amp;EDMA_ADC0_setchannel_handle, DMA0, DMA_ADC0_SETCHANNEL);&lt;BR /&gt; //EDMA_SetCallback(&amp;amp;EDMA_ADC0_setchannel_handle, eDMA_ADC0_callback, NULL);&lt;BR /&gt; EDMA_PrepareTransfer(&amp;amp;ADC0_setchannel_config, (void *)ADC0_channels_cmd, sizeof(ADC0_channels_cmd[0]),&lt;BR /&gt; (void *)ADC0_SC1_REG_ADDR, sizeof(uint8_t), sizeof(ADC0_channels_cmd[0]),&lt;BR /&gt; sizeof(ADC0_channels_cmd), kEDMA_MemoryToPeripheral);&lt;BR /&gt; status = EDMA_SubmitTransfer(&amp;amp;EDMA_ADC0_setchannel_handle, &amp;amp;ADC0_setchannel_config);&lt;BR /&gt; &lt;/P&gt;&lt;P&gt;/* never stop when major loop finished */&lt;BR /&gt; //DMA0-&amp;gt;TCD[DMA_ADC0_SETCHANNEL].CSR &amp;amp;= ~DMA_CSR_DREQ_MASK;&lt;BR /&gt; EDMA_EnableAutoStopRequest(DMA0, DMA_ADC0_SETCHANNEL, false);&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; DMA0-&amp;gt;TCD[DMA_ADC0_SETCHANNEL].SLAST = -1 * (int32_t)(sizeof(ADC0_channels_cmd));&lt;BR /&gt; EDMA_DisableChannelInterrupts(DMA0, DMA_ADC0_SETCHANNEL, kEDMA_MajorInterruptEnable&lt;BR /&gt; | kEDMA_ErrorInterruptEnable&lt;BR /&gt; | kEDMA_HalfInterruptEnable);&lt;BR /&gt; &lt;BR /&gt; /* Enable transfer. */&lt;BR /&gt; EDMA_StartTransfer(&amp;amp;EDMA_ADC0_setchannel_handle);&lt;/P&gt;&lt;P&gt;EDMA_ResetChannel(DMA0, DMA_ADC0_TRANSFER);&lt;BR /&gt; &lt;BR /&gt; #if ENABLE_DMA_PREEMPTION&lt;BR /&gt; EDMA_SetChannelPreemptionConfig(DMA0, DMA_ADC0_TRANSFER, &amp;amp;adc0_transfer_config);&lt;BR /&gt; #endif&lt;BR /&gt; &lt;BR /&gt; /* init dma channel 1 for result transfer */&lt;BR /&gt; EDMA_CreateHandle(&amp;amp;EDMA_ADC0_transfer_handle, DMA0, DMA_ADC0_TRANSFER);&lt;BR /&gt; EDMA_SetCallback(&amp;amp;EDMA_ADC0_transfer_handle, eDMA_ADC0_callback, NULL);&lt;BR /&gt; EDMA_PrepareTransfer(&amp;amp;ADC0_transfer_config, (void *)ADC0_RESULT_REG_ADDR, sizeof(uint16_t),&lt;BR /&gt; (void *)adc0_0_acqusition_buffer, sizeof(uint16_t), sizeof(uint16_t),&lt;BR /&gt; sizeof(adc0_0_acqusition_buffer), kEDMA_PeripheralToMemory);&lt;BR /&gt; status = EDMA_SubmitTransfer(&amp;amp;EDMA_ADC0_transfer_handle, &amp;amp;ADC0_transfer_config);&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; /* never stop when major loop finished */&lt;BR /&gt; //DMA0-&amp;gt;TCD[DMA_ADC0_TRANSFER].CSR &amp;amp;= ~DMA_CSR_DREQ_MASK;&lt;/P&gt;&lt;P&gt;EDMA_EnableAutoStopRequest(DMA0, DMA_ADC0_TRANSFER, false);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; DMA0-&amp;gt;TCD[DMA_ADC0_TRANSFER].DLAST_SGA = -1 * (int32_t)(sizeof(adc0_0_acqusition_buffer));&lt;BR /&gt; &lt;BR /&gt; EDMA_EnableChannelInterrupts(DMA0, DMA_ADC0_TRANSFER, kEDMA_MajorInterruptEnable&lt;BR /&gt; | kEDMA_ErrorInterruptEnable&lt;BR /&gt; | kEDMA_HalfInterruptEnable);&lt;BR /&gt; /* Enable transfer. */&lt;BR /&gt; EDMA_StartTransfer(&amp;amp;EDMA_ADC0_transfer_handle);&lt;BR /&gt; &lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void eDMA_ADC1_configuration(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;const edma_channel_Preemption_config_t adc1_setchl_config = &lt;BR /&gt; {&lt;BR /&gt; .enableChannelPreemption = true,&lt;BR /&gt; .enablePreemptAbility = true,&lt;BR /&gt; .channelPriority = DMA_ADC1_SETCHANNEL, //low priority&lt;BR /&gt; };&lt;BR /&gt; &lt;BR /&gt; const edma_channel_Preemption_config_t adc1_transfer_config = &lt;BR /&gt; {&lt;BR /&gt; .enableChannelPreemption = true,&lt;BR /&gt; .enablePreemptAbility = true,&lt;BR /&gt; .channelPriority = DMA_ADC1_TRANSFER, //high priority&lt;BR /&gt; };&lt;BR /&gt; &lt;BR /&gt; EDMA_ResetChannel(DMA0, DMA_ADC1_SETCHANNEL);&lt;BR /&gt; #if ENABLE_DMA_PREEMPTION&lt;BR /&gt; EDMA_SetChannelPreemptionConfig(DMA0, DMA_ADC1_SETCHANNEL, &amp;amp;adc1_setchl_config); &lt;BR /&gt; #endif&lt;BR /&gt; &lt;BR /&gt; /* init dma channel 0 for set ADC0 channel */&lt;BR /&gt; EDMA_CreateHandle(&amp;amp;EDMA_ADC1_setchannel_handle, DMA0, DMA_ADC1_SETCHANNEL);&lt;BR /&gt; //EDMA_SetCallback(&amp;amp;EDMA_ADC1_setchannel_handle, eDMA_ADC1_callback, NULL);&lt;BR /&gt; EDMA_PrepareTransfer(&amp;amp;ADC1_setchannel_config, (void *)ADC1_channels_cmd, sizeof(ADC1_channels_cmd[0]),&lt;BR /&gt; (void *)ADC1_SC1_REG_ADDR, sizeof(uint8_t), sizeof(ADC1_channels_cmd[0]),&lt;BR /&gt; sizeof(ADC1_channels_cmd), kEDMA_MemoryToPeripheral);&lt;BR /&gt; EDMA_SubmitTransfer(&amp;amp;EDMA_ADC1_setchannel_handle, &amp;amp;ADC1_setchannel_config);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /* never stop when major loop finished */&lt;BR /&gt; //DMA0-&amp;gt;TCD[DMA_ADC1_SETCHANNEL].CSR &amp;amp;= ~DMA_CSR_DREQ_MASK;&lt;BR /&gt; EDMA_EnableAutoStopRequest(DMA0, DMA_ADC1_SETCHANNEL, false);&lt;BR /&gt; &lt;BR /&gt; DMA0-&amp;gt;TCD[DMA_ADC1_SETCHANNEL].SLAST = -1 * (int32_t)(sizeof(ADC1_channels_cmd));&lt;BR /&gt; &lt;BR /&gt; EDMA_DisableChannelInterrupts(DMA0, DMA_ADC1_SETCHANNEL, kEDMA_MajorInterruptEnable&lt;BR /&gt; | kEDMA_ErrorInterruptEnable&lt;BR /&gt; | kEDMA_HalfInterruptEnable);&lt;BR /&gt; &lt;BR /&gt; /* Enable transfer. */&lt;BR /&gt; EDMA_StartTransfer(&amp;amp;EDMA_ADC1_setchannel_handle);&lt;BR /&gt; &lt;BR /&gt; EDMA_ResetChannel(DMA0, DMA_ADC1_TRANSFER);&lt;BR /&gt; &lt;BR /&gt; #if ENABLE_DMA_PREEMPTION &lt;BR /&gt; EDMA_SetChannelPreemptionConfig(DMA0, DMA_ADC1_TRANSFER, &amp;amp;adc1_transfer_config); &lt;BR /&gt; #endif &lt;BR /&gt; &lt;BR /&gt; EDMA_CreateHandle(&amp;amp;EDMA_ADC1_transfer_handle, DMA0, DMA_ADC1_TRANSFER);&lt;BR /&gt; EDMA_SetCallback(&amp;amp;EDMA_ADC1_transfer_handle, eDMA_ADC1_callback, NULL);&lt;BR /&gt; EDMA_PrepareTransfer(&amp;amp;ADC1_transfer_config, (void *)ADC1_RESULT_REG_ADDR, sizeof(uint16_t),&lt;BR /&gt; (void *)adc1_1_acqusition_buffer, sizeof(uint16_t), sizeof(uint16_t),&lt;BR /&gt; sizeof(adc1_1_acqusition_buffer), kEDMA_PeripheralToMemory);&lt;BR /&gt; EDMA_SubmitTransfer(&amp;amp;EDMA_ADC1_transfer_handle, &amp;amp;ADC1_transfer_config);&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; /* never stop when major loop finished */&lt;BR /&gt; //DMA0-&amp;gt;TCD[DMA_ADC1_TRANSFER].CSR &amp;amp;= ~DMA_CSR_DREQ_MASK; &lt;BR /&gt; EDMA_EnableAutoStopRequest(DMA0, DMA_ADC1_TRANSFER, false);&lt;BR /&gt; &lt;BR /&gt; DMA0-&amp;gt;TCD[DMA_ADC1_TRANSFER].DLAST_SGA = -1 * (int32_t)(sizeof(adc1_1_acqusition_buffer));&lt;BR /&gt; //DMA0-&amp;gt;TCD[DMA_ADC0_TRANSFER].CSR &amp;amp;= ~DMA_CSR_DREQ_MASK;&lt;BR /&gt; //DMA0-&amp;gt;TCD[DMA_ADC0_TRANSFER].SLAST = -1 * (int16_t)(sizeof(adc0_0_acqusition_buffer));&lt;BR /&gt; /* Enable interrupt when transfer is done. */&lt;BR /&gt; EDMA_EnableChannelInterrupts(DMA0, DMA_ADC1_TRANSFER, kEDMA_MajorInterruptEnable&lt;BR /&gt; | kEDMA_HalfInterruptEnable);&lt;/P&gt;&lt;P&gt;/* Enable transfer. */&lt;BR /&gt; EDMA_StartTransfer(&amp;amp;EDMA_ADC1_transfer_handle); &lt;BR /&gt; &lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;static void eDMA_ADC0_callback(edma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;OS_ERR os_err;&lt;BR /&gt; OSIntEnter();&lt;BR /&gt; /* Clear Edma interrupt flag. */&lt;BR /&gt; EDMA_ClearChannelStatusFlags(DMA0, DMA_ADC0_TRANSFER, kEDMA_InterruptFlag | kEDMA_DoneFlag | kEDMA_ErrorFlag);&lt;BR /&gt; __DSB();&lt;BR /&gt; OSIntExit();&lt;BR /&gt;}&lt;BR /&gt;static void eDMA_ADC1_callback(edma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds)&lt;BR /&gt;{&lt;BR /&gt; OS_ERR os_err;&lt;BR /&gt; OSIntEnter();&lt;BR /&gt; /* Clear Edma interrupt flag. */&lt;BR /&gt; EDMA_ClearChannelStatusFlags(DMA0, DMA_ADC1_TRANSFER, kEDMA_InterruptFlag | kEDMA_DoneFlag | kEDMA_ErrorFlag);&lt;BR /&gt; __DSB();&lt;BR /&gt; OSIntExit();&lt;BR /&gt; &lt;BR /&gt; //PRINTF("line:%d,OSTimeGet:%d \r\n", __LINE__, OSTimeGet( &amp;amp;os_err));&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void ADC_init(ADC_Type *base)&lt;BR /&gt;{&lt;BR /&gt; adc16_config_t adc16ConfigStruct;&lt;/P&gt;&lt;P&gt;ADC16_GetDefaultConfig(&amp;amp;adc16ConfigStruct);&lt;BR /&gt; adc16ConfigStruct.enableLowPower = false;&lt;BR /&gt; /* Bus clock */&lt;BR /&gt; adc16ConfigStruct.clockSource = kADC16_ClockSourceAlt3;&lt;BR /&gt; /* divider 1 */&lt;BR /&gt; adc16ConfigStruct.clockDivider = kADC16_ClockDivider1;&lt;BR /&gt; adc16ConfigStruct.resolution = kADC16_ResolutionSE16Bit; &lt;BR /&gt; adc16ConfigStruct.referenceVoltageSource = kADC16_ReferenceVoltageSourceVref;&lt;BR /&gt; adc16ConfigStruct.enableAsynchronousClock = false;&lt;BR /&gt; adc16ConfigStruct.enableHighSpeed = true;&lt;BR /&gt; adc16ConfigStruct.longSampleMode = kADC16_LongSampleCycle24;&lt;/P&gt;&lt;P&gt;/* continue convertion for dma */&lt;BR /&gt; adc16ConfigStruct.enableContinuousConversion = false;&lt;/P&gt;&lt;P&gt;ADC16_Init(base, &amp;amp;adc16ConfigStruct);&lt;BR /&gt; &lt;BR /&gt; /* Make sure the software trigger is used. */&lt;BR /&gt; ADC16_EnableHardwareTrigger(base, false);&lt;/P&gt;&lt;P&gt;/* Configure hardware average mode */&lt;BR /&gt; ADC16_SetHardwareAverage(base, kADC16_HardwareAverageDisabled);&lt;/P&gt;&lt;P&gt;/* Configure channel multiplexing mode */&lt;BR /&gt; ADC16_SetChannelMuxMode(base, kADC16_ChannelMuxA);&lt;BR /&gt; &lt;BR /&gt; if (kStatus_Success != ADC16_DoAutoCalibration(base))&lt;BR /&gt; {&lt;BR /&gt; APP_TRACE_DBG(("ADC16_DoAutoCalibration(ADC) failed.\r\n"));&lt;BR /&gt; }else{&lt;BR /&gt; APP_TRACE_DBG(("ADC16_DoAutoCalibration(ADC) done.\r\n"));&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;/* allow dma */&lt;BR /&gt; ADC16_EnableDMA(base, true);&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Feb 2019 13:25:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850708#M51154</guid>
      <dc:creator>xxwl0406</dc:creator>
      <dc:date>2019-02-22T13:25:13Z</dc:date>
    </item>
    <item>
      <title>Re: K64 ADC sample  abnormal?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850709#M51155</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;#define DMA_ADC0_SETCHANNEL 0U&lt;BR /&gt;#define DMA_ADC0_ALWAYSENABLED 58U /* fixed */&lt;BR /&gt;#define DMA_ADC0_TRANSFER 2U&lt;BR /&gt;#define DMA_ADC0_RESULT 40U /* fixed */&lt;/P&gt;&lt;P&gt;#define DMA_ADC1_SETCHANNEL 1U&lt;BR /&gt;#define DMA_ADC1_ALWAYSENABLED 59U /* fixed */&lt;BR /&gt;#define DMA_ADC1_TRANSFER 3U&lt;BR /&gt;#define DMA_ADC1_RESULT 41U /* fixed */&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Feb 2019 14:02:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850709#M51155</guid>
      <dc:creator>xxwl0406</dc:creator>
      <dc:date>2019-02-22T14:02:11Z</dc:date>
    </item>
    <item>
      <title>Re: K64 ADC sample  abnormal?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850710#M51156</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #3d9ce7; background-color: #ffffff; font-weight: 500;"&gt;Can check my adc code for me ?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Feb 2019 14:03:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K64-ADC-sample-abnormal/m-p/850710#M51156</guid>
      <dc:creator>xxwl0406</dc:creator>
      <dc:date>2019-02-22T14:03:27Z</dc:date>
    </item>
  </channel>
</rss>

