您好:
我采用QDMA通道,LINK地传输数据,数据可以传输成功,但却没办法产生完成中断。我编码设置如下:
1:共有8个QDMA,每个核分两个通道,编号分别是64到71;
:2:通过设置QCHMAP寄存器,使得通道号和PaRAM Set的号一致,即使用64到71的QPaRAM Set。
3:通过设置QRAE寄存器使得:核0使用Region0,核1使用Region1,核2使用Region2,核3使用Region3。
4:通过设置QDMAQNUM,将不同核的两个通道分别配置到不同的队列中,使其有不同优先级。
5:配置好相应的参数后,设置QEESR来使能事件,同时写触发字触发传输。
就是这样的一个过程,完成后查看内存,有数据传输,却没有中断产生?这是为什么?
在使用DMA传输时,会设置中断IER,使用QDMA是不是也得设置,可是IER和IERH共63位,与64个DMA通道一一对应,但是QDMA通道和IER的对应关系我不理解啊?求指教,谢谢!!
Andy Yin1:
QDMA与EDMA设置中断的方式一样,IER中的bit位是与ParamSet中的TCC对应的,与channel没有对应关系,即多个channel可以对应同一个TCC,即对应相同的中断比特位。
chen lisa:
谢谢您的回答,但目前我遇到的问题还是没有解决,
目前遇到的问题是:使用QDMA,link传输数据时,数据可以正确传输,却进入不了中断服务函数? 改用DMA通道来传输时,数据可正常的传输同时可进入到中断服务函数,你上次说DMA和QDMA中断的设置是一样的,那就说明我的中断初始化以及设置时没有问题的,那还可能是哪里设置的不对,导致无法进入中断服务函数呢? 按照文档中有关中断产生的说明,如下图所示:
那要是我想使用通道QDMA channel0产生EDMA3CC_INT0,则要求IPR.E0,IER.E0及QRAE0.E0相应的位要一致才行,IPR由TCC决定,我目前设置的是1,那么在产生完成中断后相应的IPR.E1=1,写寄存器的IESR为2(我写的是全局通道寄存器的IER),即IER.E1=1,通过写寄存器QRAE0将QRAE0.E1位写1.按照我的理解这样的设置后是可以产生中断INT0然后进入到中断服务函数中的呀,为什么现在不行呢?求解答!!谢谢
Andy Yin1:
您好,
请问在数据传输完成后TPCC对应的IPR 比特位是否置位,确认IER在初始化时被置位,可以试试将QDMA放在global region排除shandow region的影响。
TI中文支持网
那要是我想使用通道QDMA channel0产生EDMA3CC_INT0,则要求IPR.E0,IER.E0及QRAE0.E0相应的位要一致才行,IPR由TCC决定,我目前设置的是1,那么在产生完成中断后相应的IPR.E1=1,写寄存器的IESR为2(我写的是全局通道寄存器的IER),即IER.E1=1,通过写寄存器QRAE0将QRAE0.E1位写1.按照我的理解这样的设置后是可以产生中断INT0然后进入到中断服务函数中的呀,为什么现在不行呢?求解答!!谢谢