0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如果STM32定时器外接了正交编码器,该剩余通道是否能做PWM输出呢?

茶话MCU 来源:茶话MCU 2024-03-21 09:06 次阅读

有人问如果STM32定时器外接了正交编码器,该定时器的剩余通道是否可以做PWM输出呢?

其实,对于STM32芯片,编码输入信号就是定时器的计数时钟源之一。定时器外接了编码输入,若还有剩余通道的话,剩余通道依然可以实现输入捕获或输出比较功能。

此时,该定时器的计数时钟就是由编码器信号提供的。编码器信号从定时器的通道1和通道2同时输入,计数器基于编码信号的边沿事件进行计数,可以有多种计数方式供选择。

具体编码器计数方式参见下表。后面实验采用第三种方式。

a0a30404-e71d-11ee-a297-92fbcf53809c.png

下面使用STM32C0系列的Nucleo板,从定时器1的通道1、通道2接入正交编码信号,以TI1、TI2的有效跳变沿作为时钟源来实现PWM输出。

我先使用STM32C031芯片内部的TIM3产生两路正交编码信号的输出,然后将这两路输出接到TIM1的CH1、CH2,并令TIM1工作在编码模式,让其CH3输出PWM脉冲。

a0b7f2b0-e71d-11ee-a297-92fbcf53809c.png

先看看TIM3的CubeMx配置。为了产生一对相差90°的正交编码信号,我用到了TIM3的三个通道,其中CH2没有做实际输出【当然,若用两个通道也行】。见下面配置。

a0d2cb8a-e71d-11ee-a297-92fbcf53809c.png

a0e3712e-e71d-11ee-a297-92fbcf53809c.png

下面波形就是基于上面配置的两路正交编码输出信号:

a0fb2db4-e71d-11ee-a297-92fbcf53809c.png

我们再来看看TIM1的CubeMx配置。工作在编码器模式,CH1、CH2作为编码信号输入,选择针对两路输入的跳变沿进行计数的方式。CH3、CH4做PWM输出。

a107b296-e71d-11ee-a297-92fbcf53809c.png

a11e5c4e-e71d-11ee-a297-92fbcf53809c.png

在上图中可以看到,TIM1的PSC=0,ARR为19,计数器处于单向计数模式,即每计20个跳变沿就产生溢出。因为对TI1、TI2两路的跳变沿进行计数,在输入信号的1个周期内会做4次计数。

这样算下来,TIM1的一个输出周期对应于正交编码输入信号的5个周期。

完成配置后创建工程,添加如下必要的用户代码。

a132b32e-e71d-11ee-a297-92fbcf53809c.png

稍作调试可以看到如下结果,蓝色的为TIM1-CH3的PWM输出,另外两路为正交编码信号。实验结果跟前面推理的一致。

a14b044c-e71d-11ee-a297-92fbcf53809c.png

不难理解,在前面TIM1时基参数不变的前提下,TIM1-CH3的输出频率由外来编码脉冲的频率决定,编码脉冲频率越高,TIM3-CH1的PWM输出频率也越高,反之亦然。【眼尖的人可能发现了此时计数器实际上是处于向下计数模式】

定时器基于编码脉冲作为计数时钟源时,使用CubeMx配置计数器的计数方向时,不要选择中心对齐计数模式,编码器时钟模式不支持该计数模式。

至于选择向上计数模式还是向下计数模式无关紧要。因为编码器模式下,计数器是向上计数还是向下计数是硬件决定的,即根据TI1FP1和TI2FP2的相对电平以及所选择的计数方式决定。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计数器
    +关注

    关注

    32

    文章

    2121

    浏览量

    92976
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112036
  • 正交编码器
    +关注

    关注

    0

    文章

    16

    浏览量

    10514
  • PWM输出
    +关注

    关注

    1

    文章

    61

    浏览量

    5053

原文标题:基于编码器信号的PWM输出示例

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32定时器用做正交编码器之后还能输出PWM吗?

    最近在做一个控制小车的设计,用STM32定时器用做正交编码器来进行车速的检测,由于所选MCU型号问题,定时器较少,请教一下,在
    发表于 04-21 15:08

    【案例分享】STM32正交编码器驱动电机

    的。4。STM32f1系列定时器16位的问题我用STM32定时器3工作于编码器方式,可以正常得到编码器
    发表于 07-20 04:00

    STM32定时器问题

    STM32同一定时器的不同通道可以配置为不同的模式吗?例如定时器1的1、2通道设置为正交
    发表于 09-18 10:22

    stm32定时器编码器模式

    0、编码器模式stm32定时器带的也有编码器模式。所用的编码器是有ABZ三相,其中ab相是用来计数,z相
    发表于 08-09 06:55

    STM32F401的所有定时器都可以作为编码器使用

    任何问题)下面步入正题:TIMER都可以作为编码器采集通道,但是需要十分注意的是:定时器只有通道1和通道2可以作为
    发表于 09-13 08:49

    定时器中断来实现stm32定时

    用来定时、输入捕获、pwm输出正交编码器等,功能强大。stm32通用
    发表于 01-06 06:46

    正交编码器原理什么是正交

    ,TI1超前TI2 90度时,向上计数;TI2超前TI1 90度时,向下计数。编码器的应用很多,最常用的就是电机测速,以及各种仪器上的旋钮等。2.STM32CubeMX配置以STM32F103C8T6为例,
    发表于 01-10 08:04

    怎样去使用STM32定时器编码器模式

    STM32F103-定时器编码器模式和高级定时器输出互补的PWM信号刚使用
    发表于 01-14 08:02

    为什么STM32单片机的定时器PWM输入捕获模式无法读取编码器

    为什么STM32单片机的定时器PWM输入捕获模式无法读取编码器?怎样去解决STM32单片机的
    发表于 01-21 06:30

    定时器基础知识与PWM输出原理是什么

    单片机开发中,电机的控制与定时器有着密不可分的关系,无论是直流电机,步进电机还是舵机,都会用到定时器,比如最常用的有刷直流电机,会使用定时器产生PWM波来调节转速,通过
    发表于 01-25 08:16

    电机控制知识——定时器编码器模式的使用

    ,计数向上计数,反转时,通道A的信号滞后,向下计数。设置信号的极性反相,可以使向下计数代表电机正转。 2 定时器编码器模式配置以STM32
    发表于 03-05 07:00

    可以使用单个定时器通道1和2进行编码器计数并在通道3和4上生成PWM吗?

    PWM 输出。为此,我相信我需要至少使用一个定时器通道 1 和 2 上运行编码器模式,在通道
    发表于 01-12 06:56

    STM32-通用定时器-PWM输出

    1 通用定时器PWM概述1.1STM32定时器输出通道引脚这里以TIM3为例来讲解。
    发表于 11-26 15:36 22次下载
    <b class='flag-5'>STM32</b>-通用<b class='flag-5'>定时器</b>-<b class='flag-5'>PWM</b><b class='flag-5'>输出</b>

    STM32F103-定时器编码器模式和高级定时器输出互补的PWM信号

    STM32F103-定时器编码器模式和高级定时器输出互补的PWM信号刚使用
    发表于 01-14 12:53 11次下载
    <b class='flag-5'>STM32</b>F103-<b class='flag-5'>定时器</b><b class='flag-5'>编码器</b>模式和高级<b class='flag-5'>定时器</b><b class='flag-5'>输出</b>互补的<b class='flag-5'>PWM</b>信号

    详解stm32定时器编码器模式

    增量式编码器在实际应用中还是很常见。stm32定时器带的也有编码器模式。所用的编码器是有ABZ三相,其中ab相是用来计数,z相
    的头像 发表于 01-19 09:14 7258次阅读
    详解<b class='flag-5'>stm32</b><b class='flag-5'>定时器</b>的<b class='flag-5'>编码器</b>模式