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.

6670 EDMA3使用QDMA通道时,如何设置完成中断?



您好:

我采用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的对应关系我不理解啊?求指教,谢谢!!

 

 

  • QDMA与EDMA设置中断的方式一样,IER中的bit位是与ParamSet中的TCC对应的,与channel没有对应关系,即多个channel可以对应同一个TCC,即对应相同的中断比特位。

  • 谢谢您的回答,但目前我遇到的问题还是没有解决,

    目前遇到的问题是:使用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然后进入到中断服务函数中的呀,为什么现在不行呢?
    求解答!!谢谢

  • 您好,

    请问在数据传输完成后TPCC对应的IPR 比特位是否置位,确认IER在初始化时被置位,可以试试将QDMA放在global region排除shandow region的影响。