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

6670的EDMA中断产生不了

我想使用edma拷贝一些数据,数据拷贝完成进入外部中断4对应的中断处理函数,EDMA_copy数据拷贝功能是完成了,但总是进不了中断4,请帮我看看是什么原因。

代码如下。

void edma_isr_init(void)
{
EDMA_init();
/* Disable Global host interrupts. */
gpCIC0_regs->GLOBAL_ENABLE_HINT_REG= 0;

/*map SPI Interrupt events (54 for SPIINT0) to CIC0 INTC0 out*/
KeyStone_CIC_event_map(gpCIC0_regs, 36, 64);
/* Enable Global host interrupts. */
gpCIC0_regs->GLOBAL_ENABLE_HINT_REG= 1;

gpCGEM_regs->INTMUX1 = 0;
gpCGEM_regs->INTMUX1 = (22<<CSL_CGEM_INTMUX1_INTSEL4_SHIFT);
gpCGEM_regs->INTMUX2 = 0;
//map local timer interrupt to INT14
// gpCGEM_regs->INTMUX3 = 22<<CSL_CGEM_INTMUX3_INTSEL14_SHIFT;

/*Clear all DSP core events*/
gpCGEM_regs->EVTCLR[0]= 0xFFFFFFFF;
gpCGEM_regs->EVTCLR[1]= 0xFFFFFFFF;
gpCGEM_regs->EVTCLR[2]= 0xFFFFFFFF;
gpCGEM_regs->EVTCLR[3]= 0xFFFFFFFF;

//clear DSP core interrupt flag
ICR= IFR;

//enable INT14
IER = IER|(1<<14)|(1<<4);

/*Interrupt Service Table Pointer to begining of LL2 memory*/
ISTP= 0x800000;

//enable GIE
TSR = TSR|1;

}
void edma_test()
{
KeyStone_Exception_cfg();
edma_isr_init();
// KeyStone_test_config();
memset(buffer, 0, sizeof(buffer));
memset(edma_buf, 0x5a, sizeof(edma_buf));
EDMA_copy((unsigned int)GLOBAL_ADDR(edma_buf), GLOBAL_ADDR(buffer), DMA_BUF_SIZE, 0, DMA_NO_WAIT);
while(1);
return;
}

Andy Yin1:

你已经配置了CIC路由,确认EDMA初始化中有配置IER、IERH寄存器对channel使能中断。

Jianyong Wei:

回复 Andy Yin1:

我在EDMA_copy中有对ESR进行使能,我是用的cifae_KI_STK_Deyi这个库改写的。如果方便的话,能不能给我一个可以实现这个功能的例程。谢谢

Jianyong Wei:

回复 Andy Yin1:

按照你说的方法已经解决了,谢谢

yi si:

回复 Jianyong Wei:

你好,我想问下,pCGEM_regs 这个是什么啊【DSP大白,啥都不懂,原谅我这白痴的问题】 感觉这类名词应该是手册还是某个地方已经定义好了吧,请问在哪找呢,这类的定义我都不知道是什么意思啊

赞(0)
未经允许不得转载:TI中文支持网 » 6670的EDMA中断产生不了
分享到: 更多 (0)