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 传送完毕,相应的IPR[tcc] or IPRH[ttc-32]没有被置位



最近碰到一个问题: 

测试环境:   DM8148   CCS5.5   Edma驱动 自己配置寄存器  没有使用TI的EDMA3 LLD驱动 

问题是: 我传输完成之后,发现程序死在DMA_wait函数,具体是IPRH的相应位TCC(TCC在OPT中指定)没有置位。

但是IPR,IPRH别的位置被置位。  

不明白,为什么DMA传输完成之后,相应的IPR[tcc] 或IPRH[tcc-32] 没有被EDMA3   控制寄存器置位,而是别的位置被置位了。

请高手指导。 

谢谢!

  • OPT中TCINTEN也需要置位,这样在EDMA完成后IPR相应TCC bit才会置位。

  • Hello Andy,

    非常感谢您的回复!

    TCINTEN bit 在代码中已经置位。

    Inttcc = 1; //which is used for TCC of  OPT

    config.opt = 0x00100004 | (Inttcc<<12);

    tmpval = EDMA_RSV00;  

    if(tmpval<32)
    {
        REG32_WRITE(EDMACC_ESR,((REG32_READ(EDMACC_ESR))|(1<<tmpval)));
    }
    else
    {
        REG32_WRITE(EDMACC_ESRH,((REG32_READ(EDMACC_ESRH))|(1<<(tmpval-32))));
    }

    while(!((REG32_READ(EDMACC_IPR)>>Inttcc) & 0x01));                                       //not use IPRH registers
    REG32_WRITE(EDMACC_ICR,(REG32_READ(EDMACC_ICR)|(1<<Inttcc)));

    问题的关键是,通道EDMA_RSV00,能工作正常,当换成别的通道,比如说EDMA_RSV05,OPT中TCC值保持不变。

    传送完成,在IPR(IPRH)中置的不是TCC的哪一位,而是IPR(IPRH)别的位。

    感觉比较奇怪!

    请给与帮助,非常感谢!!

    BRS,

    Meng

  • 问题解决,原因地址映射,出错。