diff --git a/mem2lcd_G4/.cproject b/mem2lcd_G4/.cproject index 05ec765cfa25f09269348660abe4b85a2d809210..2cd68bf2df894f7dc65ab287d835a559836ca933 100644 --- a/mem2lcd_G4/.cproject +++ b/mem2lcd_G4/.cproject @@ -107,7 +107,7 @@ <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.crt.advproject.link.memory.sections.625475614" name="Extra linker script input sections" superClass="com.crt.advproject.link.memory.sections" useByScannerDiscovery="false" valueType="stringList"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.crt.advproject.link.gcc.multicore.master.userobjs.833669853" name="Slave Objects (not visible)" superClass="com.crt.advproject.link.gcc.multicore.master.userobjs" useByScannerDiscovery="false" valueType="userObjs"/> <option id="com.crt.advproject.link.arch.1296395929" name="Architecture" superClass="com.crt.advproject.link.arch" value="com.crt.advproject.link.target.cm3" valueType="enumerated"/> - <option id="com.crt.advproject.link.script.861796581" name="Linker script" superClass="com.crt.advproject.link.script" value="test_lcd_ssp_dma_Debug.ld" valueType="string"/> + <option id="com.crt.advproject.link.script.861796581" name="Linker script" superClass="com.crt.advproject.link.script" value="mem2lcd_G4_Debug.ld" valueType="string"/> <option id="com.crt.advproject.link.manage.756750610" name="Manage linker script" superClass="com.crt.advproject.link.manage" value="true" valueType="boolean"/> <option id="gnu.c.link.option.nostdlibs.1548691555" name="No startup or default libs (-nostdlib)" superClass="gnu.c.link.option.nostdlibs" value="true" valueType="boolean"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.link.option.other.1534858723" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" valueType="stringList"> @@ -281,7 +281,7 @@ <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.crt.advproject.link.memory.sections.1721047405" name="Extra linker script input sections" superClass="com.crt.advproject.link.memory.sections" valueType="stringList"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.crt.advproject.link.gcc.multicore.master.userobjs.964733893" name="Slave Objects (not visible)" superClass="com.crt.advproject.link.gcc.multicore.master.userobjs" valueType="userObjs"/> <option id="com.crt.advproject.link.arch.661570660" name="Architecture" superClass="com.crt.advproject.link.arch" value="com.crt.advproject.link.target.cm3" valueType="enumerated"/> - <option id="com.crt.advproject.link.script.337741123" name="Linker script" superClass="com.crt.advproject.link.script" value="test_lcd_ssp_dma_Release.ld" valueType="string"/> + <option id="com.crt.advproject.link.script.337741123" name="Linker script" superClass="com.crt.advproject.link.script" value="mem2lcd_G4_Release.ld" valueType="string"/> <option id="com.crt.advproject.link.manage.858321269" name="Manage linker script" superClass="com.crt.advproject.link.manage" value="true" valueType="boolean"/> <option id="gnu.c.link.option.nostdlibs.1560825805" name="No startup or default libs (-nostdlib)" superClass="gnu.c.link.option.nostdlibs" value="true" valueType="boolean"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.link.option.other.2085617560" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" valueType="stringList"> diff --git a/mem2lcd_G4/src/dma.h b/mem2lcd_G4/src/dma.h new file mode 100644 index 0000000000000000000000000000000000000000..3381a2c9182b1e82cbc0e08ed35db6e768d76ca7 --- /dev/null +++ b/mem2lcd_G4/src/dma.h @@ -0,0 +1,36 @@ +/**************************************************************************** + DMA constants definition +****************************************************************************/ +#ifndef __DMA_H +#define __DMA_H + +#define DMA_SRC 0x2007C000 +#define DMA_DST 0x20080000 +#define DMA_SIZE 0x1000 + +#define M2M 0x00 +#define M2P 0x01 +#define P2M 0x02 +#define P2P 0x03 + +#define BURST4 0x04 +#define WORD32_TRANSFER 0x2 +#define INCREMENT 1 +#define TERMINAL_INTERRUPT 0x80000000 + +#define DMA_CFG ((BURST4 << 12) | (BURST4 << 15) \ + | (WORD32_TRANSFER << 18) | (WORD32_TRANSFER << 21) | (INCREMENT << 26) | (INCREMENT << 27) | \ + TERMINAL_INTERRUPT) + +void DMA_Init(uint32_t *src, uint32_t *dest, uint32_t len, uint32_t LLI); + +typedef struct +{ + volatile uint32_t DMACCSrcAddr; + volatile uint32_t DMACCDestAddr; + volatile uint32_t DMACCLLI; + volatile uint32_t DMACCControl; +} GPDMALLI_t; + +#endif + diff --git a/mem2lcd_G4/src/dma_ssp_etu.c b/mem2lcd_G4/src/dma_ssp_etu.c index ab2cb62ea7894c047f1823668e10a07a75e9a217..8c9f5eda3f3fdfeb7bd541d2149d951a51d72aa7 100644 --- a/mem2lcd_G4/src/dma_ssp_etu.c +++ b/mem2lcd_G4/src/dma_ssp_etu.c @@ -7,9 +7,11 @@ #include <stdbool.h> #include <stdint.h> #include <assert.h> +#include "dma.h" #include "LPC17xx.h" + void ssp0_init(uint8_t data_size_select, uint8_t scr) { LPC_PINCON->PINSEL0 &= ~(3<<30);