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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?
) c4 m1 G( A( r0 V7 o
* j5 K, `' E* l0 h2 P其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。
! d% o/ A/ c8 n5 z7 }) D3 s# D' F2 U+ t$ M/ z
微信图片_20240321181523.png

" q6 b4 I6 P# \: {+ r

; Z" _2 \# c! @: _# r( o. v' i下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。
- p  |9 E" z+ W, }; U2 \
/ ~9 o; T+ q& C) u- `  V我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。
+ Z3 a& d9 y6 N
2 h& U+ M! n; ~# \7 o
微信图片_20240321181520.png

) K* a  {1 ~' F4 y6 `5 E
* C, E' E0 ~  R/ Z0 ?* u

6 G0 e- p3 j5 ~0 V& n4 N2 l' z' ^. \2 g; L先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。+ v! G1 P. m% L# D: B7 r  r$ x

. E$ ~. T, g* B# @* A1 Q9 Z; E
微信图片_20240321181517.png

8 d& g& b! w: a" r* U9 {2 J; ~2 m4 P  O/ d
微信图片_20240321181513.png

, o& N) J) k2 R3 _

! f( O  |  E; E下面波形就是基于上面配置的两路正交编码输出信号:2 n6 H/ ]7 X( K5 @7 U
/ T( Y! z0 K- G, u" j& N) t
微信图片_20240321181507.png
$ H; P- c0 y- W0 d
! N" `# Z7 ~' w3 k3 u/ K
我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。
* m/ ^4 h+ G' l) Y
& K: i: s- z1 ]/ T1 |- Q+ A5 X
微信图片_20240321181504.png
* c1 R& \3 `" J; Q9 p' }+ r

* _+ c* J; z  a
微信图片_20240321181501.png

2 G! I" }9 `6 b$ T8 i2 W+ Z
) s9 [5 q* x( ~- i" @/ s; g8 q在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。
# w) k9 s; D9 g  T  ^5 A( O
5 C- l8 _! g& Q7 E- t% M5 L! |
完成配置后创建工程,添加如下必要的用户代码。
2 l  ?( F# q9 q/ S$ b% D" W
6 }; I8 ~) @. {4 A; U# C' i
微信图片_20240321181458.png
9 g) s0 U: O: t8 ~5 M" V' n
- u# O8 _! J( C' t9 [5 v' G
稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。/ c4 N0 ^% J# ]$ f
$ G2 s$ \; H' m4 H3 I7 {
微信图片_20240321181455.png
3 g5 {5 I1 v( j1 }5 A! r1 {
  A4 y& ?8 B! a& u# R; Z  _4 f: {; d
不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】3 z( R$ y5 r1 L( @. I
  @) `3 _2 ?2 |  U
定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。9 a# _  a4 r/ _9 g; G8 ]

# L6 v6 u; p: b. o转载自: 茶话MCU. \# u' w# \1 t
如有侵权请联系删除$ z1 @3 c; F! p3 I

  U/ \, W2 P/ s

1 A8 z; H! y% v. ^! u
$ }. k3 D# d, Q6 i
收藏 评论0 发布时间:2024-3-21 18:15

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版