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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?- E  ^, K2 w. [3 a( z2 \& E% l

4 L( n8 o7 \# Z/ b其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。
; {; P( u  y: W2 Q
1 u' o8 ]/ \3 A; l8 p) O
微信图片_20240321181523.png

% E5 z" h, T% Y. j7 e* H: I  c

( o+ Y4 L6 W* u下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。
; z  `; `# \/ t! r% E* F! Q7 h3 Q/ h% P+ n; Q& r
我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。
2 L9 i$ |# r, T( g' ?) M# \
& y( z' ~/ q% U& ^7 ?3 Z3 @
微信图片_20240321181520.png

9 I( S6 H$ E' r# p$ U

) e$ J. f- S+ \/ {2 b- M
) }. T! w" K& K* V4 b
先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。7 ^" b, J- T  `6 `6 i+ M

% K  {- y% R  u; `
微信图片_20240321181517.png
6 [4 ]9 O3 x6 V+ z+ f9 C: C1 t

9 L3 e( Y. T$ c" R7 u5 \
微信图片_20240321181513.png

! g7 L1 J/ n% L8 L

* P( S: w7 g1 U+ Z1 T7 w2 P+ r下面波形就是基于上面配置的两路正交编码输出信号:
1 }1 ~' e* H$ |2 k$ d3 w/ Q8 z' y7 m0 ?# y
微信图片_20240321181507.png
/ C% g: m) n1 H, p" [

/ ^5 R$ v4 X1 R! `: k$ B, v" x我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。
/ J+ }3 F. f, A+ K8 O) P1 e5 p2 Z7 a/ d' x: b+ K* z* T9 e; M. _" G
微信图片_20240321181504.png
. ?/ m! U# C! e$ y$ L9 N) `! ]
9 `. H' E4 m8 b9 x5 g# R+ J
微信图片_20240321181501.png
+ ?% h8 ]0 p$ c5 O1 i- H8 ]- B

, n2 X: V0 T( I8 \# T- z' H% Q4 D在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。
# h) _) J& h: c. w5 X0 ^6 u* u+ I2 \: D
完成配置后创建工程,添加如下必要的用户代码。
* g' u) ?) _2 ]# u7 Z1 ~. m2 H, o$ x2 |/ g
微信图片_20240321181458.png
0 S7 E* h1 c# I+ R2 @7 K
% ?3 I1 ?' O" r, Z
稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。! Q9 j6 D" l! c# E- J8 R

, q* C& E! j1 k7 v* Z
微信图片_20240321181455.png

8 n2 F+ ^( x# R$ X$ F3 K
5 z. ^3 c* n. G. q
不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】
* x& H2 o" L3 Z0 g
$ D1 g3 D* J& n$ [& K: x定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。1 u8 v/ E) J% V9 q

# J& Q; U+ R/ T$ v转载自: 茶话MCU* t, l7 D- z/ X' O) l' Y& x
如有侵权请联系删除( A% r) ~+ S; h4 \! u8 R
6 }6 {( [" T' t# f$ u3 ?

- l, X1 P: S1 v- C* X7 b# `
9 G) G7 D( }0 x# D! P
收藏 评论0 发布时间:2024-3-21 18:15

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版