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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?3 |, [! d- N% |! ^+ `
. b9 T& R4 H* j. H$ g& C
其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。
& k" q7 i" N! e+ H0 T2 V$ N5 e; p. s% W! Y& N, u5 t9 c& `& @% f' n2 @4 s
微信图片_20240321181523.png

  z1 `' E  {+ h$ Y% v! d

# e6 Q$ n2 H" H' o; ?# C  d% I. t下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。  |: P2 c" E6 c
" j$ X9 d; X3 [
我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。
( J; {! X& T$ i: F, T" F5 s8 o; ?9 M* m/ v: r
微信图片_20240321181520.png

) l! i" \$ L8 t" y# g$ e1 s- V& d# b
' g( Z+ W9 n% Z9 x0 E
# X' j0 m/ n% c. l7 Z
先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。
4 b! r  V* O% y% w9 `% F& Y2 {: K$ n# l+ o1 J
微信图片_20240321181517.png
# U4 m0 ^: F4 B) s4 }0 I
" Z: s# \- ]/ d7 N6 @; b2 ~
微信图片_20240321181513.png
! q. j, H4 x3 r

8 t' |2 [3 Y9 M  j5 c下面波形就是基于上面配置的两路正交编码输出信号:% e/ d& [# z& f7 s
. g4 S. f2 L% F/ |# N
微信图片_20240321181507.png
: F" Z$ c6 h5 S
  {- a% }* j. X$ F8 u$ I
我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。
- v3 L3 `" G7 w0 E3 f( Z) y. l/ t0 F# k6 n
微信图片_20240321181504.png
/ T" J4 A# [5 Y5 o; Q& k

7 T4 o1 S3 k+ m! S4 }! R
微信图片_20240321181501.png

+ T; f" i0 s) e0 A* [0 ^0 g! _6 a6 r' V$ |8 a2 h1 d) Z/ ~
在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。
0 y1 p' s- d3 B2 @' v! r! C! i) [8 h8 R7 _* D# w# ~. i5 O
完成配置后创建工程,添加如下必要的用户代码。5 I! S$ |9 Y+ i0 A  `0 ^
" T" u! I% A" h: D8 A* V
微信图片_20240321181458.png
3 T" [7 t/ u9 d& N$ |

0 x) V- ^" F  Q1 T$ s& c4 ~" a稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。
0 R1 O$ I' f, A. h% @3 M# Z% ~& X% r7 V( K
微信图片_20240321181455.png
. Z" w# n6 A% x' O) [3 Q

0 E# U% P) N/ h7 [7 K不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】& A% f  K$ a- s' _/ G& L- A

2 \- J5 ?- F' I+ A. m定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。
% t; T# X3 p! c6 k( b

$ H5 k, }9 c4 O6 x* O6 F转载自: 茶话MCU
0 f' ^* I) D$ l  F: \1 p. q如有侵权请联系删除
' r; t9 _  T$ H9 @: O8 L3 Y, Q7 _7 V- J
7 }8 b* l: ?/ n# r1 s! L7 n
. ~" E1 X- P5 K- t; f
收藏 评论0 发布时间:2024-3-21 18:15

举报

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