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

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

3天内不再提示

如何不用实物来验证TIMER编码器接口功能

麦辣鸡腿堡 来源:茶话MCU 作者:茶话MCU 2023-06-21 16:16 次阅读

通常在STM32芯片的通用TIMER或高级TIMER都带编码器功能,支持基于1路或2路输入的编码脉冲计数。我们一般外接正交编码器,使用2路输入。TIMER硬件基于2路输入的相差特征来确定计数方向并依据方向对计数器做递增或递减操作。

图片

正交编码器一般使用5根线连接,分别为A、B、

Z信号线及VCC和GND电源线。其中,A、B两路是存在相差的同频信号。Z信号即零点信号,当编码器旋转到某位置时,它会发出一个脉冲表示约定的零位。VCC、GND分别是电源线和地线。至于编码器线数,是指旋转一圈A(B)端会输出的脉冲个数

,二者转一圈所发出的脉冲数相同,但存在90°相差。编码器的线数越高代表其能够反应的位置精度越高。

图片

关于STM32片内TIMER编码器接口工作原理,这里就不介绍了。更多细节请参考STM32的相应系列的参考手册。这里想重点分享的是,如果手头没有正交编码器实物,如何来验证或体验TIMER的编码器接口功能呢?

其实,TIMER编码器处理单元就是对外来的两路同频但输出具有前后时序差的脉冲信号进行方向辨认后做TIMER计数器的递增或递减计数。既然手头没有编码器实物,我们何不利用STM32片内的TIEMR产生2路带相差的同频信号,再接到另一个支持编码器接口的TIMER不就OK了吗?

当然,使用STM32的TIMER产生2路带相差的同频信号,有多种方法。比方通过2个定时器主从级联、单个定时器使用OC

toggle模式加以DMA辅助、利用非对称PWM输出模式来实现。

其中,前2种方法在STM32芯片里通用性好,每个STM32系列都支持。而非对称PWM输出模式虽然可以非常方便地实现带相差的同频输出信号,但不是所有STM32系列支持。当然,不支持的主要是ST推出得比较早的STM32系列,比方STM32F1\\STM32F2\\STM32F4这些老旧的系列,后来推出的STM32系列,比方STM32L4,STM32G4,STM32C0、STM32U5、STM32F7、STM32H7、STM32H5等都支持非对称PWM输出模式。

我这里采用非对称PWM输出模式并使用STM32L4开发板来演示实现过程。先用TIM1结合非对称PWM输出模式输出2路带相差的同频信号,然后连接到TIM2的编码器接口。另外,我还用了个按键【接到PC13】动态调整TIM1两路输出相差的前后关系,以观察TIM2计数器的计数变化情况,即递增还是递减计数。

图片

我先配置TIM1的CH1/CH2,实现2路带相差的PWM输出。【关于TIMER非对称PWM输出模式这里不介绍了,此处直接上配置。下面链接有相关文章介绍,或者自行研读STM32参考手册相关内容。】

图片

基于CubeMx配置后生成初始化工程,添加2行上图中的代码就可以输出了。

我这里使用ARM MDK IDE自带的逻辑分析仪就可以看到下面波形。2路波形分别从GPIOA_PIN8/GPIOA_PIN9输出。

然后我将这两路输出分别连接到TIM2的编码器接口脚【GPIOA_PIN0、GPIOA_PIN1】。

我把有关TIM2编码器应用的CubeMx配置也截图出来供参考。【其中ARR可按需调整,为了便于查看效果,后来我将其改为1000了。这点不影响功能演示。】:

图片

然后,添加启动TIMER编码器功能的API函数。【API函数里启动了2个通道的输入捕获中断,我这里只保留通道1的而关闭了通道2的。即每次在TIM2通道1的捕获中断里读取其计数器的值。】

图片

编译、除错后运行,即可在IDE的逻辑分析仪上看到下面的结果。其中CNT_value就是TIM2的计数器动态值。目前看到的是TIM2的编码器接口针对当前2路输入信号进行周期计数。绿色和紫色是上面提到过的两路输入信号【因显示分辨率的关系下面相关图形变成单色方块了】。

图片

当然,我们可以通过按键来调整TIM1两路输出信号的相差时序,进而改变TIM2编码器计数的方向。不难看出下图中3个圆圈的地方就是切换计数方向的位置。

图片

我们还可以调整TIM1的参数改变输出给TIM2的信号频率。整个过程就是利用TIMER的非对称PWM输出模式构造2路带相差的编码器信号,从而让TIMER的编码器接口电路实现对外部编码输入信号的计数。实现这些基本功能之后,可以进一步研究应用中可能涉及的各种测量功能。

聊到这里,可能有人对上面逻辑分析仪的配置感兴趣。之前我在本公众号专门介绍过,这里简单就今天查看的几个变量的配置过程介绍下。

这里的CNT_value连续记录TIM2计数器的值,这里为Analog量。

Level_PA8记录GPIOA_PIN8的电平情况,1或0两个值之一,为Bit量。

Level_PA9跟Level_PA8是完全相同的数据类型,不过显示的是GPIOA_PIN9的电平。显然,逻辑分析仪配置里关于Level_PA9的显示算式的屏蔽数应该是0x00000200,右移位为9。我目前是在SYSTICK的毫秒中断里读取GPIOA-》IDR的值即管脚电平到变量Level_PA8和Level_PA9的。

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

    关注

    41

    文章

    3365

    浏览量

    131642
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348947
  • 控制
    +关注

    关注

    4

    文章

    997

    浏览量

    122163
收藏 人收藏

    评论

    相关推荐

    利用非对称PWM模式体验编码器功能

    通常在STM32芯片的通用TIMER或高级TIMER都带编码器功能,支持基于1路或2路输入的编码脉冲计数。
    的头像 发表于 05-04 10:01 1562次阅读
    利用非对称PWM模式体验<b class='flag-5'>编码器</b><b class='flag-5'>功能</b>

    正交编码器接口

    PIC18F4331里的正交编码器接口怎么用啊!我要用这个模块读取编码器的数据,编码器一转程序就不走了!找不到资料,谁有给分享下啊,谢谢了
    发表于 06-04 20:25

    STM32学习笔记:编码器接口模式及应用

    mode”。当然,具体是哪一个TIM,可参看芯片对应的数据手册,可以一目了然。STM32提供的编码器接口模式主要针对的就是“正交编码器”,它可以利用定时的“计数”
    发表于 05-10 07:00

    STM32增量式编码器接口模式解析

    mode”。当然,具体是哪一个TIM,可参看芯片对应的数据手册,可以一目了然。STM32提供的编码器接口模式主要针对的就是“正交编码器”,它可以利用定时的“计数”
    发表于 05-28 08:00

    如何使用编码器

    1.编码器概述这里对此不再详细说明,本博文重在如何使用编码器,有兴趣的同学可以去网上了解,或者参考一下博文。旋转编码器工作原理2.增量式编码器控制思路 图2-1
    发表于 08-16 08:26

    5.EV_HC32F460_Timer之正交编码器调试简介

    5.EV_HC32F460_Timer之正交编码器调试简介TimerHC32F460 中与 PWM 相关的外设有– 3 个多功能 16bit PWM Timer
    发表于 12-07 09:56

    怎样使用输入捕获计算编码器的数值

    (一)编码器介绍首先可以在man手册中查看TAx的功能(function),发现他不支持直连编码器,然后看了下timer32,发现timer
    发表于 02-15 06:26

    基于单片机的增量式光电编码器接口的设计

    介绍了低速增量式光电编码器接口的鉴向计数原理,以及实践过程中所要注意的问题,并通过实验验证接口的可行性与适用范围。
    发表于 04-08 10:14

    HIPEFACE DSL编码器的双线接口参考设计

    描述 TIDA-00177 参考设计是连接到两线 HIPERFACE DSL® 编码器且符合 EMC 标准的工业接口。其应用包括工业伺服驱动。此设计采用 3.3V 电源 RS485 收发,并具备
    发表于 09-26 06:16

    基于GD32F310 定时编码器接口的简介及特点

    单通道输出】文章中有讲到具有编码器接口的定时,如下所示。TIMER0、TIMER14、TIMER
    发表于 09-28 15:53

    在GD32F427开发板上怎样去使用编码器接口

    【GD32F427开发板试用】03-PWM单通道输出文章中有讲到具有编码器接口的定时,如下所示。TIMER0 TIMER7 这两个定时
    发表于 11-30 14:42

    编码器,编码器是什么意思

    编码器,编码器是什么意思 编码器 编码器(encoder)是将信号
    发表于 03-08 15:04 2897次阅读

    接口 - 海德汉编码器

    接口 - 海德汉编码器,全部产品接口介绍,各种接口技术。
    发表于 03-14 15:44 9次下载

    EV_HC32F460_Timer之正交编码器调试

    5.EV_HC32F460_Timer之正交编码器调试简介TimerHC32F460 中与 PWM 相关的外设有– 3 个多功能 16bit PWM Timer
    发表于 11-24 12:21 15次下载
    EV_HC32F460_<b class='flag-5'>Timer</b>之正交<b class='flag-5'>编码器</b>调试

    编码器音频功能

    数字视频监控系统需要音频功能,音频功能包括音频输入和输出功能,输入功能是对前端的音频输入进行与视频同步的录音,输出功能指控制中心可以对前端现
    的头像 发表于 08-25 11:11 444次阅读