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.

[参考译文] LP-MSPM0C1104:从 DMA 传输数据后触发中断

Guru**** 2847400 points

Other Parts Discussed in Thread: SYSCONFIG, LP-MSPM0C1104

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1597407/lp-mspm0c1104-trigger-an-interrupt-after-data-transfer-from-dma

器件型号: LP-MSPM0C1104
主题中讨论的其他器件: SysConfig

尊敬的专家、我正努力解决一个表明“工作已完成“的问题:

我对 LP-MSPM0C1104 上的 ADC 进行采样以获得 128 个结果、将其传输到 fft[]的变量中、并可以在数组的内存位置看到来自 ADC 的值。 现在、我想调用 ISR 来设置变量 DMA_DONE = TRUE;我正在搜索如何对“DL_DMA_INTERRUPT_CHAN_DONE"进行“进行编程。 到目前为止、所有工作都由 SysConfig 完成。

但我无法看到如何在 DMA 块中配置此类事件。

您在 https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AI.BkXZOjs1Mumz8FFaLTg__MSPM0-SDK__a3PaaoK__LATEST 中的示例

如果工作完成、则在 ISR 中检查 ADC:

开关 (DL_ADC12_getPendingInterrupt (ADC12_0_INST)){
    用例 DL_ADC12_IIDX_DMA_DONE:
      gCheckADC = true;
      休息;
    默认值:
      休息;

我想知道、为什么您不为 DMA 选择通过 ISR 的方式、意味着如何触发 ISR?

void DMA_IRQHandler (void){
  /*
  if (DMA->CH0CTL & DMA_CHCTL_TCIF){
    DMA->CH0CTL &&~DMA_CHCTL_TCIF;// Flag löschen
   */
    DMA_DONE = TRUE;
}
 
插入/**/、因为找不到此类声明。 但与 dma_done 一致的断点应指示调用和进入 ISR 的入口。
 
是否有准则?
 
Br Bernd
 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bernd:
    让我来看看这个问题、下周星期一会给您解答。

    此致、

    Diego Abad

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

    亲爱的迭戈,这对我来说还可以。 同时我正在挖掘 slau893c。 享受周末和 BR Bernd

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

    尊敬的 Bernd:
    该示例似乎利用了 直接外设到 ADC 的 DMA 触发。 我想您也可以使用来自通用通道 DMA 的中断 、如 dma_table_transfer 示例中所示。

    此致、

    Diego Abad