<?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>LPCXpresso IDEのトピックRe: Fast Data Transfer from Parallel GPIO Input to SRAM using GPDMA</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Fast-Data-Transfer-from-Parallel-GPIO-Input-to-SRAM-using-GPDMA/m-p/576011#M22563</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by whatisain on Fri May 04 00:42:35 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi researchinnovation,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your reply, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'll test the code you suggested below and refer to the link.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 01:09:18 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T01:09:18Z</dc:date>
    <item>
      <title>Fast Data Transfer from Parallel GPIO Input to SRAM using GPDMA</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Fast-Data-Transfer-from-Parallel-GPIO-Input-to-SRAM-using-GPDMA/m-p/576009#M22561</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by whatisain on Tue May 01 22:40:36 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi everyone&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;(please understand for my poor English)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to transfer 8bit parallel data input from GPIO pins to SRAM using GPDMA.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The base platform is LPC1769 operating at 120mhz CCLK, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and DMA request is made by counter match (matches every rising edge of 27mhz data clock).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But it seems that there are some loss during data transfer&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I think GPDMA transfer can not catch up the 27mhz clock, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(it works fine up to about 7mhz)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;does anyone have idea about &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;how many cycles needed to transfer single data from GPIO to SRAM using GPDMA?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;or any way of speed up the GPDMA?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;below is part of my GPDMA configuration.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;

LPC_SC-&amp;gt;DMAREQSEL |= 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; //Select REQ source Timer0, Mat0.0

LPC_SC-&amp;gt;PCONP |= (1 &amp;lt;&amp;lt; 29);//Power up GPDMA
LPC_GPDMA-&amp;gt;DMACConfig |= 1;//Enable GPDMA Controller

LPC_TIM0-&amp;gt;IR = 0x0f;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //clear mr, cr

LPC_GPDMACH0-&amp;gt;DMACCSrcAddr= (uint32_t) &amp;amp;(LPC_GPIO2-&amp;gt;FIOPIN);
LPC_GPDMACH0-&amp;gt;DMACCDestAddr= (uint32_t) &amp;amp;dest[0];
LPC_GPDMACH0-&amp;gt;DMACCLLI= 0;
LPC_GPDMACH0-&amp;gt;DMACCControl= SAMPLE_NUM
| (0 &amp;lt;&amp;lt; 12)//source burst size - 1
| (0 &amp;lt;&amp;lt; 15)//destination burst size - 1
| (0 &amp;lt;&amp;lt; 18)//source width - 8bit
| (0 &amp;lt;&amp;lt; 21)//dest width - 8bit
| (0 &amp;lt;&amp;lt; 24)
| (0 &amp;lt;&amp;lt; 25)
| (0 &amp;lt;&amp;lt; 26)//source increment - do not inc
| (1 &amp;lt;&amp;lt; 27)//destination increment - inc
| (0 &amp;lt;&amp;lt; 28)
| (0 &amp;lt;&amp;lt; 29)
| (0 &amp;lt;&amp;lt; 30)
| (1 &amp;lt;&amp;lt; 31);//terminal count interrupt - enabled

LPC_GPDMA-&amp;gt;DMACIntTCClear |= 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; //Clear CH0 TC Int. flag
NVIC_EnableIRQ(DMA_IRQn);

LPC_GPDMACH0-&amp;gt;DMACCConfig = 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; //Channel Enabled
| ((8 &amp;amp; 0x1f) &amp;lt;&amp;lt; 1)//source peripheral - MAT0.0
| (0 &amp;lt;&amp;lt; 6)//dest request peripheral - none
| (2 &amp;lt;&amp;lt; 11)//flow control - peripheral to memory
| (1 &amp;lt;&amp;lt; 14)//(14) - mask out error interrupt
| (1 &amp;lt;&amp;lt; 15)//(15) - mask out terminal count interrupt
| (0 &amp;lt;&amp;lt; 16)//(16) - no locked transfers
| (0 &amp;lt;&amp;lt; 18);//(27) - no HALT
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:09:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Fast-Data-Transfer-from-Parallel-GPIO-Input-to-SRAM-using-GPDMA/m-p/576009#M22561</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:09:16Z</dc:date>
    </item>
    <item>
      <title>Re: Fast Data Transfer from Parallel GPIO Input to SRAM using GPDMA</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Fast-Data-Transfer-from-Parallel-GPIO-Input-to-SRAM-using-GPDMA/m-p/576010#M22562</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by researchinnovation on Wed May 02 04:14:20 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;@Whatisain.....Hi...!!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Please go through the following link....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://"&gt;http://knowledgebase.nxp.com/showthread.php?t=2627&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and Try This code and modify accordingly:-&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*---------------Include-------------------------------------------------------*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include "lpc17xx_uart.h"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include "lpc17xx_gpdma.h"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include "lpc_types.h"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include "lpc17xx_libcfg_default.h"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include "lpc17xx_nvic.h"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include "lpc17xx_pinsel.h" /*---------------Macro Define--------------------------------------------------*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define DMA_SIZE&amp;nbsp;&amp;nbsp; 16&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /*---------------Private Variable----------------------------------------------*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t welcomeMenu[] =&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;"********************************************************************************\n\r"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;"This example used to test GPDMA function by transferring data from Flash \n\r"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;"to RAM memory!\n\r"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;"********************************************************************************\n\r";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t endMenu[] = "Demo terminated! \n\r";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t errMenu[] = "Buffer Check fail!";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t completeMenu[] = "Buffer Check success!\n\r";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t startMenu[] = "Start transferring!\n\r";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* DMAScr_Buffer will be burn into flash when compile */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;const uint32_t DMASrc_Buffer[DMA_SIZE] =&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 0x01020304,0x05060708,0x090A0B0C,0x0D0E0F10,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 0x21222324,0x25262728,0x292A2B2C,0x2D2E2F30,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 0x11121314,0x15161718,0x191A1B1C,0x1D1E1F20,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 0x31323334,0x35363738,0x393A3B3C,0x3D3E3F40&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* DMADest_Buffer will be loaded into RAM memory */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_t DMADest_Buffer[DMA_SIZE];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Terminal Counter flag for Channel 0 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;volatile uint32_t Channel0_TC;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Error Counter flag for Channel 0 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;volatile uint32_t Channel0_Err;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /*---------------Private Function Prototypes----------------------------------------*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void PrintMenu(void);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void DMA_IRQHandler(void);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void Buffer_Verify(void);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void Error_Loop(void);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void UARTInit(void);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /*---------------Private Functioins-------------------------------------------------*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @brief&amp;nbsp;&amp;nbsp;&amp;nbsp; Test the GPDMA function by transferring data from flash to ram memory.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @param&amp;nbsp;&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @return&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void GPDMA_M2MExample(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMA_Channel_CFG_Type GPDMACfg;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Initialize the system clock */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; SystemInit();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Configure the UART1 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UARTInit();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; PrintMenu();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* GPDMA block section -------------------------------------------- */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable GPDMA interrupt */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_DisableIRQ(DMA_IRQn);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* preemption = 1, sub-priority = 1 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_SetPriority(DMA_IRQn, ((0x01&amp;lt;&amp;lt;3)|0x01));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize GPDMA controller */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMA_Init();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Setup GPDMA channel --------------------------------*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* channel 0 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMACfg.ChannelNum = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Source memory */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMACfg.SrcMemAddr = (uint32_t)DMASrc_Buffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Destination memory */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMACfg.DstMemAddr = (uint32_t)DMADest_Buffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Transfer size */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMACfg.TransferSize = DMA_SIZE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Transfer width */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMACfg.TransferWidth = GPDMA_WIDTH_WORD;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Transfer type */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMACfg.TransferType = GPDMA_TRANSFERTYPE_M2M;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Source connection - unused */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMACfg.SrcConn = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Destination connection - unused */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMACfg.DstConn = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Linker List Item - unused */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMACfg.DMALLI = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Setup channel with given parameter */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMA_Setup(&amp;amp;GPDMACfg);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Reset terminal counter */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; Channel0_TC = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Reset Error counter */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; Channel0_Err = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; UART_Send((LPC_UART_TypeDef *)LPC_UART1, &amp;amp;startMenu[0], sizeof(startMenu), BLOCKING);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Enable GPDMA channel 0 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; GPDMA_ChannelCmd(0, ENABLE);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Enable GPDMA interrupt */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; NVIC_EnableIRQ(DMA_IRQn);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Wait for GPDMA processing complete */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; while ((Channel0_TC == 0) &amp;amp;&amp;amp; (Channel0_Err == 0));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Verify buffer */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; Buffer_Verify();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; UART_Send((LPC_UART_TypeDef *)LPC_UART1, &amp;amp;completeMenu[0], sizeof(completeMenu), BLOCKING);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @brief&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA interrupt service routine , clear corresponding interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @param&amp;nbsp;&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @return&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void DMA_IRQHandler(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; if(GPDMA_IntGetStatus(GPDMA_STAT_INT, 0) == SET)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; if(GPDMA_IntGetStatus(GPDMA_STAT_INTTC, 0) == SET)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; Channel0_TC++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; GPDMA_ClearIntPending(GPDMA_STATCLR_INTTC, 0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; if(GPDMA_IntGetStatus(GPDMA_STAT_INTERR, 0) == SET)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; Channel0_Err++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; GPDMA_ClearIntPending(GPDMA_STATCLR_INTERR, 0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @brief&amp;nbsp;&amp;nbsp;&amp;nbsp; Print the menu.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @param&amp;nbsp;&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @return&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void PrintMenu(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UART_Send((LPC_UART_TypeDef *)LPC_UART1, &amp;amp;welcomeMenu[0], sizeof(welcomeMenu), BLOCKING);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @brief&amp;nbsp;&amp;nbsp;&amp;nbsp; Simply verify the buffer area.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @param&amp;nbsp;&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @return&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void Buffer_Verify(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; uint8_t i;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; uint32_t *src_addr = (uint32_t *)DMASrc_Buffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; uint32_t *dest_addr = (uint32_t *)DMADest_Buffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; for(i = 0; i &amp;lt; DMA_SIZE; i++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; if(*src_addr != *dest_addr)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; UART_Send((LPC_UART_TypeDef *)LPC_UART1, &amp;amp;endMenu[0], sizeof(endMenu), BLOCKING);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; Error_Loop();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; else&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; src_addr++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; dest_addr++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @brief&amp;nbsp;&amp;nbsp;&amp;nbsp; Print error message and goto indefinite loop.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @param&amp;nbsp;&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @return&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void Error_Loop(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UART_Send((LPC_UART_TypeDef *)LPC_UART1, &amp;amp;errMenu[0], sizeof(errMenu), BLOCKING);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; while(1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @brief&amp;nbsp;&amp;nbsp;&amp;nbsp; Initialize the UART1 to communicate with the PC hyperterminal.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @param&amp;nbsp;&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @return&amp;nbsp;&amp;nbsp; None.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void UARTInit(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UART_CFG_Type UARTCfg;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UART_FIFO_CFG_Type UARTFIFOCfg;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; PINSEL_CFG_Type PinCfg;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Initialize the UART1 pin connect */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; PinCfg.Funcnum = 2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; PinCfg.OpenDrain = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; PinCfg.Pinmode = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; PinCfg.Pinnum = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; PinCfg.Portnum = 2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; PINSEL_ConfigPin(&amp;amp;PinCfg);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; PinCfg.Pinnum = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; PINSEL_ConfigPin(&amp;amp;PinCfg);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Initialize the UART1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; * Baud_rate = 115200&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; * 8 data bit&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; * 1 stop bit&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; * None parity&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UART_ConfigStructInit(&amp;amp;UARTCfg);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UARTCfg.Baud_rate = 115200;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UART_Init((LPC_UART_TypeDef *)LPC_UART1, &amp;amp;UARTCfg);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; * Initialize the UART FIFO&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; * FIFO_DMAMode = DISABLE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; * FIFO_LEVEL = UART_FIFO_TRGLEV0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; * FIFO_ResetRxBuf = ENABLE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; * FIFO_ResetTxBuf = ENABLE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; * FIFO_State = ENABLE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UART_FIFOConfigStructInit(&amp;amp;UARTFIFOCfg);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UART_FIFOConfig((LPC_UART_TypeDef *)LPC_UART1, &amp;amp;UARTFIFOCfg);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Enable UART1 transmission */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; UART_TxCmd((LPC_UART_TypeDef *)LPC_UART1, ENABLE);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:09:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Fast-Data-Transfer-from-Parallel-GPIO-Input-to-SRAM-using-GPDMA/m-p/576010#M22562</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:09:17Z</dc:date>
    </item>
    <item>
      <title>Re: Fast Data Transfer from Parallel GPIO Input to SRAM using GPDMA</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Fast-Data-Transfer-from-Parallel-GPIO-Input-to-SRAM-using-GPDMA/m-p/576011#M22563</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by whatisain on Fri May 04 00:42:35 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi researchinnovation,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your reply, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'll test the code you suggested below and refer to the link.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:09:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Fast-Data-Transfer-from-Parallel-GPIO-Input-to-SRAM-using-GPDMA/m-p/576011#M22563</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:09:18Z</dc:date>
    </item>
  </channel>
</rss>

