关于STM32编码器的接口模式

编码器是一种比较常见的产品(也可以理解为传感器),最常见的就是配合电机一起工作,那么,你对编码器有多了解呢?
一、关于编码器
编码器的种类有很多:增量式编码器、绝对值编码器,有轴或者无轴编码器,电压输出、推拉输出、集电极开路输出等等。但不管什么类型的编码器,其目的都类似,得到转动的角度,角速度、位移等。 本文讲述常见的增量式编码器,增量式编码器也可以叫正交编码器,也就是说可以通过其a、b的相位知道编码器是正转,还是反转,还可以根据编码器参数得出旋转了多少角度等。 常见的增量式编码器a、b、z三根线代表什么意思呢?使用过编码器的人不难理解,这里简单给初学者讲述一下: a、b两线提供相位相差90度的脉冲信号,用其来计算旋转的角度;z线为过零点线,也就是说每转一转,经过某一点都会输出一个脉冲信号,主要用于“过零校正”,三线的信号大致如下图:
有些编码器出来的线有一个对应的“非”信号线(如上图右边),其实主要用于抗干扰的。 更多关于编码器的描述,请网上搜索相关的知识进行了解,本文不再讲述。
二、stm32编码器接口模式
在stm32芯片中,都有这么一个定时器,叫通用定时器“general-purpose timers”,定时器里面存在这么一个模式,叫编码器接口模式“encoder interface mode”。当然,具体可参看芯片对应的数据手册。
stm32提供的编码器接口模式主要针对的就是“正交编码器”,它可以利用定时器的“计数”功能,得出编码器计了多少个脉冲;同时,它可以根据编码器ab的相位得出编码器是正转,还是反转。
(图片来自stm32参考手册)
1.计算脉冲个数
有点类似tim的捕获功能,捕获a相、b相的脉冲信号;只是编码器模式是捕获a(ti1)、b(ti2)相的边沿信号(如上图),相当于一个周期内,计4个脉冲信号的值。
2.计数器的增减(方向)
stm32的计数器会根据方向(+ 或者 -)来进行计数,ti1和ti2相位相差90,4个阶段的边沿,对应ti1和ti2不同电平信号,从这个不同的信号,硬件自身可以判断出其方向。在编码器模式下,有个寄存器(timx_cr1)中有一个方向位(dir),会随着编码器旋转方向的改变而改变,我们可以通过读取该位来判断编码器的正转,还是反转。
3.tim时基
stm32编码器接口模式,其实是通过利用ab相位tim时基提供时钟信号,使其计数。
三、应用编程
相信看了上面的一些描述,大家应该对编码器有所理解了。其实,在stm32中,可以通过配置编码器模式对应的函数,就能实现获取编码器传感器上面的信息了。
使用stm32提供的标准外设库,或者使用stm32cubemx工具很容易将tim配置成编码器模式。
1.标准外设库配置编码器
tim_encoderinterfaceconfig,它就是编码器接口的配置函数。简单的只需要配置该函数,使能tim,即可实现采集编码器上面的信息。(当然,需要复杂的操作,还需要做其他相应的配置)
2.stm32cubemx配置
stm32cubemx是一套快速开发的工具,让很多不了解stm32底层的朋友可以快速的在stm32上编写应用程序。
本文说的配置编码器接口,在某些tim上存在一个“combined channel”配置,可以理解为“连接通道”,也算是tim的一种复用模式。选择里面的“encoder mode”即可。
四、实例代码
本文提供的代码为一个使用标准外设库编写的简单demo工程,其中里面附带一个工程(用于模拟编码器ab相波形的工程),如下:
该工程主要配置tim的编码器模式,通过定时读取编码器的方向(dir),和计数(cnt),并通过串口打印出来。
下载地址:
百度网盘:
链接:https://pan.baidu.com/s/1jh8yoqm
密码:t4kx
github:
https://github.com/embedddeveloper/stm32f4_tim_encoder
csdn:
http://download.csdn.net/download/ybhuangfugui/10165086
提示:1.公号不支持外部链接,请复制链接到浏览器打开; 2.为防止失效,以上三个链接代码一样,若都不能下载了,可以换一个下载链接。

OPPO Reno5 Pro+首发与索尼联合开发旗舰传感器
OpenGL是什么?
全息触控技术能否引发4D革命
什么是方舟编译器?
构建微波和毫米波自动测试系统需要考虑哪些因素?(二)
关于STM32编码器的接口模式
RoadStar或曾有希望成中国无人驾驶明星,但最后成了流星
最值得入手的四部手机:iphone7、小米mix2、一加5和华为P10plus,你打算入手哪一部?
送你这套硬件必备计算工具,工程师们估计能活100岁
儿童闹钟的制作
面向Altera FPGA,赛普拉斯推出全新USB 3.0 SuperSpeed接口板
美中贸易谈判因华为问题陷入停滞
基于国产智能芯片的IP摄像机产品方案的详细解析
[图文]亮度可调的夜光灯
芯片制造过程
英伟达Quantum-2 Infiniband平台技术
百度股价大涨的底层逻辑
福特考虑退出南美市场,欲将亏损业务出售给FCA和大众
如何测量Wi-Fi接收,如何进行Wi-Fi功能测试
单电源PD放大电路为何一定要加偏置电压?