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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?) A1 m; x4 D4 k" `
* _4 L. N9 F) I5 w% e
其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。
# ^) Q$ H+ E: _& E, K9 E
) [/ s( ?) f& {1 O/ ~9 p
微信图片_20240321181523.png

7 f% u# l% I4 L8 D! Y/ Y$ p
. U: E2 i" A2 Q7 Q8 G( O
下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。/ T: _5 F7 r: r" u

" m9 Y3 g6 a& H& o/ z4 E8 f  Y) r我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。
+ N8 F% r! r1 l6 o" }$ @# L: b) m' V6 ~- p/ w  F. Z
微信图片_20240321181520.png

( V# R: N- ~) X. ]5 E
! {, ~/ o5 c8 ^$ t& j5 x
( O* U# t& D$ x/ _% h9 m7 v
先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。3 o9 s, |$ Y! Q- }( U0 T, @
# h1 G8 P# f+ Z; v- s+ L7 f0 ]
微信图片_20240321181517.png
$ ?0 E4 l, C" Q% d& @' y: ]$ \

* ~- z! \) e  |5 V* x3 T* Z) v
微信图片_20240321181513.png
" T7 _/ v. n3 F" n- N; c
# C/ C2 _, P5 l- O6 o6 l2 j, A
下面波形就是基于上面配置的两路正交编码输出信号:2 N5 L" m: |8 I8 T

* N; c/ _) V8 g; F, J
微信图片_20240321181507.png
. w: r% E. `; F  g* v& I

6 r% T2 L1 c+ G+ s我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。
9 ]1 b) M7 D! c& M6 \
( s& \( K: b  I" l0 X
微信图片_20240321181504.png
. _5 c, m7 [" @

! p; h9 C0 I$ ^# a- i- m7 l; n! O
微信图片_20240321181501.png

/ m, N5 i' @) X1 z/ y, b2 l
# r# h' ?& X3 `9 B) H在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。. @0 l7 g* l* x4 U& a
5 h1 F0 }( p3 g9 T+ L
完成配置后创建工程,添加如下必要的用户代码。5 a& x: _) J' y. s

" r- O0 {7 ]3 ^( G! p% D
微信图片_20240321181458.png

- I7 }4 ^: o. _+ b/ z+ @. \, v# }
. w1 e9 D8 f* c' M: D$ @" p
稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。
% w" }$ h: M0 y4 ^5 P" @, ?4 X- H) H- n& z
微信图片_20240321181455.png

, f+ I$ _$ p% X$ t+ D1 A  I
9 p  |' ~% [. f. Q
不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】3 t& h8 M" j2 j5 ]3 F( Z
  r8 N. k4 s; d
定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。% i4 B5 B, {; r. B* c  n3 B4 E
' H4 k" G# T9 D, _+ q0 d( {. ]
转载自: 茶话MCU
1 G9 w' w& f) N' N如有侵权请联系删除/ x5 S) ?0 m7 }" }4 g: ~' S+ [
) U# `, b0 v$ n
' H" c/ B9 e. Y! j) M' J
# a, f+ g! k* ~* H
赞 收藏 评论0 发布时间:2024-3-21 18:15

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版