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.

[参考译文] TM4C1294NCPDT:总 ADC DMA 参考结束时的信号中断

Guru**** 2527510 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/901291/tm4c1294ncpdt-signal-interrupt-at-the-end-of-total-adc-dma-transfere

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:EK-TM4C1294XL

大家好、

在我的项目中、我需要对 所有20个模拟输入进行采样。 为此、我希望使用 ADC0的所有采样序列发生器和 ADC1的1、以便采样序列发生器中的每个不同步骤都将监控特定的模拟输入引脚。 我受控于从计时器生成触发事件、并使用 UDMA 获取结果。 我想澄清以下问题:

  1. 我是否可以配置计时器、以便在没有任何中断例程的情况下继续生成触发器? 没有 CPU 负载...

为了从采样序列发生器中获取数据、我计划使用外围散射-平坦 UDMA:

  1. 外围散射振荡是否是在没有编程交互的情况下获得所有 ADC 结果的正确选择?
  2. 如何生成在所有配置的散点式 UDMA 传输完成后置位的单个 UDMA (ADC)中断? 请查看数据表:DMA 中断仅是对等采样序列发生器的基础

此致、

Toth、Norbert

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

    有趣的想法。 我没有尝试过,但认为它应该起作用。

    [引用 user="Norbert Toth"]是否可以配置计时器、以便在没有任何中断例程的情况下继续生成触发器? 无 CPU 负载[/报价]

    是的。

    [引用 user="Norbert Toth"]外围散射振荡是否是在没有编程交互的情况下获得所有 ADC 结果的正确选择?

    在没有 CPU 中断的情况下获得8个以上的样本是的。 我不确定为什么不使用一个 ADC 的12个通道和另一个 ADC 的8个通道。 它可能会简化事情。 由于要转换20个通道、您需要使用多个序列、是的、外设散聚是正确的。 您可以为8个通道设置 ADC0序列0、为4个通道设置 ADC0序列1、为其他8个通道设置 ADC1序列0。 一个计时器可以启动两个 ADC。 ADC1将首先完成、因为它只有8个要转换的通道。 对于该 ADC、您可以将 DMA 配置为基本模式或乒乓模式。 全新 TivaWare 2.2.0.295版中有一个很好的示例、它使用计时器在乒乓模式下触发 ADC 和 DMA。

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\adc_udma_pingpong

    对于 ADC0、您需要使用外设收集散射来从两个序列中获取数据、而无需 CPU 干预。 新的 TivaWare 中有一个收集散射演示、但它用于 UART 而不是 ADC。 但您仍可能会发现它对您有所帮助。

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\UDMA_SP散 射_收集

    实际上、您只需要启用 ADC0收集散点序列完成后的中断、因为这将需要更长时间。 在中断例程中、您可以在下一个计时器触发之前复位两个 UDMA 通道。