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.

[参考译文] TM4C1292NCPDT:外设的同时 UDMA 使用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/610687/tm4c1292ncpdt-simultaneous-udma-usage-for-peripherals

器件型号:TM4C1292NCPDT

 您好!

TM4C1292NCPDT 具有支持32通道的 UDMA。 我在数据表中发现它只有一个 DMA 中断源编号。

 

我想将 UDMA 用于两个不同的外设(通过 SPI 接口的 ADC 和 DAC)。 我们如何使用 DMA 操作为两个不同外设(通过 SPI 接口的 ADC 和 DAC)定义 ISR 处理程序? 我认为 DMA 将根据定义的优先级在外设之间切换操作。 如果是、如何在软件中识别不同外设的 DMA 中断处理程序?

此致

巴拉

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    处理 DMA 传输结束的中断是分配给原始外设的中断、而不是特定的 DMA ISR。
    这些 DMA 中断仅在您希望监视特定于 DMA 引擎的内容时使用、但通常不需要。
    此外、请记住、您只需要创建一个中断数组控制变量(对齐1024字节)、而不需要为每个外设创建一个中断数组控制变量。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bruno Saraiva">处理 DMA 传输结束的中断是分配给原始外设的中断、而不是指定的 DMA ISR。
    这些 DMA 中断仅在您希望监视特定于 DMA 引擎的内容时使用、但通常不需要。
    此外、请记住、您只需要创建一个中断数组控制变量(对齐1024字节)、而不需要为每个外设创建一个中断数组控制变量。

    [/报价]

    您好、Bruno、

    让我清楚地解释一下我的要求。 我 已 通过一个 SPI 接口配置了外部 ADC、并通过另一个 SPI 接口配置了外部 DAC。 现在、我要将 UDMA 配置为乒乓模式、以便 通过 SPI 从 ADC 连续接收512个采样(每个采样16位)、并在缓冲区填满后向处理器生成中断。 同时、我 希望通过 SPI 接口从存储器缓冲器向 DAC 发送512个采样(每采样16位)、并且需要在缓冲器变空后向处理器生成中断。

    我的问题是、当这两个 ISR 处理程序同时运行时、我们如何为其定义中断源?

    此致

    巴拉

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我实际上看不到专门针对 DMA 的"中断"。 Tivaware UG 上唯一的东西是 uDMAIntStatus、用于通知哪些通道设置了 DMA 中断。

    我们从未将 SPI 传输与 DMA 结合使用、但我假设它将在整个周期结束后触发 SPI 中断。 您试过吗?

    您是否后退了一步、尝试了512字 SPI 传输的软件控制传输?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bala、
    在 DMA 中断 ISR 中、您可以调用 uDMAIntStatus 来了解哪些 DMA 通道生成了中断。 然后、您将相应地确定要服务的通道的优先级。