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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?
" U1 x9 C6 K2 {1 t" u
2 e3 n8 F5 S) L" F. |* d其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。
1 t' \$ m% `! S9 b" ^& n" L4 F% X8 ?
微信图片_20240321181523.png

3 g" \) v" c) H5 x, b+ v

; p, N7 K5 _; Q- K下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。% s( K2 a, d  o& o

; Z) p1 _' U' K0 y我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。
+ S7 \/ [# t* b8 H% \8 Y+ D, m0 a6 }2 \/ k8 X
微信图片_20240321181520.png

# Q/ z0 [8 a+ g; ?. r; u

6 q& g6 {1 j, K: h$ f! v. L

% w# E1 _1 L& A7 M( z先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。
0 X9 Y6 N& w' i3 f9 |7 R* D  O! i) e0 t$ `* w- d
微信图片_20240321181517.png
5 R$ M- _# ^6 L2 V% ~& |
8 e; I/ o- O7 R! r7 E8 _8 O* l
微信图片_20240321181513.png
& v2 x- V" d) a2 q3 b: `

. x$ q0 z* T9 `0 w* Q下面波形就是基于上面配置的两路正交编码输出信号:6 k, d& p8 x2 V2 d- k. R
  [3 r/ C  ~; O: ^+ M2 t
微信图片_20240321181507.png

) v& y" i% r3 }) p
& K1 h! J' _' q/ }
我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。
( W' f" Q) o# u0 s; ^% [8 {2 R% r, `4 ?! g9 [+ L3 r6 e. r8 O/ }' N
微信图片_20240321181504.png
. s% k8 C6 F0 p% w* w

4 C5 _8 a8 q3 u8 l+ _3 s4 c/ K
微信图片_20240321181501.png
- k' Z$ J: o8 c$ M8 g  p7 X3 a0 w
: o: k9 t& D' K0 _$ b: B4 J1 l
在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。
4 ~7 L$ s9 E$ ?5 `2 S0 X
( R+ b+ H- O$ H: O+ x/ f; W4 J
完成配置后创建工程,添加如下必要的用户代码。- Q5 A  d& N1 {5 h/ ^

! o" e6 _+ ~# Y/ b$ d
微信图片_20240321181458.png

# W, [# B# U2 }: f+ g0 Q
1 J% m# J0 R8 l5 z& I
稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。
0 B' Q6 {% S0 e  _
- b9 p6 J3 f4 o9 Z/ g5 N
微信图片_20240321181455.png
' r( x% D7 l: Y: e
3 K9 }3 M  h0 f
不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】
; W) S( T1 X1 \% @, e
; v2 N4 }8 k4 \1 j9 c0 g5 h定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。
. k- s; R4 _6 r" B3 X7 n

5 k: E, n, z) |; r" M% b转载自: 茶话MCU$ d( `5 {$ t( t* Y  I6 s  a
如有侵权请联系删除
( M: ^+ c5 S4 k
! Z, z# g; b5 N: t/ Y* i7 Q. q: ^6 f
- V( t% i! [# d# @* S

: d9 y+ x. j/ X7 V+ ]* L
收藏 评论0 发布时间:2024-3-21 18:15

举报

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