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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?* |' I" |; e# _5 n4 @
( J# |6 _) d! g! a. M* `$ T7 ~
其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。( L7 y6 ]8 `0 T3 {% \2 L
/ D3 b- N& H5 ?' L
微信图片_20240321181523.png

6 m1 k5 ?; Y8 F

3 Y- }4 Y' H& V7 f! J, x, o% U下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。
# a1 }, j7 U0 @" ]7 f# U5 S, I/ g* q5 p
我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。, H, M& N. S9 t, K8 I. R

( [8 ^; g) ]) c9 Y9 |. u4 w0 |! y
微信图片_20240321181520.png
- A% v0 j( ?# y0 }& k8 e9 ?& e

) T! F" ^% A# g% y8 h/ G0 v, e3 x

' U' y& @% I. {7 X3 F先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。% }# ~; h* E2 V
3 F- }' e" O3 S3 Z2 E
微信图片_20240321181517.png
! V( m* L6 Y0 H

) X- ]2 S* d. c" k
微信图片_20240321181513.png
8 o5 q! q0 N7 G+ Y

# P+ B# S, l5 q* C( u1 B5 ?下面波形就是基于上面配置的两路正交编码输出信号:
. _& Z* |0 q% \# w9 V
' R" o8 w3 r! [  @: p* i
微信图片_20240321181507.png

. m- j3 R; }/ G' f7 T
; h$ b. H4 @. r- f
我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。9 l# t. d4 j* w5 |0 H+ C8 `' U

7 f/ S  Y, q4 X+ v1 o
微信图片_20240321181504.png
3 @$ i% d) l8 B0 }/ ^. |1 q. w

/ K% `& N* `, E+ `  @
微信图片_20240321181501.png

7 ~/ F- z3 M- ]8 ~; \* R
: D# x% X" F! z6 k& i8 _在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。& S; `: Z( M2 D, {" c5 e( z

' A! V% N$ t9 J0 i- S! L& p
完成配置后创建工程,添加如下必要的用户代码。7 e# y! B# o- H* k

8 U' O9 K* J6 ]3 d1 s
微信图片_20240321181458.png

0 w/ e6 u0 c9 u3 D7 j+ I6 d
/ o) W- B6 v4 G( ]0 C
稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。* _+ M0 L+ _- q* E3 i

& y' d# x5 C1 C: J2 u. c
微信图片_20240321181455.png
' B- l7 c$ v. r+ X

) }9 I; [6 o4 |. ~不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】  T$ p& q/ V8 G, q& _7 p1 e2 B
  @% O9 ?8 o3 q+ b( ~  B7 B
定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。
+ q# Z" N7 C( _5 n! X9 }1 f$ p+ h
; }$ m4 Y: X5 B5 ^$ O  }# s. l: m
转载自: 茶话MCU: E5 _% b9 N+ X2 k
如有侵权请联系删除
5 L( \5 D2 i7 M* {; U
, B+ V; w& L9 o' }! O

0 v/ S* ]3 a* H# u* r8 O5 u6 F4 |
; @; v1 h6 ?0 z$ c. o) d, C5 I7 ?5 E7 _
收藏 评论0 发布时间:2024-3-21 18:15

举报

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