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

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

[复制链接]
攻城狮Melo 发布时间:2024-3-21 18:15
有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?5 F' w9 G3 J& t

( I* r) U0 W! p: m/ k, G4 l其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。具体编码器计数方式参见下表。后面实验采用第三种方式。. P2 e: o+ M/ _3 {- A" Z: Q

# j" d  F: P7 M- k! v
微信图片_20240321181523.png

6 T% P6 y7 f& H! w8 q

* ^' n  M* \. N  I下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。! I; D) G  X2 _

" N7 J- K7 G' b我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。
4 N6 i# V$ W  @. h; K9 o; B
' a' H) h) x8 Q1 g9 c
微信图片_20240321181520.png
$ |- n7 I1 L1 g3 C/ ]# f' b
, q* c  J/ `* i! b& p5 Z
* Y! a- a  P+ L$ l4 G2 B% k$ w7 D
先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。
1 u: }3 h5 R) o2 ?# ^: N$ n  A; N' y7 w$ S: v# |% b
微信图片_20240321181517.png

3 N9 k( x  P4 f: O% A7 K- Z6 c& b! k- _3 `3 W
微信图片_20240321181513.png

3 ~$ @7 P& z3 c$ y7 X# h7 [3 ^

+ ?7 U0 w. ?4 s( j' J! X+ x) E+ H下面波形就是基于上面配置的两路正交编码输出信号:6 R$ \; P# l; x. s8 g$ x: j

" n5 e% z2 N! a5 O
微信图片_20240321181507.png

" R& x- s% Q) N+ f

0 H) Q4 r0 v5 h7 n( {% k  {1 ~我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。
8 `/ O& b  q  B4 L
/ D" K& ]& S  q( \5 S. Q
微信图片_20240321181504.png
! o8 r8 `  A* _7 b; q

$ U3 a+ H; z6 w3 W* s
微信图片_20240321181501.png

6 x& |1 @! K/ D* [, ?, Y$ ?6 c  Y" O8 m- A7 X7 H; {  x
在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。0 H5 _; G  c& @9 J0 W$ D

* @4 d( [. }% ~8 C
完成配置后创建工程,添加如下必要的用户代码。2 [: k! F7 Z7 T9 y" }' Y9 x! d

3 Q9 a- F+ g) V
微信图片_20240321181458.png

; v( h: C- P3 W: M  M9 d6 d
' C* b6 r6 j. N3 g7 p
稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。$ Z& H4 I: ?- Q0 e6 Q" e1 O
  W+ K" @& ^. x
微信图片_20240321181455.png
6 h3 S! u" R: l! J  ?# k, w

/ l9 r/ a/ v" Z. P( z2 {不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】
, q& {2 L6 l9 r5 M/ `6 w( ~  k
6 S1 i2 ]3 M" H  P+ d. k0 l! w" L* ^定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。( y4 e. ~, R) T& K* |( C( i

; d& B5 K2 L  s) P0 o转载自: 茶话MCU
( b- X0 C: d9 }6 s: x; r- }6 g9 W; |如有侵权请联系删除
! A2 x- w2 A# @8 p; {
6 L' T, V! s* e& U) A) k/ g2 j1 W3 h/ R: i
- Z+ C( V9 _- I& c) l0 k

+ a( F6 w3 C" M; U( B0 @
收藏 评论0 发布时间:2024-3-21 18:15

举报

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