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.

C665x UPP中断例程



如题,官方有C6657/C6655/C6554的UPP中断例程吗,在论坛上看到的,都存在只能触发一次中断的问题,谢谢!

  • 参考附件例程及如下帖子,先测试一下。

    http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/94529.aspx

    upp_dlb_test_ISR_0307.7z
  • Andy Yin1 你好,我在EVM6657板上对附件例程进行测试,发现情况一样,只能进一次中断,并且在中断退出的时候有执行uppRegs->UPEOI = 0;

    第一次中断退出时UPIER为0,然后程序就再也进不去中断程序了,此时UPIER为0x808,表明确实发生了中断,这是什么原因呢?

  • 麻烦跟进一下这个问题,或者给一下思路,为什么只能进一次中断处理程序,谢谢!

  • 在完成一次数据传输进入中断后,有再重配DMA等数据传输么,如果用查询的方式能看到数据传输完成么,可能是下一次的数据传输失败导致中断没有产生。如果状态寄存器UPIER都没有被置位的话,应该是UPP本身就没有产生中断,查看UPISR确认中断是否使能,确认UPP DMA相关的寄存器是否配置对,UPI/QSR寄存器中的pending bit确认是否DMA一直pending没有完成。

  • Andy Yin1 你好,感谢回复。

    完成中断后,UPIER被清零,说明中断服务程序已经把相关中断标志位清除了,中断后有重配置DMA传输,如下:

    if(gtestTxFlag == 1)
    {
    while(CSL_FEXT(uppRegs->UPIS2, UPP_UPIS2_PEND) == 0)
    {
    gtestTxCnt++;
    upp_dma_prog(UPP_DMA_CHAN_I, (void *)xmtBuffer, 1, 8320, 0);
    }
    gtestTxFlag = 0;
    }

    中断一次后,再发生中断(UPIER为0x808),也无法进入中断服务程序,另外pending bit您指的是UPIS2和UPQS2寄存器吧,这两个寄存器为0,说明No transfer pending。一下是无法进入中断服务程序的寄存器值:

    按道理您给我的程序应该是没问题,您这边能在EVM6657开发板上验证一下嘛?谢谢!