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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?9 {& v# n) h* r* N

9 A+ `( u# p) Z* {) o: M其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。. }4 @/ r- f, {

# C. ^, w' w$ x8 l
微信图片_20240321181523.png

1 k- |! @- s, J/ X7 `1 A. D

8 Y2 N! o9 X% V; K( V下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。3 Q* |: P  X; y  B2 G

; K( s0 M2 t. J" u; R4 c' p我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。7 |; q/ e9 w+ q; u* @  Y, G0 ~" b2 p
6 a" \6 w# c$ n0 P1 ~" q$ o" ^, @) i
微信图片_20240321181520.png
* p, |5 {7 M9 K; C
& l; T3 M5 _1 r* q) e0 H

  m+ B5 b1 @9 ?/ D* [9 `先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。
- O3 }3 @2 P5 V" \% h+ E8 E+ [' Y: h) T/ Z( O
微信图片_20240321181517.png

3 e7 o: X, R4 p. H. `: j+ m
$ [  K3 y9 v+ m. v
微信图片_20240321181513.png

" h' }3 Y6 b6 ?- |# A
, b$ X) p% z0 ^  X' q3 v4 W: {( l
下面波形就是基于上面配置的两路正交编码输出信号:4 V& \7 `9 V7 O; @  s) `

$ ]6 c5 U" Z( s: Q0 [- N5 V8 U
微信图片_20240321181507.png
! x0 \2 U# G$ r; e: c
9 R+ A+ s- C% z9 H! Z
我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。( m" Y! ?1 w# N4 a. @
1 u' I# G# N, Y1 g$ N& a6 C
微信图片_20240321181504.png

* m+ B0 ]" C9 j' H4 R% R+ Z
' T# d+ P/ H. [) @$ n& d
微信图片_20240321181501.png
+ a4 x: N  E% [& Q6 A9 J
. z  i3 q$ [3 _
在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。
- y+ Y; Q' i) K4 M, [* R& G/ b/ ^+ p) _' j
完成配置后创建工程,添加如下必要的用户代码。$ C+ j6 J  E# u5 I: e7 S" p
$ I% v! H6 F* q4 P( _$ i0 q
微信图片_20240321181458.png
% q& J; R' g2 r( X* F+ o5 }

6 w1 _2 Y' ~* K- M' C稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。
5 R" e" x) M% ?9 A! y  E4 `, `6 s
2 U2 b; L- Q9 N+ E5 \
微信图片_20240321181455.png
- v4 e3 _& U( I3 R) }
! ?" h* }2 e+ Z8 D
不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】
5 S5 D# M' f+ s7 f7 d: j  i  n5 F; C9 E
, h2 V3 E5 E* `* W8 Q" @/ M定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。1 g" N* d* K3 t

2 N4 D/ d' c. ]/ N  r$ T转载自: 茶话MCU
7 {' ^  \* F( J/ v$ h7 f. B如有侵权请联系删除& D9 L: k# A3 x8 d1 w3 s1 n3 b

! i( n& ~4 X8 k2 V
+ t( j4 k& k9 ]7 Y+ E

, ]9 m( c% K* F( I% t
收藏 评论0 发布时间:2024-3-21 18:15

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版