[N32G43x] DMA修改PWM占空比

[复制链接]
 楼主| JhonsonChou 发表于 2022-10-31 15:39 | 显示全部楼层 |阅读模式
本帖最后由 JhonsonChou 于 2022-10-31 16:39 编辑

最近调定时器PWM时遇到一个问题,就是用DMA连续模式循环修改PWM占空比时发现周期也被改变了,后面发现是中央对齐模式的问题

正常来说,配置定时器触发DMA修改占空比,触发源通常选择定时器的Update信号,而中央对齐模式下,一个PWM周期内是会产生两次Update信号的

所以当这两次Update信号均作为DMA的触发信号时,在一个PWM周期内,比较值会被修改两次

我们想要循环多次改变占空比,当然是选择一个周期修改一次比较值

解决方法有两个,一个就是将中央对齐模式更改为向上或者向下计数模式,另一个就是当这个计数器为高级定时器时,可以选择配置重复计数值为1,这样的话两次Update信号才会触发一次DMA,亦可解决该问题

附件是将中央对齐模式改为向上计数模式的示例代码,仅供参考
Nations.N32G430_Library.1.0.0_TIM1DMA.rar (9.43 MB, 下载次数: 29)


UFO8848 发表于 2022-10-31 16:28 | 显示全部楼层
可以附一下DMA修改占空比的代码吗
 楼主| JhonsonChou 发表于 2022-10-31 16:40 | 显示全部楼层
UFO8848 发表于 2022-10-31 16:28
可以附一下DMA修改占空比的代码吗

代码上传到附件了
AuroraWU 发表于 2022-11-24 15:41 | 显示全部楼层
请教一下,能否用DMA来控制PMW输出脉冲个数?我用435,试了一下,有时候会多输出一个脉冲(不一定完整),不知道这个脉冲怎么去除,没有啥规律性,会偶尔触发。
 楼主| JhonsonChou 发表于 2022-11-25 11:43 | 显示全部楼层
AuroraWU 发表于 2022-11-24 15:41
请教一下,能否用DMA来控制PMW输出脉冲个数?我用435,试了一下,有时候会多输出一个脉冲(不一定完整), ...

控制PWM输出脉冲个数就没必要用DMA了,DMA是用来修改脉冲周期或占空比这类参数的,你要输出指定数量的脉冲,直接用高级定时器的单脉冲模式+重复计数功能即可
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部