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.

[参考译文] TMS320F28069:在使用 McBSP 进行传输后、无法获得 DMA 中断来触发

Guru**** 2223470 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/794357/tms320f28069-cannot-get-dma-interrupts-to-trigger-after-transfer-using-mcbsp

器件型号:TMS320F28069

您好!

我尝试在 SPI 模式下使用带有 DMA 的 McBSP、它几乎可以工作。 实际上、我有两个问题、我认为解决其中任何一个都可以使事情充分满足我的目的、但这个问题只是关于中断。

我无法触发 DMA 中断。 在调试器中、我可以看到 PieCtrlRegs.PIEIFR7 = 3、这在传输后是有意义的、因为我将 DMA 通道1和2都设置为生成中断:

 _dmaRegisters->CH1.MODE.bit.CHINTE = 1;           //启用通道中断
  _dmaRegisters->ch1.mode.bit.chINTMODE = 1;           //传输结束时中断
  _dmaRegisters->CH1.mode.bit.PERINTE=1;        //启用外设中断事件
  _dmaRegisters->CH1.MODE.bit.PERINTSEL = DMA_MXEVTA; //外设中断选择= McBSP MXSYNCA

_dmaRegisters->CH2.MODE.bit.CHINTE = 1;           //启用通道中断
    _dmaRegisters->ch2.mode.bit.chINTMODE = 1;           //传输结束时中断
    _dmaRegisters->CH2.MODE.bit.PERINTE=1;        //启用外设中断事件
    _dmaRegisters->CH2.MODE.bit.PERINTSEL = DMA_MREVTA; //外设中断选择= McBSP MRSYNCA

但是、永远不会执行 PieVectTable.DINTCH1和 DINTCH2指向的函数。

我还 在 EALLOW 内设置了所有这些。

IER |= M_INT6 | M_INT7

PieCtrlRegs.PIEIER7.bit.INTx1 = 1;

PieCtrlRegs.PIEIER7.bit.INTx2 = 1;

PieCtrlRegs.PIEIER6.bit.INTx5 = 1;

PieCtrlREgs.PIEIER6.bit.INTx6=1;

我尝试使用中断是因为在这个设置中、我正在手动控制 SPI_SEL/MFSX 线路(因为我遇到的另一个问题)、并且我想使用 DMA 传输完成中断来使该信号无效。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Aaron、

    我相信大家都知道、为了生成中断、需要设置 PIEIER 和 IER。 您的代码中已经显示了这一点、但我有一个非常基本的问题。 您是否还配置了 INTM? 为了处理中断、需要配置 PIEIER、IER 和 INTM。 INTM 控制进入 CPU 的所有中断。 如需参考、请参阅 F28069技术讲座:

    processors.wiki.ti.com/.../C2000_Archived_Workshops

    在《车间维修手册》中、请参阅模块4以了解中断。 此外、DMA 位于模块9中。 实验解决方案代码也可能有所帮助。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯、这是令人尴尬的。 我本来是在其他地方调用 EINT 的、但我之前已经插入了测试代码、所以这是我的问题。

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Aaron、

    不用担心。 我很高兴能提供帮助。

    - Ken