最近碰到一个问题:
测试环境: DM8148 CCS5.5 Edma驱动 自己配置寄存器 没有使用TI的EDMA3 LLD驱动
问题是: 我传输完成之后,发现程序死在DMA_wait函数,具体是IPRH的相应位TCC(TCC在OPT中指定)没有置位。
但是IPR,IPRH别的位置被置位。
不明白,为什么DMA传输完成之后,相应的IPR[tcc] 或IPRH[tcc-32] 没有被EDMA3 控制寄存器置位,而是别的位置被置位了。
请高手指导。
谢谢!
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.
最近碰到一个问题:
测试环境: DM8148 CCS5.5 Edma驱动 自己配置寄存器 没有使用TI的EDMA3 LLD驱动
问题是: 我传输完成之后,发现程序死在DMA_wait函数,具体是IPRH的相应位TCC(TCC在OPT中指定)没有置位。
但是IPR,IPRH别的位置被置位。
不明白,为什么DMA传输完成之后,相应的IPR[tcc] 或IPRH[tcc-32] 没有被EDMA3 控制寄存器置位,而是别的位置被置位了。
请高手指导。
谢谢!
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