你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

一个定时器实现3路时差和占空比可调的波形

[复制链接]
Lumhao 发布时间:2019-11-4 11:33
有人想实现下面的PWM输出波形,三路频率相同,占空比同步可调,且三路输出波形时差固定为T/3。【下图中橙色斜线是计数器周期性计数变化曲线示意图】之前有过类似的话题交流,这里就整个实现过程再做下演示,并尽可能介绍详细点。
! E- {7 }' b, `4 _! f; Y
11.png
  k! s3 K. z1 p# z4 ]: o+ E
这里使用STM32F302_Nucleo板来实现之。使用STM32常规定时器中的高级定时器TIM1来实现。当然,也并非一定要TIM1,其它支持多通道比较输出且比较事件能触发DMA的都可以。
8 Z7 }9 P% G. k+ s. A
其中,第一路使用TIM1_CH1,使用PWM1输出模式,第二路使用TIM1_CH2,第三路使用TIM1_CH3,这两路都使用Match Toggle输出模式。
8 U2 O- t% a+ j/ E7 N4 c. l
在TIM1更新中断里修改通道1的CCR值,为修改CH2/CH3的CCR值做准备,最终通过CH2/CH3各自的比较事件触发DMA,依靠DMA写入CC2和CCR3寄存器而完成修改。注意,此时CH2/CH3通道的CCR寄存器预装功能必须关闭。
6 \- Q! N: R3 l* \2 s1 Y. F& ~
22.png
一、基于STM32CubeMx的配置如下:
4 `8 g" r! @! u  e. `* W7 k& P+ P
33.png
44.png
55.png
66.png
77.png
二、准备相关用户代码
88.png
+ o- f) V. h& s& C" G" k6 Z* h9 r
主要准备上面几句,代码是我基于STM32Cube库而编写。
上面的第1/2句清除TIM1的更新中断标志,有些情况下没有这两句会给我们带来些麻烦或困惑。主要是防止一使能定时器更新中断或相关DMA请求就进入中断服务程序或触发DMA传输,更多细节在之前文章中有详细介绍过。这里就不重复了。
第3句、第4句、第6句功能差不多,开启相应通道的比较输出功能,其中开启了基于CH2/CH3的比较事件的DMA触发使能,并完成相关配置。

7 R7 x# Z$ f+ E/ G* X; _
特别提醒第5句,这句是跟库代码有关联的。库代码目前在调用定时器的DMA配置时,目前来看应该说有个bug,调用某个通道的DMA配置函数后,需要将状态改为ready后才能有效调用后续其它通道的DMA配置函数。当然,我们如果不使用Cube库代码就不用这句了。
5 o/ Q$ W5 ^/ S" q" @, ^7 g
第7句只有TIM1/TIM8高级定时器才需要使用它,开启TIM1/TIM8的主输出功能。
另外,准备了跟DMA传输有关的两个内存数组。其中红色下划线的数据在实际运行过程中会被动态修改而调整占空比。

: j' d2 v4 a3 A) d9 P6 s" U( g
99.png

' T% d: r! e! Z( N
在TIM1更新中断里同步修改各个通道CCR的值,参考代码如下。其中,Count_Update和i为两个静态字节变量。这里每发生256次更新事件后分别对3个通道的CCR值做一次修改。【具体使用中你可以自行根据具体需求来设计,这里仅供演示参考。贴出原始代码主要是为了帮助理解整个思路。】
4 f; J8 v( E8 ?: F3 w
10.png
7 S6 c$ Q- h% D$ b2 g
三、验证最后结果。

% Z9 x7 u: x" I/ y3 ?: V
111.png
222.png
333.png

: w8 d4 J- i# N- u4 {3 e
上面三幅图是3路PWM输出信号在不同时间点的截图,频率固定,相差固定,占空比在改变。当然,我们也可以通过选择合适的时间点来修改ARR值及通道2/通道3的初始相位值,以灵活调整输出波形的频率与相差。总之,STM32定时器的比较切换模式,再结合DMA的话,是个非常灵活好用的PWM输出的实现方式,值得研究学习下。

; i' a! B7 D' \6 F2 G1 {9 Q7 X0 u
当然,如果使用3个定时器建立主从关系,各拿出一个通道来实现上述输出也很方便。有兴趣的话,也可以试试。
9 f& }* _* ?3 m% I, n
1 H( w0 p4 D# L& b, m

8 H- n; ~6 h, ?5 V1 l% x  H6 V, {3 U
收藏 2 评论4 发布时间:2019-11-4 11:33

举报

4个回答
爱电子辉辉 回答时间:2019-11-4 13:06:29
点个赞。。
goyhuan 回答时间:2019-11-4 14:33:32
haohao
qiangtech 回答时间:2019-11-4 17:42:00
学习了
aiherong 回答时间:2019-11-7 03:21:08
好思路!

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版