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.

[参考译文] MSPM0G3519:使用 DMA 从循环缓冲器写入计时器寄存器

Guru**** 2756835 points

Other Parts Discussed in Thread: MSPM0G3519

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1599369/mspm0g3519-writing-to-timer-registers-from-a-circular-buffer-with-dma

器件型号: MSPM0G3519

您好:

在发生单个事件时、我尝试从循环缓冲器写入三个计时器寄存器。 为了实现这一目标、我应该如何最好地配置 DMA?

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

    尊敬的 Grant:

    计时器寄存器地址是连续的吗?

    如果是、请将 DMA 设置为块传输、您可以在 SDK 中参阅“dma_block_transfer_LP_MSPM0G3519_nortos_ticlang"。“。

    一旦开始第二次/第三次传输、请设置 源地址和目标地址、然后启动 DMA。

    此致、

    Zoey

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

    您好、Zoey、

    是、计时器寄存器是连续的。

    我的目的是不重写每次 传输的源地址和目标地址。 这是否可以通过常规块传输实现?

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

    块传输不会真正执行您想要的操作,因为它会执行完整的块,然后它就完成了;您将无法“浏览“您的源数组。

    我想写入 CC_01[0]和 CC_23[0]。 如果您不使用 CC_23[1]、则可以使用带超长字(4 个字)传输的单次传输、其中第 4 个字是虚拟的。

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

    嘿、Grant、

    我认为 Bruce 所说的更接近你想要的。 通道大小为 sizeof (cround_buff)/ sizeof (long long) 的单次传输  

    我也有这篇文章在这里:

    MSPM0G3519:DMA 存储器对齐要求 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    看起来您可能需要对齐这些校准才能使 DMA 传输正常工作。 我用很长的时间测试,但我想这是一样的很长一段时间。

    ___

    当我在写这篇文章的中间更新。

    好的、我想我的这个过程适用于从块地址到固定地址的单次传输。 (我是正确的,需要指定字对齐才能正常工作)。

    我可以将其发布在此处、也可以将其压缩并发送给您。

    Munan

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

    嘿,只是想更新论坛关闭,我们解决了单次转移块地址到固定地址使用 long long。

    我还想提一下、如果有人感到好奇、2 个 DMA 通道的计时器触发器要求每个 DMA 通道都有自己的订阅者端口、我们使用事件通道 12 来让计时器事件有一个 1-2 分离器同时触发每个 DMA 通道。 (它不是完全同时进行,因为 DMA 进行了仲裁,因为一次只能发生一个物理传输)

    否则、您可以将两个 DMA 通道映射到 1 个计时器事件订阅者端口、但最终发生的是第一个通道将在第二个通道启动之前完成其传输。  

    Munan