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.
您好!
我需要设置3个 PWM 模块(1、2、3)的 CMPA/B。
是否可以配置单个 DMA 通道将 CMPA/B 值写入这3个模块、即使地址不是连续的?
我想定义1次突发传输和3次传输、也许有办法在传输之间定义地址中的"跳转"?
如果没有、我想唯一的方法是配置3个不同的 DMA 通道?
谢谢!
Mojo、
这应该是可能的。 我假设您需要写入 PWM1的 CMPA/B、然后是 CMPA/B PWM2、最后是 PWM3的 CMPA/B。
CMPA/B 是每个 PWM 中的连续地址,因此您只需执行猝发步骤+1、4个16位写入(或2个16位写入,如果您不使用 CMPA/B 寄存器的 HR 部分,则需要执行猝发步骤+2)。
然后、您将需要再执行2次;因此我们可以使用传输计数和步骤来执行此操作。 传输大小为2 (这将执行总共3次 DMA 突发)、然后使用目标传输步骤递增到 PWM2地址空间。 之前的突发大小/步长将负责其余工作。
如果您在所有 PWM 上写入相同的值、则可以使用源传输步骤进行反向跟踪、或者如果有6个不同的值、则可以在该数组中向前移动、以便在每个 PWM 上写入正确的值。
最后、您希望这一切都通过单个触发器实现、以便在 DMA 中启用 OneShot 模式。
如果您有任何问题、请告诉我、我们可以从那里解决。
最棒的
Matthew
谢谢!
它工作得非常完美