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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?4 o9 S5 A6 c" E& R$ p
' {+ h/ Z0 g! x% l( T" s
其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。: g  y2 T1 ~5 m2 V
! \. ]5 V" }7 X3 u
微信图片_20240321181523.png

) a& M3 a6 V/ X( S4 p7 c6 }
$ t  C9 ^4 B' l* u( m6 u7 w
下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。/ `; `& p: q6 i/ j. ~5 r
# a& m6 m' `, R2 S  ^
我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。# g8 s  ^( l5 u2 t
. r. }3 P' M- b1 j: Q
微信图片_20240321181520.png

7 u. V4 P8 H: @+ z( p5 m
8 t7 C  a5 u( T" v" b
" g8 I4 d; s6 r) d  R/ H% M) l  s
先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。
7 a6 F" F+ o# p' R* s) k& f+ Y+ y. t2 @; U5 t
微信图片_20240321181517.png
8 c! n: @' T( S, N" w0 D! P
( k+ M8 n6 t( g
微信图片_20240321181513.png

3 i) V1 d1 Q2 f8 _1 |

: v% X' T# I) m" f& e下面波形就是基于上面配置的两路正交编码输出信号:5 e  u" Y6 [- m" {# h
, I2 _9 d2 B& `
微信图片_20240321181507.png

. X. [- u- k5 O
7 u0 L- e7 u3 h. n# x& m' p" O
我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。
  w2 \2 B: X+ X' A1 ~9 H# F( F  S4 g8 `& q( m# Q  q) h
微信图片_20240321181504.png
& n7 `" k( e, k- ^  [  U# J
# ~( m6 B0 c& n+ ^! ^$ _
微信图片_20240321181501.png

5 Q; S! _( j2 C7 Z( k( d% u8 K" E
0 M  ]' S: H8 s/ |: q8 O2 z' C9 w) _1 V在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。
# J# M/ _+ e: v& p/ m: P& O1 j* x% W* x7 z, Q4 F! O
完成配置后创建工程,添加如下必要的用户代码。
$ f- @, J- x& n+ g
6 W- {8 y' _6 p; l
微信图片_20240321181458.png

$ h; S' H+ W2 u5 i8 z

1 H' `+ Q# o! G( Q5 v6 K稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。
$ H( \* F. ^% S1 m8 z8 \2 P' R2 @* t/ P4 n! z& p& q
微信图片_20240321181455.png
' b1 z1 h; K9 m$ u' D( }  y
: B1 F. @. P) c7 R
不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】
2 ?( i) D5 C( P6 \" L: A: T' W6 A6 d6 C3 Q1 w( w) M
定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。
, v: r% B5 U$ s4 p6 t
3 i  F$ W' z' j* ~7 C8 Y+ b9 j) a
转载自: 茶话MCU) k  Q$ h$ }. N/ U! P( t% g. ]
如有侵权请联系删除
+ U) H9 ^3 c' u% L! T$ c! z/ e' j4 j) k7 y& e& `8 V

: A  R/ N& i. h0 F8 ?8 I& Y7 t! }) F5 f/ }5 j
收藏 评论0 发布时间:2024-3-21 18:15

举报

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