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

定时器剩余通道是否可以做PWM输出呢?

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?9 L6 G8 ^: p' S& k& F$ v
+ U0 V& x* P2 G; d3 X7 _( Z
其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。
9 u0 C3 ]1 b5 A& E& Q- P0 }8 X  T: q% h
微信图片_20240321181523.png

$ O9 G, |5 x0 X9 D3 ~* n
, p& v" K! y$ p
下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。
6 |6 s( G1 V3 x7 v: a
/ D+ i4 J2 m3 v4 n, \2 r) S我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。# u5 ^9 e2 \7 s7 _; G. U9 W
+ I% ~% K0 Q3 R
微信图片_20240321181520.png
5 R* x, k0 W. Q. j+ Y; d" O3 `

- `5 E0 u  W- E; N2 M- H. D3 a

! m9 `9 Z( b7 q' T5 b* t" G& X先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。; H( e! E7 V+ |) n% V4 ~( N  Z$ \

; P* m  t( [/ B# \/ {; \
微信图片_20240321181517.png

* ]6 r/ i% C( N
1 i* d; g+ r5 H& A* D$ a! H0 R
微信图片_20240321181513.png

5 O) r6 e- a# k# W8 I: `+ d
4 d# `' ^' d; p0 B7 z
下面波形就是基于上面配置的两路正交编码输出信号:+ Q8 D. }$ V: s1 u, W

: x2 C' o% `  m' [
微信图片_20240321181507.png
  x+ S8 F$ q1 u, u9 M

1 {9 `8 x+ u4 n我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。. e2 S8 E$ U. J; k* s  F) D
- t9 I( g4 k+ Q& [& J+ J
微信图片_20240321181504.png

9 B9 U4 y7 n: B
2 G- m; A- |( e, `* G
微信图片_20240321181501.png
, B5 C  ~4 M8 U; X+ T4 p0 |% B0 K
& \0 \/ c9 W$ V/ e' D3 [, U" n
在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。+ R5 z; a" x: D- A. z5 Z1 P% |) T

1 J) Y. ~, j* n% f4 [6 W& |
完成配置后创建工程,添加如下必要的用户代码。
, {/ h4 W* [' m1 Q4 h7 V: B9 p" u: W  a# p/ b6 S+ m
微信图片_20240321181458.png
: v% X# z9 n; ~5 Y+ _
7 S9 f  M& v% ~+ p4 m) u
稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。" H* L6 p' m8 T
) K# e  o& `/ M, t
微信图片_20240321181455.png

) J! m+ H& Z5 O* Q& V2 c9 {8 w
) ^/ ?6 S9 [% ]) X
不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】6 I4 o2 P; H+ t/ L' n9 u
/ X7 z  C/ x! B% G7 }
定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。4 B# W3 h; e" I3 @* J" h8 Z" p
1 t; J8 p' v6 A: m7 H: ]
转载自: 茶话MCU
2 F& v& L% f" v' B如有侵权请联系删除
; E' n1 G9 c$ o! B, R+ M/ I1 y  K8 \4 z5 `+ K3 i
5 B* O0 P/ p3 s7 F2 e

- @$ q& i. S# A. r4 i
收藏 评论0 发布时间:2024-3-21 18:15

举报

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