搜索
当前位置: 大无限平台 > 定时器 >

STM32f103 定时器之编码器接口模式

gecimao 发表于 2019-04-18 18:30 | 查看: | 回复:

  我能想到的实际应用场景暂时只有实体音量旋钮,鼠标的滚轮等,所以只实现了计数。阅读Arduino关于该编码器的介绍,该编码器还可以实现旋转的速度、加速度的计算。应该算是算法层级的吧,还没做到实际应用,暂时不深究,本篇仅仅对旋转编码器的原理以及

  这是从网上看到一个简介,只接触过Arduino的编码器,其他暂未使用过。

  Arduino的编码器属于增量式。它一共有5根线。分别为“CLK”、“DT”、“SW”、“+”、“GND”。

  “+”、“GND”:勿用多说,VCC与GND,接至板子的VCC与GND即可。

  “SW”:Arduino介绍说,当旋钮旋转完一圈时,该脚会放出一个电平跳变信号,相当于旋转编码器常说的“Z”信号,实际上我买的这个只是一个开关,即旋钮部分可以按下去(类似于汽车上的音量调节按钮),该接口会产生一个下降沿。然后由MCU去做相关处理。

  “CLK”、“DT”:在该模块上显示的丝印名称为这两个,不明白为什么是这个丝印,应该实际对应于编码器常用的“A”、“B”信号吧,这两个信号的发生方式如下:

  正旋:如上图当旋钮开始正向旋转时,“A”从低电平变为高电平,“B”保持不变;当旋钮旋转到预定位置时,“A”维持为高电平,“B”然后跟着从低电平跳变到高电平。也就是说,正旋时,“A”总是先与“B”开始电平变化。

  所以在此处,丝印将该两个接线印成“CLK”、“DT”就让我有点困惑。也未找到相关资料,先暂时放放,下次有实际应用,就知道为什么了。

  根据如上正旋反旋规律,就已经可以根据编码器输出的信息判断出编码器的旋转方向以及计算出其旋转角度了,具体做法如下:

  将“CLk”、“DT”分别连接至MCU的任意具有外部中断的IO口,处理方式为:

  当其中某个IO口检测到上升沿或者下降沿时,在中断函数内检测另一个IO口的电平状态。以正旋为例,正旋时,“A”先上升沿引起中断,得到的“A”、“B”的电平状态为“10”,紧接着,“B”上升沿,检测到“A”、“B”电平状态为“11”。

  以此,即可判断出该编码器的旋转方向,同时在“A”、“B”同时跳变完成后,即可根据编码器的旋转方向对编码器的旋转计数进行增减。

  以上为使用外部中断方式处理旋转编码器的输出信息,当然,本篇要用到接口模式,所以也就不会用以上的方法进行判断。那么定时器接口模式是如何对旋转编码器进行计数的呢?

  其实原理一样,将旋转编码器的“CLK(A)”、“DT(B)”脚接入到TIMx的通道,将对应通道引脚配置为编码器接口模式,使能计数,然后STM32的值就会在硬件上按照上述规对计数器的值进行加减。

  意法半导体推出超低功耗的工业资产管理Sigfox Monarch解决方案,让全球物联网设备实现无缝连接

  意法半导体中国首家STM32官方旗舰店入驻天猫商城,为物联网开发者提供一站式服务

  意法半导体推出新款STM8 Nucleo开发板,为8位项目提供开源硬件资源

  意法半导体推出STM32 USB TCPM软件,简化USB-PD 3.0输电协议的迁移

本文链接:http://kingstonflowers.net/dingshiqi/107.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部