#include <stdio.h>
#include <std.h>
#include <stdlib.h>
#include <csl.h>
#include <csl_edma.h>
#define SRC_ADDRR 0x80000000
#define DST_ADDRR 0x80001000
#define WIDTH 6
#define HEIGHT 4
EDMA_Config MyEdmaConfig = {
// 0x20a00002,
0x41200001,
SRC_ADDRR,
0x00000018,
DST_ADDRR,
0x00180000,
0x00000000,
};
EDMA_Handle MYEdma,MYEdmaTable;
int nTccNum;
void initEdmaChannel()
{
EDMA_clearPram(0);
MYEdma = EDMA_open(EDMA_CHA_ANY,EDMA_OPEN_RESET);
nTccNum = EDMA_intAlloc(-1);
EDMA_config(MYEdma,& MyEdmaConfig);
MYEdmaTable = EDMA_allocTable(-1);
EDMA_link(MYEdma,MYEdmaTable);
EDMA_link(MYEdmaTable,MYEdmaTable);
EDMA_intClear(nTccNum);
EDMA_intEnable(nTccNum);
}
void main()
{
Uint32 * Src = (Uint32 *)SRC_ADDRR;
Uint32 * Dst = (Uint32 *)DST_ADDRR;
Uint32 i;
for(i = 0;i < WIDTH * HEIGHT;i++)
{
*Src++ = i + 1;
}
for(i = 0;i < WIDTH * HEIGHT;i++)
{
*Dst++ = 1;
}
initEdmaChannel();
EDMA_RSET(ESR,1);
EDMA_setChannel(MYEdma);
}
运行结果: