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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?
6 S- L7 [* X3 u$ B+ J+ E% B0 G( Z! y; U4 ?
其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。
& ?9 d6 K/ Z& u
! }& z' e  T$ ?' U! F/ k0 S7 J
微信图片_20240321181523.png
4 \  r9 X6 f- R  H
7 ?3 q) E8 P! Q
下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。6 `/ Q8 @1 \4 u" {( c

, u0 Q% A* i  c3 m) ?* I我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。, y1 {: a7 p+ D1 F# M! e
( Z+ t* E: D, f
微信图片_20240321181520.png

' |8 j" C6 q! Z+ Q
" D& g/ B1 z! a& ?# l2 a6 p5 k# e

8 w: y/ ~4 z' a- q8 J( _) y先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。! b- d, w  S7 m, Q0 S) e
) E3 O/ j; l% |( [: A% n8 F( E
微信图片_20240321181517.png

6 ~/ Q4 K  `" ~* x
1 f2 N% i! H1 B2 y, f6 a
微信图片_20240321181513.png

4 w- `! S; K$ R& F. c" P
% D9 I- X2 h" G5 v  i
下面波形就是基于上面配置的两路正交编码输出信号:( c7 M/ D/ y; s& }

- _7 Q% \# y3 J% D+ k
微信图片_20240321181507.png
" m$ u& }! ^' i, w  K$ X! v5 v

: _5 g5 Z/ E2 J* O* n1 y3 Z9 C1 X我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。
. [, P3 f4 W- s4 q. ?, g3 c# ~5 r1 n; p' Y1 D
微信图片_20240321181504.png
9 `7 x9 x5 k- }3 O

1 p7 i: }/ x+ z- a* v; e
微信图片_20240321181501.png

9 j+ o4 X9 K& j: e6 v! K5 f3 O! a7 {( h  b, L9 H) i# s
在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。
2 P+ e( E3 [% D
3 ~( q+ Q) d0 D8 |6 G
完成配置后创建工程,添加如下必要的用户代码。
7 g7 e: ^" n" f* t% ~2 R3 k
3 |9 r: M0 w+ W; a6 N
微信图片_20240321181458.png
8 V. y% x9 G" h! c. H, w1 s

9 R# B& y. f3 ?! U+ q, i6 ~稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。! C: L. e. R4 j, K
) |' k( }% t- R, @1 v
微信图片_20240321181455.png
5 }8 ^  m: \9 K, ^
2 Q  U6 |: l; g* O6 f1 n
不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】
" q- _" }, p) R, G4 U! V0 ~
9 @8 k# [7 W) D$ _2 }0 `' c9 d定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。1 |8 K% X/ p7 F# m+ p

& v9 ~3 X4 u+ s' J' S转载自: 茶话MCU
) N4 y. S$ C7 |/ G+ H, M4 x如有侵权请联系删除  G3 X* L! a7 U8 g! k1 p

2 m; g4 p, d# X0 W0 O! u9 E

0 X7 [' {% X+ y  {+ \: x4 z3 l
$ N: }0 `* s/ a+ C0 w
收藏 评论0 发布时间:2024-3-21 18:15

举报

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