This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于EDMA3参数设置的困惑



static void BufferRxDMAActivate(unsigned int rxBuf, unsigned short parId,unsigned short parLink)
{
    EDMA3CCPaRAMEntry paramSet;

    /* 复制默认参数集 */
    memcpy(&paramSet, &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, &paramSet);
}

这是我工程中EDMA3的参数设置,用来把MCASP传进来的立体声的左右声道分开。

其中的CIDX是这样设置的,不懂什么意思,另外在初始化中2改为3了。

不知道什么原因。

求解答

  • 你的程序哪来的?
  • 是我自己项目上用的,不知是谁写的,和6748里的AUDIO_LINE_IN的大部分代码一致,我也能看懂。
    但是这个CIDX的设置不知道什么意思。
  • user5324036 说:
    是我自己项目上用的,不知是谁写的,和6748里的AUDIO_LINE_IN的大部分代码一致,我也能看懂。
    但是这个CIDX的设置不知道什么意思。

    我也没看懂。代码里rxDefaultPar的配置是什么?想看看其它参数来结合理解。

       memcpy(&paramSet, &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, &paramSet);

  • 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*/
    };