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.

[参考译文] MSPM0G3507:DMA 不运行

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1396856/mspm0g3507-dma-is-not-operate

器件型号:MSPM0G3507

工具与软件:

您好!

我可以询问一下 MSPM0G DMA 吗?

我想将 ADC 数据复制到 SRAM。

我将 DMA 设置为此(用于调试、设置触发器软件)

    //DMA trigger is internal, Trigger select (Trigger Mapping can see in Datasheet)
    DMA->DMATRIG[0].DMATCTL |= DMA_DMATCTL_DMATINT_INTERNAL | (DMA_DMATCTL_DMATSEL_MASK & 0); // ADC0 :23
    // word(32-bit) transfer, source address no-change, destination address no-change, repeat single transfer mode
    DMA->DMACHAN[0].DMACTL |= DMA_DMACTL_DMASRCWDTH_WORD | DMA_DMACTL_DMASRCINCR_UNCHANGED | DMA_DMACTL_DMADSTINCR_UNCHANGED | DMA_DMACTL_DMATM_RPTSNGL;

    // source address
    DMA->DMACHAN[0].DMASA |= (0x40000000 + 0x1280); //(unsigned int)(&(ADC0->ULLMEM.MEMRES[0]));
    // Destination Address
    DMA->DMACHAN[0].DMADA |= 0x20203000;//(unsigned int)(&DMA0_ADC0_0);
    // DMA channel size
    DMA->DMACHAN[0].DMASZ |= (DMA_DMASZ_SIZE_MASK & 0x000F ); // F word

    DMA->DMACHAN[0].DMACTL |= DMA_DMACTL_DMAREQ_REQUEST | DMA_DMACTL_DMAEN_ENABLE; // DMA start and enable

在主循环中、它执行了      DMA->DMACHAN[0].DMACTL |= DMA_DMACTL_DMAREQ_REQUEST | DMA_DMACTL_DMAEN_ENABLE;// DMA start、enable

作为软件触发器。

但 目标存储器未更改。

收件人:

发件人:

它与将触发器设置 为 ADC 的 DMA 事件相同。

你能告诉我出了什么问题吗?

谢谢!

Gr

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

    您好、GR、

    我建议查看 Resource Explorer 上的 adc12_max_freq_dma 示例、以了解如何配置 DMA 和 ADC、看看它是否与您所做的相符。 我还建议保持 DMA 目标宽度和源宽度相同、即传输字到字而不是字到字节。

    如果该示例不能为您澄清问题、请告诉我。

    此致!

    Fabrice。

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

    尊敬的 Fabrice:

    感谢您提供的信息。

    在我的资源中、竞争  adc12_max_freq_dma 项目、

    我误解了 DMA 的 DMATCTL。 DMATINT 寄存器"内部"表示 MSPM0的内部。

    如果我将其设置为外部、则是有效的。

    此致、

    Gr