TI中文支持网
TI专业的中文技术问题搜集分享网站

C6745的 EDMA3 中断的问题

在C6745板子上面进行测试,想测试EDMA3的传输完成中断,中断初始化函数及中断服务函数如下:

int Interrupt_Init(void)
{
CSL_DspintcRegsOvly intcRegs = (CSL_DspintcRegsOvly)CSL_INTC_0_REGS;

/* connect the event to the interrupt 4 */
CSL_FINS(intcRegs->INTMUX1, DSPINTC_INTMUX1_INTSEL4,CSL_INTC_EVENTID_EDMA3CC_INT1);

/* set ISTP to point to the vector table address */
ISTP = (unsigned int)intcVectorTable;

/* clear all interrupts, bits 4 thru 15 */
ICR = 0xFFF0;

/* enable the bits for non maskable interrupt and */
IER = 0x12;

/* enable interrupts, set GIE bit */
_enable_interrupts();
EDMA_IER_set(hBasebandRxEdmaCh);//to generate a completion interrupt to the CPU,the corresponding IER[TCC] bit must be set to 1
EDMA_DRAE1_set(hBasebandRxEdmaCh);
delay(50);
if(status==1)
{
status=1;

}
else
{
status=0;
}
return status;
}
interrupt void EDMA3_INT_isr()
{
status=1;

}

现在关于EDMA3中断,有几个问题:

(1)在soc_C6747.h文件中,关于EDMA3的传输完成事件:只有一个:(如下)

/* CC Completion Interrupt for region 1 */
#define  CSL_INTC_EVENTID_EDMA3CC_INT1    (8)      (在该文件的第549行),我在程序中就是使用的这个事件。

但和这个事件的号码相同的还有:

/* TPCC0 Region 1 Interrupt */
#define CSL_INTC_EVENTID_TPCC0_INT1 (8)     这两个的事件号为什么是一样的?这对我使用上面事件时会不会有影响?

(2)EDMA3的IER和IPR中相应位已经使能,可以看到在中断控制器的 EVTFLAG 寄存器中已经显示事件8已经产生,而且,DSP中的GIE和IER也已经使能,但是IFR始终没有置位,但没有找到原因,请问,可能出现的原因有哪些?

谢谢!

Tony Tang:

#1.这两个是指的同一个事件。

#2. 查看一下INTMUX1寄存器是否对。

#3. 手动置ISR看能否进中断,如果能进表示中断向量表设置没问题。

#4. 在EDMA里手动清除掉IPR,看还能否产生中断。有可能是EDMA端有问题。

赞(0)
未经允许不得转载:TI中文支持网 » C6745的 EDMA3 中断的问题
分享到: 更多 (0)