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.

[参考译文] TMS570LS2124:关于 DMA 中断的问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1484649/tms570ls2124-question-about-dma-interrupt

器件型号:TMS570LS2124

工具与软件:

尊敬的 Champs:

现在客户正在使用 DMA 中断、他们配置了两个 DMA 中断、它们都是 BTC 类型(块传输完成)。  共有16个~通道(从0 0~5 15开始)、但根据 TRM 的表16-47中的描述、BTCA 仅使用0~15位来表示 μ DMA 通道、而不是使用16位来逐一表示。

因此、如果通道1和通道4都配置为 BTC 中断、那么当通道1和通道4同时触发 DMA 中断时、BTCA 是否会读取错误的通道编号并导致错误的中断? 或者这是否会导致中断丢失?

客户的意思是、虽然会读取 BTCA、但如果同时中断、通道1 BTCA 将设置为0b010、通道4 BTCA 将设置为0b101、因此如果同时中断、BTCA 是否会设置为111、即、它将成为通道6的中断?

现在、客户会发现、当只配置了一个 DMA 中断时、程序运行良好。 当配置两个 DMA 中断时、其中一个中断有时会无法触发。 他们想知道为什么会出现这个问题。

谢谢!

 

此致、

Julia

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

    尊敬的 Julia:

    根据我对该器件的了解、

    BTCFLG 寄存器中的以下位表示实际块传输已完成通道状态:

    如上所述、每个位将指示一个通道、如您所见、每个通道有16位和一位。 如果多个通道完成了块传输、则会设置相应的通道位。

    BTCAOFFSET 将在所有完成块传输的通道中指示一个通道、这意味着 BTCAOFFSET 寄存器显示完成块传输的第一个通道编号。 一旦我们对相应的通道进行了处理、就会生成下一个完成的挂起通道中断。

    [报价 userid="486218" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1484649/tms570ls2124-question-about-dma-interrupt。"]因此、如果通道1和通道4都配置为 BTC 中断、当通道1和通道4同时触发 DMA 中断时、BTCA 是否会读取错误的通道号并导致错误的中断? 或者这是否会导致中断丢失?[/QUOT]

    所以、应该不会有任何错误的中断、否则会出现中断缺失的情况。

    ——
    谢谢、此致、
    Jagadish。