dma_init.c

来自「dsp在音频处理中的运用」· C语言 代码 · 共 71 行

C
71
字号

#include <user.h>
#include <soc.h>
#include <csl_dma.h>
CSL_DmaHwSetupSrcPort srcPortCfg = {/* Setup for source port */
	CSL_DMA_BURSTEN_DISABLE,    /* Disable burst mode */
	CSL_DMA_ONOFF_OFF,          /* Disable data packing */
	CSL_DMA_PORT_DARAM,          /* DMA src region mapping */
	CSL_DMA_AMODE_POSTINC,      /* Post-increment addressing mode for dst data */        
	0,                          /* Address of source data, assigned later */
	0,                          /* Frame index */
	0                           /* Element index */
};

CSL_DmaHwSetupDstPort dstPortCfg = {/* Setup for destination port */
	CSL_DMA_BURSTEN_DISABLE,    /* Disable burst mode */
	CSL_DMA_ONOFF_OFF,          /* Disable data packing */
	CSL_DMA_PORT_TIPB,         /* DMA dst region mapping */
	CSL_DMA_AMODE_CONST,         /* Fixed location of source data */
	0,                          /* Address of destination data */
	0,                          /* Frame index */
	0                           /* Element index */
};
CSL_DmaHwSetupChannel channelCfg = {/* Setup for channel parameters */
	CSL_DMA_DATASIZE_16BIT,         /* 16-bit data elements */
	SINE_TABLE_SIZE,                /* Number of elements in a frame */
	1,                              /* Number of frames */
	CSL_DMA_PRIORITY_LO,            /* Priority of DMA channel */
	CSL_DMA_SYNC_MCBSP1TX,          /* MCBSP XMT synchronisation event */
	CSL_DMA_FRAMESYNC_DISABLE,      /* Framesync disabled */
	CSL_DMA_ONOFF_OFF,              /* ENDPROG off */
	CSL_DMA_ONOFF_OFF,              /* REPEAT off */
	CSL_DMA_ONOFF_OFF               /* AUTOINIT off */
};
CSL_DmaHwSetupIntr intrCfg = {/* Setup for interrupts */
	CSL_DMA_ONOFF_OFF,        /* BLOCKIE disabled */
	CSL_DMA_ONOFF_OFF,        /* LASTIE disabled */
	CSL_DMA_ONOFF_ON,         /* FRAMEIE disabled ????*/
	CSL_DMA_ONOFF_OFF,        /* HALFIE disabled */
	CSL_DMA_ONOFF_OFF,        /* DROPIE disabled */
	CSL_DMA_ONOFF_OFF         /* TIMEOUTIE disabled */
};
CSL_DmaHwSetup dmaHwCfg = { /* Complete setup object for a channel */
	&srcPortCfg,               /* srcObj initialized above */
	&dstPortCfg,               /* dstObj initialized above */
	&channelCfg,           /* channelObj initialized above */
	&intrCfg,              /* intrObj initialized above */
	NULL 		           /* Global setup is default(reset values) */
};
CSL_DmaObj dmaObj;
void sDma_init(CSL_DmaHandle *hDmaptr)
{   
    CSL_Status    status;
    CSL_DmaParam  dmaParam; 
    CSL_dmaInit(NULL);
    dmaParam.chaNum = CSL_DMA_CHA2;
    *hDmaptr = CSL_dmaOpen(&dmaObj, CSL_DMA, &dmaParam,&status);

}

void dma_init(CSL_DmaHandle hDma,Uint32 srcaddr,Uint32 dstaddr)
{   

/* Assign the address of MCBSP DDR1 register as DMA source start address */
	dmaHwCfg.srcStruct->staddr =srcaddr; //(Uint32)(&(hMcbsp->regs->DRR1));
    dmaHwCfg.dstStruct->staddr =dstaddr;
	CSL_dmaHwSetup(hDma, &dmaHwCfg); /* Setup the DMA channel */

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?