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.

[参考译文] MSP430F2619S-HT:功能请求:DMA 源指针的自动重新加载(如果使能)

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1227835/msp430f2619s-ht-feature-request-auto-reload-of-dma-source-pointer-if-enabled

器件型号:MSP430F2619S-HT

这更像是一个功能请求而不是一个问题。 如果这不是此类请求的正确位置、我深表歉意。

这是我想做的事情。

我们有使用 LVDTS/RVDT 的应用程序。 为了激励传感器的初级侧、我们会将一个正弦表加载到闪存或 RAM 中、然后使用计时器将表内容发送到板载 DAC、以触发 DMA 发送值。 在初始设置之后、不需要 CPU 干预。 但是、当我们到达表的末尾(DMA 计数器= 0)时、将触发中断、CPU 将必须重新加载指向表开头的 DMA 源指针。 如果还有另一个更高优先级的任务正在进行、则中断可能会被阻止、并且指针可能无法及时复位以传输下一个值(导致输出波形出现干扰)。

如果 DMA 控制器可以在 DMA 计数器达到0时自动重新加载 DMA 源指针、这将是一个不错的功能。 这样、值可在 DMA 控制下从循环缓冲区连续写入、而无需任何进一步的 CPU 干预。

这看起来很容易实现、对于波形生成应用而言会非常有帮助。

谢谢。

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

    听起来您正在使用 DMADT = 0 (单通道)。 如果是、DMADT=4 (单次重复)应该能提供您想要的内容。 重新加载指针后、它将在下一次触发时重新启动、因此任何周期结束干预都必须很快。 (如果使用 DMADT=1 (块)、则需要 DMADT=5 (重复块)。)

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

    你好、Bruce。 感谢您的回复。 是的、重复单次是我将使用的模式(即每个触发事件的单次传输)。 源指针将通过循环缓冲器递增、目的指针将保持在 DAC 数据寄存器上固定不变。

    这是当我们到达终点(DMA 计数器= 0)时发生的情况、我想改进。 如果在 DMA 计数器达到0时 DMA 源指针可以自动重新加载到其起始位置、则不需要 CPU 干预(初始化除外)。 设置完成后、它会立即运行。

    我不想使用一个触发事件来传输整个块。 相反、我希望在每个触发事件中传输一个值。 然后、重复执行、以将所有值从循环缓冲区中传输出来。

    再次感谢。

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

    DMADT = 4时、当 SZ=0时、SZ、DA 和 SA 被重新加载并在下一次触发时继续。 [请参阅用户指南(SLAU144J)图6-3.] 无需 CPU 干预、但如果需要、您可以获得一个中断。

    可能我不了解您希望它做什么。

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

    啊! 现在我看到了。

    "对不起,我现在就在你的面前。"

    谢谢布鲁斯!