static void BufferRxDMAActivate(unsigned int rxBuf, unsigned short parId,unsigned short parLink) { EDMA3CCPaRAMEntry paramSet; /* 复制默认参数集 */ /* 启用完成中断 */ |
这是我工程中EDMA3的参数设置,用来把MCASP传进来的立体声的左右声道分开。
其中的CIDX是这样设置的,不懂什么意思,另外在初始化中2改为3了。
不知道什么原因。
求解答
Tony Tang:
你的程序哪来的?
user5324036:
回复 Tony Tang:
是我自己项目上用的,不知是谁写的,和6748里的AUDIO_LINE_IN的大部分代码一致,我也能看懂。
但是这个CIDX的设置不知道什么意思。
Tony Tang:
回复 user5324036:
user5324036是我自己项目上用的,不知是谁写的,和6748里的AUDIO_LINE_IN的大部分代码一致,我也能看懂。 但是这个CIDX的设置不知道什么意思。
我也没看懂。代码里rxDefaultPar的配置是什么?想看看其它参数来结合理解。
memcpy(¶mSet, &rxDefaultPar, SIZE_PARAMSET – 2); /* 启用完成中断 */ paramSet.opt |= RX_DMA_INT_ENABLE; paramSet.destAddr = rxBufPtrL[rxBuf]; paramSet.destBIdx = rxBufPtrR[rxBuf] – rxBufPtrL[rxBuf]; paramSet.destCIdx = 2 + rxBufPtrL[rxBuf] – rxBufPtrR[rxBuf]; paramSet.cCnt = NUM_SAMPLES_PER_AUDIO_BUF; paramSet.linkAddr = parLink * SIZE_PARAMSET; EDMA3SetPaRAM(SOC_EDMA30CC_0_REGS, parId, ¶mSet);
user5324036:
回复 Tony Tang:
static struct EDMA3CCPaRAMEntry const rxDefaultPar ={(unsigned int)(EDMA3CC_OPT_SAM| (0x02 << 8u)), /* Opt field */(unsigned int)SOC_MCASP_0_DATA_REGS, /* source address */(unsigned short)(2), /* aCnt */(unsigned short)(2), /* bCnt */(unsigned int)(rxBufL0), /* dest address */(short) (0), /* source bIdx */(short)(6), /* dest bIdx */(unsigned short)(PAR_RX_START * SIZE_PARAMSET), /* link address */(unsigned short)(2), /* bCnt reload value */(short)(0), /* source cIdx*/(short)(0), /* dest cIdx */(unsigned short)(NUM_SAMPLES_PER_AUDIO_BUF) /* cCnt 160*/};