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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?" }0 H: w, m) c' z
% i0 W' j% J4 n5 r* U! \
其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。/ J+ E! `- ^& N. N! A0 \6 R( T
8 z1 i( _+ P  [4 W) k
微信图片_20240321181523.png
$ I/ n2 b' ?$ C
$ {( r/ o( j8 F0 z
下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。
. W, W( F8 u: l$ t  r( ]7 ]4 C) L7 c7 R1 {7 M) a
我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。% s+ S1 Z) g0 q+ O
# m& f" Y! J; P6 c, X5 s2 S9 @. x
微信图片_20240321181520.png
7 X9 _8 a3 y# {) s: S" H$ e

( b: ]# I# @! a% ]! E

2 U6 _" T9 a! B. {3 U0 G先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。, Z/ s2 S; t! c$ W

% |. O/ l" a% e( @, X
微信图片_20240321181517.png

* g0 v; ]' Z3 \! Q/ t# M& M3 ^8 E* w0 g+ R6 G/ w
微信图片_20240321181513.png

% \: o9 I& Y  W2 T) v0 G
; i6 v# h1 l! `0 O; u3 P6 Q) E' ?
下面波形就是基于上面配置的两路正交编码输出信号:
% D/ u2 J7 K9 t+ P: c& C& Z
; I* a! ^/ i/ |  x% k4 X) n! k! w
微信图片_20240321181507.png
3 {$ X% ~' @$ r" V3 s

  k0 k  p! f1 M; M- u$ ?  f+ G7 e我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。
  ]8 m) f: s1 W$ {
8 D. F1 h* q! Y) d5 {/ H6 F* Q1 M
微信图片_20240321181504.png
- z% V7 h8 k/ F/ o5 t

. g, b/ g8 _1 p4 v
微信图片_20240321181501.png

5 T) t6 M. Y! b& ?4 m6 z. o: Y( a- K, g8 r5 n+ Z+ a7 G4 A
在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。
; {/ ]0 `% Q( l, }6 F+ @$ E3 e. _9 G+ ]1 I* r0 y  U5 ^
完成配置后创建工程,添加如下必要的用户代码。3 V4 ^: g) S' n/ |( X
$ d2 n- ?: p5 [1 S% u
微信图片_20240321181458.png
( p, @- }' `( T
- M8 i4 f' r, X
稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。
+ Z: x  `& [" X1 X' L. F1 E
( K/ Y; |5 K, z" K6 }, i
微信图片_20240321181455.png
: r" j. Q# O4 k7 _+ h1 o# U
, ]! }- M  J" Z$ d* h/ r  x4 I
不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】
; G" t6 Z$ p$ X# R# S) q" M& W; Y  n9 |& G  T( h4 M
定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。+ R) c' @/ n% \: k
( m6 r1 O( H7 S& p& v# ~
转载自: 茶话MCU: p' i! Y$ p5 N' z
如有侵权请联系删除
0 u3 q3 E0 o8 V8 l; K/ I
5 }% d% L! E, [4 R1 s4 U

& q1 K/ J# Q( [3 ~% C7 B8 ?% q& r
# `/ P: [( ]* |9 W3 |, u
收藏 评论0 发布时间:2024-3-21 18:15

举报

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