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.

[参考译文] TMS320F28075:使用具有 ADC 最高中断优先级的 DMA

Guru**** 2795315 points

Other Parts Discussed in Thread: TMS320F28075

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1226482/tms320f28075-using-dma-with-adc-highest-interrupt-priority

器件型号:TMS320F28075

你(们)好!

我们在我们的医疗应用系统中使用 TMS320F28075。

在我们的系统中、我们从所有 ADC 通道以40kHz SOC 触发。 EOC 触发具有最高中断优先级的 ADCA1中断。 在此范围内、将实施中断电流控制。 目前、我们每次进入 ADCA1 ISR 时都从 ADC 读取寄存器的结果。 我们将使用 ADCA/ADCB 并用于每个7个通道。

为了进一步改进、我们考虑实施 DMA 控制器、而不是在每个 ISR 中读取寄存器。 理想情况下、我们不必使用 DMA 读取和验证 ADC 结果。 但我们看到的问题是、为了进行验证、我们需要获取优先级较低的 DMA_CHX 中断、因此会完全减慢系统的速度。 这将是一个杀手。 另一种选择是使用来自 DMA 的 Channel1、并继续将 ADC 结果传输到目标地址范围、然后使用这些值而不选中它。 因此、我们只信任 DMA 比 CPU 快。 我的意思是,这也不是很好。

我们的想法甚至可行吗? 我们很不确定也很惊讶、因为 DMA 通道1应该是 ADC 应用的理想之选。 我们不是第一个,谁面对这个问题:-)

其次、是否可以使用 DMA 将数据从 ADCA/ADCB 传输到对齐的目标范围? 那么使用突发、绕回和传输大小以及步长应该是可能的呢?

感谢您发送编修

罗伯特

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

    Robert:

    感谢您联系 E2E。  就较低的优先级而言、只有在多个 ISR 等待 PIE 控制器时才会生效、然后 PIE 表中的顺序将决定操作的顺序。  如果 DMA ISR 不附带任何其他待处理的属性、则它将被处理、并且除非您在 DMA ISR (嵌套)内重新启用 ISR、否则这些 ISR 将被延迟、直到 DMA ISR 完成/返回。  请记住、DMA ISR 不会影响从 ADC 到存储器的数据 DMA 传输;它只是通过通知您操作已完成。  在这种情况下、您会禁用 ADC ISR。

    如果仍然存在这样一个问题、即您仍然可以使用 DMA 将结果传输到存储器、但继续使用 ADC ISR 触发电流控制环路。在开始访问数据之前、您可能需要轮询 DMA 以确保其已完成。  这仍然可以节省时间、从而将结果保存到存储器中。

    根据启动电流控制环路之前所需的 ADC 结果数量、这可以在开始处理数据之前节省多个 ADC ISR 的时间。  不确定是否在 ADC 内使用 PPB (后处理块)、这样也可以节省一些 CPU 周期、以便在存储 ADC 结果之前注意一些简单的加法器/减法器类型的功能。

    我想告知您有关  从第9页开始的 DMA/ADC www.ti.com/.../sprz423的勘误表。

    您提到的转移应该是可行的、但如果您想让我举例说明您在这里的想法、我可以看看是否有突发/转移/绕回的首选方法。

    此致!

    Matthew