<?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: How to achieve 80MHz using DMA from LPC4370's HSADC? in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531549#M10243</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: tahoma, arial, helvetica, sans-serif;"&gt;I agree, it is a bug. It will affect some peripheral to peripheral transfers and many memory to peripheral transfers. However peripheral to memory transfers may not be a problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: tahoma, arial, helvetica, sans-serif;"&gt;These settings are for optimizing transfers, but having different settings for RAM is not necessary unless you cross page boundaries in paged memory as may be the case for some external RAM. In any case, tranfering from peripheral to memory(RAM) should not fail, because any of the burst settings for peripherals will not be likely to cross the page boundaries for RAM in one burst. However, I did not use the library for the transfers since I needed to use a burst size of 16 to meet the transfer speed requirement, but I did use it as reference for my code&amp;nbsp;.&lt;/SPAN&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;&lt;STRONG&gt;21.8.4 Address generation&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;Address generation can be either incrementing or non-incrementing (address wrapping is&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;not supported).&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;Some devices, especially memories, disallow burst accesses across certain address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;boundaries. The DMA controller assumes that this is the case with any source or&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;destination area, which is configured for incrementing addressing. This boundary is&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;assumed to be aligned with the specified burst size. For example, if the channel is set for&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;16-transfer burst to a 32-bit wide device then the boundary is 64-bytes aligned (that is&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;address bits [5:0] equal 0). If a DMA burst is to cross one of these boundaries, then,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;instead of a burst, that transfer is split into separate AHB transactions.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; When transferring data to or from the SDRAM, the SDRAM access must always be&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;programmed to 32 bit accesses. The SDRAM memory controller does not support&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;AHB-INCR4 or INCR8 bursts using halfword or byte transfer-size. Start address in&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;SDRAM should always be aligned to a burst boundary address.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;&lt;STRONG&gt;21.8.4.1 Word-aligned transfers across a boundary&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;The channel is configured for 16-transfer bursts, each transfer 32-bits wide, to a&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;destination for which address incrementing is enabled. The start address for the current&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;burst is 0x0C000024, the next boundary (calculated from the burst size and transfer&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;width) is 0x0C000040.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;The transfer will be split into two AHB transactions:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 60px;"&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;&lt;STRONG&gt;•&lt;/STRONG&gt; a 7-transfer burst starting at address 0x0C000024&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: helvetica, arial, sans-serif;"&gt;&lt;STRONG&gt;•&lt;/STRONG&gt; a 9-transfer burst starting at address 0x0C000040.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 08 Oct 2019 15:25:18 GMT</pubDate>
    <dc:creator>Ray_V</dc:creator>
    <dc:date>2019-10-08T15:25:18Z</dc:date>
    <item>
      <title>How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531525#M10219</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am currently trying to help a colleague get use the LPC4370's HSADC for a sensor project and am unable to get the advertised 80M samples from a single ADC channel (ADC0).&amp;nbsp; We are using LPCXpresso and 2 LPClink2's.&amp;nbsp; We have based the project off the example code in "periph_hsadc".&amp;nbsp; We're using some ~2MHz test signals to verify performance (# of samples per cycle).&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've thoroughly read through the relevant sections of the Datasheet and User Manual (CGU, HSADC, DMA etc).&amp;nbsp; I understand the operation of the ADC and it's associated FIFO and also have a good understanding of the DMA settings.&amp;nbsp; I've reviewed many posts found through google (including every relevant post on here).&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Issues:&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Unable to achieve 80MHz from HSADC.&amp;nbsp; Using a 2 MHz sine wave and reading for 4095 samples we see ~20 samples per cycle showing that ADC and DMA are, combined, storing 40MHz bandwidth of data.&amp;nbsp; I assumed this was due to DMA configuration and that ADC was dropping samples due to a full FIFO.&amp;nbsp; Tried using burst reads from DMA and ending up reading an empty FIFO ~every other sample.&amp;nbsp; I believe HSADC is currently running at 40MHz even though it reports that it's clock is set to 80MHz.&amp;nbsp; Code is included below: What could possibly be limiting the sample-rate?&lt;/LI&gt;&lt;LI&gt;As discussed in previous issue we have tried using burst DMA to no avail.&amp;nbsp; User Manual is pretty clear that you have to use a FIFO LEVEL smaller than 15 so that src burst size and FIFO LEVEL will be the same, but no combination of FIFO LEVEL and src burst has yielded increased performance.&amp;nbsp; What are the circumstances / settings that DMA bursts will succeed?&lt;/LI&gt;&lt;LI&gt;We have also tried using Packed mode and run into issues.&amp;nbsp; Packed mode works fine for ~15 samples after which the packed sample is ALWAYS 0.&amp;nbsp; What are the limitations on using Packed mode?&lt;/LI&gt;&lt;/UL&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Configuration:&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;Using Cortex M4 processor clocked at 204MHz.&lt;/P&gt;&lt;P&gt;AHB is set for 204MHz.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;HSADC:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;80Mhz.&lt;/P&gt;&lt;P&gt;Uses two descriptor entires: Table 0 entry 0 is first run with long match time to allow ADC to stabilize, then swap to Table 1 entry 0 with shortest match time and branch to self.&lt;/P&gt;&lt;P&gt;Uses no interrupts and has a FIFO Level of 15 (thought we have tried many other FIFO Levels, other settings depending).&lt;/P&gt;&lt;P&gt;Uses fastest CRS setting and has DGEC configured for 80MHz operation.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;DMA:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Configured for transfer of 4095 samples from FIFO_OUTPUT[0].&lt;/P&gt;&lt;P&gt;Uses src and dst burst size of 1 (whenever we have tried to change burst size DMA ends up reading empty FIFO ~50% of samples).&lt;/P&gt;&lt;P&gt;Doesn't use Linked List.&lt;/P&gt;&lt;P&gt;Tried using DMA as Flow Controller AND HSADC, performance doesn't change.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ben&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;(And sorry for the code below, tried quoting with syntax highlighting and it hid a large number of the lines)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define HSADC_DMA_READ&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/P&gt;&lt;P&gt;#define DMA_TRANSFER_SIZE 4095 // max. 4095&lt;/P&gt;&lt;P&gt;#define DMA_CH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/P&gt;&lt;P&gt;#define NUM_SAMPLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_TRANSFER_SIZE&lt;/P&gt;&lt;P&gt;uint32_t sample[NUM_SAMPLE];&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;int main(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SystemCoreClockUpdate();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Board_Init();&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_USB0_Init(); /* Initialize the USB0 PLL to 480 MHz */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_Clock_SetDivider(CLK_IDIV_A, CLKIN_USBPLL, 2); /* Source DIV_A from USB0PLL, and set divider to 2 (Max div value supported is 4) [IN 480 MHz; OUT 240 MHz */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_Clock_SetDivider(CLK_IDIV_B, CLKIN_IDIVA, 3); /* Source DIV_B from DIV_A, [IN 240 MHz; OUT 80 MHz */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_Clock_SetBaseClock(CLK_BASE_ADCHS, CLKIN_IDIVB, true, false); /* Source ADHCS base clock from DIV_B */&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /////////////////////////////////////////// HSADC settings ////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;INTS[0].CLR_EN&amp;nbsp;&amp;nbsp; = 0x7F; // disable interrupt 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;INTS[0].CLR_STAT = 0x7F; // clear interrupt status&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(LPC_ADCHS-&amp;gt;INTS[0].STATUS &amp;amp; 0x7D); // wait for status to clear, have to exclude FIFO_EMPTY&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;INTS[1].CLR_EN&amp;nbsp;&amp;nbsp; = 0x7F;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;INTS[1].CLR_STAT = 0x7F;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(LPC_ADCHS-&amp;gt;INTS[1].STATUS &amp;amp; 0x7D);&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize HSADC */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;POWER_DOWN = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;FLUSH = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_HSADC_Init(LPC_ADCHS);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;FIFO_CFG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (15 &amp;lt;&amp;lt; 1) /* FIFO_LEVEL*/ | (1) /* PACKED_READ*/;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;DSCR_STS = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;DESCRIPTOR[0][0] = (1 &amp;lt;&amp;lt; 31) /* UPDATE TABLE*/ | (1 &amp;lt;&amp;lt; 24) /* RESET_TIMER*/ | (0 &amp;lt;&amp;lt; 22) /* THRESH*/ | (0xA00 &amp;lt;&amp;lt; 8) /* MATCH*/ | (0x10 &amp;lt;&amp;lt; 6) /* BRANCH*/;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;DESCRIPTOR[1][0] = (1 &amp;lt;&amp;lt; 31) /* UPDATE TABLE*/ | (1 &amp;lt;&amp;lt; 24) /* RESET_TIMER*/ | (0 &amp;lt;&amp;lt; 22) /* THRESH*/ | (0x01 &amp;lt;&amp;lt; 8) /* MATCH*/ | (0x01 &amp;lt;&amp;lt; 6) /* BRANCH*/;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;CONFIG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (0x90 &amp;lt;&amp;lt; 6) /* RECOVERY_TIME*/&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0 &amp;lt;&amp;lt; 5) /* CHANNEL_ID_EN*/&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x01) /* TRIGGER_MASK*/;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t DGEC = 0xE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;ADC_SPEED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (DGEC &amp;lt;&amp;lt; 16) | (DGEC &amp;lt;&amp;lt; 12) | (DGEC &amp;lt;&amp;lt; 8) | (DGEC &amp;lt;&amp;lt; 4) | (DGEC);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Didn't set threshold registers as they aren't used&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;POWER_CONTROL = (1 &amp;lt;&amp;lt; 18) /* BGAP*/&lt;/P&gt;&lt;P&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;&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; | (1 &amp;lt;&amp;lt; 17) /* POWER*/&lt;/P&gt;&lt;P&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;&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; | (1 &amp;lt;&amp;lt; 10) /* DC in ADC0*/&lt;/P&gt;&lt;P&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;&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; | (1 &amp;lt;&amp;lt; 4) | (0x4) /* CRS*/;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ////////////////////////////////////////////////////// DMA settings ///////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_GPDMA_Init(LPC_GPDMA);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPDMA-&amp;gt;CONFIG =&amp;nbsp;&amp;nbsp; 0x01;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while( !(LPC_GPDMA-&amp;gt;CONFIG &amp;amp; 0x01) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear all DMA interrupt and error flag */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPDMA-&amp;gt;INTTCCLEAR = 0xFF; //clears channel terminal count interrupt&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPDMA-&amp;gt;INTERRCLR = 0xFF; //clears channel error interrupt.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPDMA-&amp;gt;CH[DMA_CH].SRCADDR&amp;nbsp; =&amp;nbsp; (uint32_t) &amp;amp;LPC_ADCHS-&amp;gt;FIFO_OUTPUT[0];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPDMA-&amp;gt;CH[DMA_CH].DESTADDR = ((uint32_t) &amp;amp;sample);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPDMA-&amp;gt;CH[DMA_CH].CONTROL&amp;nbsp; =&amp;nbsp; (DMA_TRANSFER_SIZE)&amp;nbsp;&amp;nbsp; // transfer size&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x0&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;lt;&amp;lt; 12)&amp;nbsp; // src burst size&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x0&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;lt;&amp;lt; 15)&amp;nbsp; // dst burst size&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x2&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;lt;&amp;lt; 18)&amp;nbsp; // src transfer width&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x2&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;lt;&amp;lt; 21)&amp;nbsp; // dst transfer width&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x1&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;lt;&amp;lt; 24)&amp;nbsp; // src AHB master select&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x0&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;lt;&amp;lt; 25)&amp;nbsp; // dst AHB master select&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x0&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;lt;&amp;lt; 26)&amp;nbsp; // src increment: 0, src address not increment after each trans&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x1&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;lt;&amp;lt; 27)&amp;nbsp; // dst increment: 1, dst address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; increment after each trans&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x1&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;lt;&amp;lt; 31); // terminal count interrupt enable bit: 1, enabled&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPDMA-&amp;gt;CH[DMA_CH].CONFIG&amp;nbsp;&amp;nbsp; =&amp;nbsp; (0x1&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;lt;&amp;lt; 0)&amp;nbsp;&amp;nbsp; // enable bit: 1 enable, 0 disable&lt;/P&gt;&lt;P&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; | (HSADC_DMA_READ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;lt; 1)&amp;nbsp;&amp;nbsp; // src peripheral: set to 8&amp;nbsp;&amp;nbsp; - HSADC&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x0&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;lt;&amp;lt; 6)&amp;nbsp;&amp;nbsp; // dst peripheral: no setting - memory&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x6&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;lt;&amp;lt; 11)&amp;nbsp; // flow control: peripheral to memory - DMA control&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x1&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;lt;&amp;lt; 14)&amp;nbsp; // IE&amp;nbsp; - interrupt error mask&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x1&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;lt;&amp;lt; 15)&amp;nbsp; // ITC - terminal count interrupt mask&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x0&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;lt;&amp;lt; 16)&amp;nbsp; // lock: when set, this bit enables locked transfer&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | (0x1&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;lt;&amp;lt; 18); // Halt: 1, enable DMA requests; 0, ignore further src DMA req&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPDMA-&amp;gt;CH[DMA_CH].LLI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp; 0;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ///////////////////////////////////////// start HSADC and GPDMA //////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_HSADC_SWTrigger(LPC_ADCHS);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // start DMA&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPDMA-&amp;gt;CH[DMA_CH].CONFIG = (0x1 &amp;lt;&amp;lt; 0); // enable bit, 1 enable, 0 disable&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //need to add wait for DMA complete&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i =0; i&amp;lt;4094; i++)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&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; ;//Issues with DMA interrupt, wait for end of sampling&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_HSADC_FlushFIFO(LPC_ADCHS);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sts = Chip_HSADC_GetFIFOLevel(LPC_ADCHS);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_HSADC_DeInit(LPC_ADCHS);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_GPDMA_DeInit(LPC_GPDMA);&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 9pt; line-height: 12pt;"&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Jul 2016 19:59:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531525#M10219</guid>
      <dc:creator>benjaminartes</dc:creator>
      <dc:date>2016-07-01T19:59:07Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531526#M10220</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi @benjamin, thanks for posting your code. I'm trying to use it and display some data in Matlab, but I'm having trouble understanding how do you format the data out put. I tried to force the 2 complement format for the ADC but I still get a dynamic range of 2.1475e+09 (which is absurd) and a non sense graph.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm just using your code with this little cycle at the end:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P style="font-size: 11px; font-family: Monaco;"&gt;&lt;SPAN style="color: #931a68;"&gt;for&lt;/SPAN&gt;(&lt;SPAN style="color: #931a68;"&gt;int&lt;/SPAN&gt; i =0; i&amp;lt;4095; i++)&lt;/P&gt;&lt;P style="font-size: 11px; font-family: Monaco;"&gt;&amp;nbsp; {&lt;/P&gt;&lt;P style="font-size: 11px; font-family: Monaco;"&gt;&amp;nbsp; DEBUGOUT(&lt;SPAN style="color: #3933ff;"&gt;"%04d\r\n"&lt;/SPAN&gt;,sample[i]);&lt;/P&gt;&lt;P style="font-size: 11px; font-family: Monaco;"&gt;&amp;nbsp; }&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Let me know if you managed to reach the 80msps, I need to use this HSADC for a thesis and I'm highly interested.&lt;BR /&gt;Thanks in advance!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Andrea&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Aug 2016 15:49:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531526#M10220</guid>
      <dc:creator>a_bet</dc:creator>
      <dc:date>2016-08-04T15:49:10Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531527#M10221</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 just successfully configured my LPC4370's ADCHS to take 2048 samples at 60 MHz and transfer to SRAM memory using the GPDMA. The trick to getting the ADCHS and GPDMA to work beyond 30 ish MHz is to use the PACKED_READ option in the ADCHS's FIFO_CFG register.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This packs two samples into each 32bit FIFO word so the DMA is now transferring two samples at a time effectively doubling the transfer rate to memory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you don't use the PACKED function the DMA will not have enough AHB bus time to transfer 8 samples @ 60 MHz from peripheral to memory and you will loose samples when the FIFO overflows. It you think about it even at 200 MHz its only 2.5x faster than the FIFO is filling and you need to copy 8 samples from peripheral to memory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I haven't tested at 80 MHz as my clock is not configured to generate fADC of 80 MHz (yet) but I expect the ADCHS and DMA to still function correctly. Assuming your M4_BASE clock is 200 MHz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here are a few tips when configuring the ADC and DMA;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;DMA Control : SBSIZE Source Burst = 8 (Same as ADCHS FIFO FILL LEVEL)&lt;/LI&gt;&lt;LI&gt;DMA Control : S = AHB Master 1 (Peripheral)&lt;/LI&gt;&lt;LI&gt;DMA Control : D = AHB Master 0 (Memeory)&lt;/LI&gt;&lt;LI&gt;ADCHS FIFO_CFG : FIFO_FILLED Level = 8 (16 samples),&lt;/LI&gt;&lt;LI&gt;ADCHS FIFO_CFG : PACKED_READ = 1&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I triggered my ADC sampling using the SCT CTOUT_0 signal.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I set the DMA to control the number of samples to take (remember DMA transfer size = 1/2 sample size).&lt;/P&gt;&lt;P&gt;To stop the sampling I used the DMA Transfer Complete Interrupt to inject 8 new Table 0 descriptors into the ADCHS that all have the HALT bit set - this will cause the ADCHS to stop running when the descriptors are re-loaded from the double buffered&amp;nbsp;descriptor registers. My original descriptor last entry had the UPDATE_TABLE bit set to make sure it gets reloaded.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My ADCHS descriptor table had 8 entries to take 8 samples from Channel 0, the last descriptor just branched back to the start and repeated. The last descriptor also had UPDATE_TABLE set ready for the end of sampling. To get full speed samples MATCH = 0 and RESET_TIMER = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My Core PLL1 clock rate is 180 Mhz.&lt;/P&gt;&lt;P&gt;My ADCHS Clock is 60 MHz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps!&lt;/P&gt;&lt;P&gt;David.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Mar 2017 16:42:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531527#M10221</guid>
      <dc:creator>davidgeorge</dc:creator>
      <dc:date>2017-03-01T16:42:45Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531528#M10222</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi David, it is great to hear someone who is using this chip and its AD capabilities. I think it's quite underrated!&lt;BR /&gt;Right now I'm sampling @40 MHz and I'm fine with that, but still have a lot of questions about this micro (for example see &lt;A href="https://community.arm.com/processors/f/discussions/8013/cortex-m4-lpc4370-how-do-i-detect-adc-threshold-crossing-while-moving-data-in-a-dma-driven-double-buffer"&gt;here&lt;/A&gt;).&lt;BR /&gt;I'd be glad to collaborate if someone needs help and try to help each other.. there's a lack of support and resources (lpcopen support I believe is still incomplete for this chip), but we can join forces:)&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;Andrea&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 05 Mar 2017 09:11:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531528#M10222</guid>
      <dc:creator>a_bet</dc:creator>
      <dc:date>2017-03-05T09:11:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531529#M10223</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I know this was a while ago, but I did not see a clear answer. I have this working at 80MHz on my board using LPC Open.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Just looking at your code:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;LPC_ADCHS-&amp;gt;DSCR_STS = 1&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;Selects Table 1; Descriptor 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;LPC_ADCHS-&amp;gt;DESCRIPTOR[0][0] = (1 &amp;lt;&amp;lt; 31) /* UPDATE TABLE*/ | (1 &amp;lt;&amp;lt; 24) /* RESET_TIMER*/ | (0 &amp;lt;&amp;lt; 22) /* THRESH*/ | (0xA00 &amp;lt;&amp;lt; &lt;SPAN class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:"&gt;&lt;LI-EMOJI id="lia_smiling-face-with-sunglasses" title=":smiling_face_with_sunglasses:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; /* MATCH*/ | (0x10 &amp;lt;&amp;lt; 6) /* BRANCH*/;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Sets table 0, descriptor 0 Measure when counter is at Match=0xA00; Reset Counter and branch 0x10 is invalid as this field is only 2 bits long&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;LPC_ADCHS-&amp;gt;DESCRIPTOR[1][0] = (1 &amp;lt;&amp;lt; 31) /* UPDATE TABLE*/ | (1 &amp;lt;&amp;lt; 24) /* RESET_TIMER*/ | (0 &amp;lt;&amp;lt; 22) /* THRESH*/ | (0x01 &amp;lt;&amp;lt; &lt;SPAN class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:"&gt;&lt;LI-EMOJI id="lia_smiling-face-with-sunglasses" title=":smiling_face_with_sunglasses:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; /* MATCH*/ | (0x01 &amp;lt;&amp;lt; 6) /* BRANCH*/;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Sets Table 1, descriptor 0. Measure when counter is at Match= 1; Reset Counter and branch to first descriptor when done&lt;/P&gt;&lt;P&gt;This will just run the second descriptor (Table 1, Descriptor 0), and since the counter resets to 0 and measures at 1, you are sampling at 1/2 of the 80MHz. And you may not have enough recovery clocks when first measurement is taken.&lt;/P&gt;&lt;P&gt;try the following&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;/*&amp;nbsp; Select Table 0 desccriptor 1 */&lt;/SPAN&gt;
LPC_ADCHS&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DSCR_STS &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;/* Set descriptor 0 to take a measurement at every clock and branch to itself*/&lt;/SPAN&gt;
LPC_ADCHS&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DESCRIPTOR&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;24&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/* RESET_TIMER*/&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;22&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/* THRESH*/&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;8&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/* MATCH*/&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;6&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/* BRANCH to First*/&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;/* Set descriptor 1 to take a measurement after 0x9A clocks and branch to first descriptor*/&lt;/SPAN&gt;
LPC_ADCHS&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;DESCRIPTOR&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;31&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/* UPDATE TABLE*/&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;24&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/* RESET_TIMER*/&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;22&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/* THRESH*/&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0x9A&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;8&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/* MATCH*/&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;6&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/* BRANCH to first*/&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Apr 2018 22:28:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531529#M10223</guid>
      <dc:creator>Ray_V</dc:creator>
      <dc:date>2018-04-05T22:28:27Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531530#M10224</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi David, is your 'SRAM' the internal one or a external one (on EMC)?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jun 2018 12:11:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531530#M10224</guid>
      <dc:creator>diverger</dc:creator>
      <dc:date>2018-06-13T12:11:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531531#M10225</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi.&lt;/P&gt;&lt;P&gt;I am using the internal SRAM to store my samples;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Located in SRAM1 (AHB) 0x20000000..&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have had a working, reliable system for a while now with the LPC Clock running at 200MHz, ADCHS Sampling Rate 80Mhz.&lt;/P&gt;&lt;P&gt;I have to say its been a tricky application to get reliably working at fs=80MHz, very little clear documentation from NXP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jun 2018 14:11:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531531#M10225</guid>
      <dc:creator>davidgeorge</dc:creator>
      <dc:date>2018-06-13T14:11:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531532#M10226</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It's a good news to me. What about DMA to the external SRAM chips? Is it possible?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jun 2018 14:16:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531532#M10226</guid>
      <dc:creator>diverger</dc:creator>
      <dc:date>2018-06-13T14:16:34Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531533#M10227</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As the DMA is used to transfer from ADCHS to a 'memory' address, if that address was external memory connected via the EMC it should work. Obviously your bandwidth will depend on memory speed and configuration, its probably going to be slower than internal SRAM using the AHB Bus.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jun 2018 14:41:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531533#M10227</guid>
      <dc:creator>davidgeorge</dc:creator>
      <dc:date>2018-06-13T14:41:12Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531534#M10228</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi David, that's a very good news to me too.&lt;BR /&gt;So, are you experiencing dropping samples with your setup? The only other person I spoke to who achieved 80msps had problems with DMA reload time (even using internal SRAM). See &lt;A href="https://community.nxp.com/thread/420407"&gt;HSADC with GPDMA Transfer Dropping Samples at 80MSps&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Andrea&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jun 2018 20:02:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531534#M10228</guid>
      <dc:creator>a_bet</dc:creator>
      <dc:date>2018-06-13T20:02:12Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531535#M10229</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The LPC4370&amp;nbsp;ADCHS works well at 80 Msps. As I mentioned in this thread on April, 6 2018&amp;nbsp; I have it working.&lt;/P&gt;&lt;P&gt;It&amp;nbsp;is reliable and not dropping any samples. Disable interrupts during sampling&amp;nbsp;as any interrupts could cause loss of samples by interfering with the BUS traffic from the DMA. You can check the DMA Interrupt Terminal Count (register INTTCSTAT) to determine when the requested number of&amp;nbsp;samples have been transferred.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Ray&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jun 2018 20:52:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531535#M10229</guid>
      <dc:creator>Ray_V</dc:creator>
      <dc:date>2018-06-13T20:52:01Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531536#M10230</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Andrea.&lt;/P&gt;&lt;P&gt;I can confirm I can reliably sample at 80MHz to internal SRAM memory without loosing any samples, my system samples an ultrasound signal so any lost samples will be evident and cause a problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;During sampling there is only the RTOS tick timer running and I halt all other bus transfers, my application code sits in SRAM (0x1000_0000) and sample memory is AHB SRAM (0x2000_0000). CPU clock is 200MHz and I use the Audio PLL to generate the ASCHS Sample Clock.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Because I need to take more than 4096 samples I don't use the DMA to control the ADCHS, instead I load a continuous sample sequence into the ADCHS descriptor table and use TIMER0 to time the sampling process, a TIMER0 interrupt halts sampling by injecting a HALT command into the descriptor table. I could not get DMA Linked Lists to work at fs=80 MHz as once the DMA tries to load the next List the ADCHS overruns its FIFO and the data gets corrupted.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have also found you must clear the ADCHS FIFO before starting a sampling run otherwise data gets corrupted.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In summary the ADCHS can sample to SRAM at 80MHz but you must;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Use the DMA in burst mode&lt;/LI&gt;&lt;LI&gt;Set CPU Clock to 200MHz&lt;/LI&gt;&lt;LI&gt;Halt all other bus transfers during sampling&lt;/LI&gt;&lt;LI&gt;Use hardware for counting/timing (Timers etc)&lt;/LI&gt;&lt;LI&gt;Sample to internal AHB SRAM memory&lt;/LI&gt;&lt;LI&gt;Manage the ADCHS' FIFO correctly&lt;/LI&gt;&lt;LI&gt;Pack two samples into each 32 bit word ( thanks Ray )&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jun 2018 07:35:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531536#M10230</guid>
      <dc:creator>davidgeorge</dc:creator>
      <dc:date>2018-06-14T07:35:51Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531537#M10231</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Packing 2 samples in one 32-bit read cycle (PACKED_READ (bit0) of ADCHS&amp;nbsp;FIFO_CFG register) allows for 8192 samples. It also improves reliability as&amp;nbsp;the effective&amp;nbsp;transfer rate at 80msps&amp;nbsp;is 25ns instead of 12.5ns&lt;/P&gt;&lt;P&gt;-Ray&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jun 2018 13:48:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531537#M10231</guid>
      <dc:creator>Ray_V</dc:creator>
      <dc:date>2018-06-14T13:48:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531538#M10232</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, you're correct, I do pack two samples into each 32bit word.&lt;/P&gt;&lt;P&gt;But I needed more that 4094 "words" in my application hence using a timer.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jun 2018 13:52:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531538#M10232</guid>
      <dc:creator>davidgeorge</dc:creator>
      <dc:date>2018-06-14T13:52:34Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531539#M10233</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Do you need all those samples in your application? or do you just need samples after a certain time? (after 120us for example). I am asking because if you don't need the first portion of the waveform you can always set the MATCH_VALUE in the descriptor to start sampling later. For example to start sampling 120us later you can set MATCH_VALUE to 9600&amp;nbsp; (9600 * 12.5ns) and then collect only the number of samples you actually need.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jun 2018 14:24:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531539#M10233</guid>
      <dc:creator>Ray_V</dc:creator>
      <dc:date>2018-06-14T14:24:01Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531540#M10234</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Unfortunately I don't have the HW at the moment to try the update right now. By the way, I plan to do it in the next weeks while on holiday. Do you know if using a thrashold-based interrupt on the ADCHS could cause any problem? I need to detect a threshold crossing in my application since I need to acquire and process a pulse shaped signal... at 40 msps it works fine.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jun 2018 17:53:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531540#M10234</guid>
      <dc:creator>a_bet</dc:creator>
      <dc:date>2018-06-15T17:53:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531541#M10235</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In addition to the errors described above, you have an error in the DMA configuration.&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;LPC_GPDMA-&amp;gt;CH[DMA_CH].CONFIG = (0x1 &amp;lt;&amp;lt; 0); // enable bit, 1 enable, 0 disable‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;This line is superfluous, since it erases the previous configuration.&lt;/P&gt;&lt;P&gt;Here is the correct DMA channel configuration:&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;LPC_GPDMA-&amp;gt;CH[DMA_CH].CONFIG = (0x1 &amp;lt;&amp;lt; 0) // enable bit: 1 enable, 0 disable
   | (HSADC_DMA_READ &amp;lt;&amp;lt; 1)   // src peripheral: set to 8   - HSADC
   | (0x0 &amp;lt;&amp;lt; 6)   // dst peripheral: no setting - memory
   | (0x2 &amp;lt;&amp;lt; 11)  //flow control: peripheral to memory - DMA control
   | (0x1 &amp;lt;&amp;lt; 14)  // IE  - interrupt error mask
   | (0x1 &amp;lt;&amp;lt; 15);  // ITC - terminal count interrupt mask‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Feb 2019 16:12:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531541#M10235</guid>
      <dc:creator>vitaliylivnov</dc:creator>
      <dc:date>2019-02-13T16:12:51Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531542#M10236</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/vitaliylivnov"&gt;vitaliylivnov&lt;/A&gt;‌ &lt;/P&gt;&lt;P&gt;I'm still working on this. Would share your full DMA configuration?&lt;/P&gt;&lt;P&gt;If you are not allowed I can well understand...&lt;BR /&gt;Thank you&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Oct 2019 17:12:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531542#M10236</guid>
      <dc:creator>a_bet</dc:creator>
      <dc:date>2019-10-03T17:12:05Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531543#M10237</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/a_bet"&gt;a_bet&lt;/A&gt;‌&lt;/P&gt;&lt;P&gt;We are using modification of LPC Open library from this post:&amp;nbsp;&lt;A href="https://community.nxp.com/thread/422128"&gt;https://community.nxp.com/thread/422128&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Oct 2019 17:24:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531543#M10237</guid>
      <dc:creator>vitaliylivnov</dc:creator>
      <dc:date>2019-10-03T17:24:58Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve 80MHz using DMA from LPC4370's HSADC?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531544#M10238</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/raymundovelarde"&gt;raymundovelarde&lt;/A&gt;‌ thanks a lot for the corrections.&lt;BR /&gt;I'm trying to use your configuration. To test ADC only what I do is: initialize the peripheral and send the software trigger.&lt;/P&gt;&lt;P&gt;My main is:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADCHS_init();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* START HSADC*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp; Chip_HSADC_SWTrigger(LPC_ADCHS); /*SW Trigger to the ADCHS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(1){}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;My init file:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;void ADCHS_init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*ADCHS CLOCK: derived from USB0 PLL clock - don't use*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_USB0_Init(); &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;/* Initialize the USB0 PLL to 480 MHz */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_Clock_SetDivider(CLK_IDIV_A, CLKIN_USBPLL, 3); &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /* Source DIV_A from USB0PLL&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_Clock_SetDivider(CLK_IDIV_B, CLKIN_IDIVA, 2); &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Source DIV_B from DIV_A&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_Clock_SetDivider(CLK_IDIV_C, CLKIN_IDIVB, 1); &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Source DIV_C from DIV_B&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_Clock_SetBaseClock(CLK_BASE_ADCHS, CLKIN_IDIVC, true, false); &amp;nbsp;&amp;nbsp; &amp;nbsp;/* Source ADHCS base clock from DIV_C */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_Clock_EnableOpts(CLK_ADCHS, true, true, 1); &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;/* Enable the clock */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*Disable and reset Interrupt 0*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_ADCHS-&amp;gt;INTS[0].CLR_EN&amp;nbsp;&amp;nbsp; = 0x7F;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;INTS[0].CLR_STAT = 0x7F;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* wait for status to clear, have to exclude FIFO_EMPTY*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(LPC_ADCHS-&amp;gt;INTS[0].STATUS &amp;amp; 0x7D);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;INTS[1].CLR_EN&amp;nbsp;&amp;nbsp; = 0x7F;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;INTS[1].CLR_STAT = 0x7F;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(LPC_ADCHS-&amp;gt;INTS[1].STATUS &amp;amp; 0x1E);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize HSADC */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_RGU_TriggerReset(RGU_ADCHS_RST);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;POWER_DOWN = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;FLUSH = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*FIFO's and descriptors' setup*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;FIFO_CFG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (15 &amp;lt;&amp;lt; 1) /* FIFO_LEVEL*/&lt;BR /&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; | (0); /* 1 = PACKED_READ ENABLED*/&lt;/P&gt;&lt;P&gt;&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; Select Table 0 descriptor 1 */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;DSCR_STS = (1 &amp;lt;&amp;lt; 1)| 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set descriptor 0 to take a measurement at every clock and branch to itself*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;DESCRIPTOR[0][0] = (1 &amp;lt;&amp;lt; 24) /* RESET_TIMER*/&lt;BR /&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;| (0 &amp;lt;&amp;lt; 22) /* THRESH*/&lt;BR /&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;| (0x01 &amp;lt;&amp;lt; 8) /* MATCH*/&lt;BR /&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; | (1 &amp;lt;&amp;lt; 6) /* BRANCH to First*/;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set descriptor 1 to take a measurement after 0x9A clocks and branch to first descriptor*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;DESCRIPTOR[0][1] = (1 &amp;lt;&amp;lt; 31) /* UPDATE TABLE*/&lt;BR /&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;| (1 &amp;lt;&amp;lt; 24) /* RESET_TIMER*/&lt;BR /&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; | (0 &amp;lt;&amp;lt; 22) /* THRESH*/&lt;BR /&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; | (0x9A &amp;lt;&amp;lt; 8) /* MATCH*/&lt;BR /&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; | (0x01 &amp;lt;&amp;lt; 6) /* BRANCH to first*/;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;CONFIG = (0x01) &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* TRIGGER_MASK: sw trigger only */&lt;BR /&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; | (0x90 &amp;lt;&amp;lt; 6)&amp;nbsp;&amp;nbsp; &amp;nbsp; /* RECOVERY_TIME */&lt;BR /&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; | (0 &amp;lt;&amp;lt; 5)&amp;nbsp;&amp;nbsp; &amp;nbsp; /* CHANNEL ID EN */;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t DGEC = 0xE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;ADC_SPEED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (DGEC &amp;lt;&amp;lt; 20)&lt;BR /&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; | (DGEC &amp;lt;&amp;lt; 16)&lt;BR /&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; | (DGEC &amp;lt;&amp;lt; 12)&lt;BR /&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; | (DGEC &amp;lt;&amp;lt; 8)&lt;BR /&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; | (DGEC &amp;lt;&amp;lt; 4)&lt;BR /&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; | (DGEC);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADCHS-&amp;gt;POWER_CONTROL = (1 &amp;lt;&amp;lt; 18) /* BGAP*/&lt;BR /&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; | (1 &amp;lt;&amp;lt; 17) /* POWER*/&lt;BR /&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; | (0 &amp;lt;&amp;lt; 4)&amp;nbsp; /* DCINNEG in ADC0*/&lt;BR /&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; | (0 &amp;lt;&amp;lt; 10) /* DCINPOS in ADC0*/&lt;BR /&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; | (0x4) /* CRS*/&lt;BR /&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; | (0 &amp;lt;&amp;lt; 16)/*1 = Output in TWOS - 0 = Output in Offset Binary*/;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable HSADC sample clock */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_Clock_Enable(CLK_ADCHS);&lt;BR /&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;What I am doing is pausing the execution and check the content of the ADC fifo registers.&lt;/P&gt;&lt;P&gt;Any hints?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Oct 2019 17:02:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-achieve-80MHz-using-DMA-from-LPC4370-s-HSADC/m-p/531544#M10238</guid>
      <dc:creator>a_bet</dc:creator>
      <dc:date>2019-10-04T17:02:06Z</dc:date>
    </item>
  </channel>
</rss>

