资讯详情

解析STM32编码器接口模式

Ⅰ 对于编码器

编码器的品种有不少,甚么增量式编码器、绝对值编码器,有轴或许无轴编码器,电压输入、推拉输入、集电极开路输入等等。但不论甚么范例的编码器,其目标都近似,失掉滚动的角度,角速度、位移等。

本文讲述罕见的增量式编码器,增量式编码器也能够叫正交编码器,也就是说能够经由过程其A、B的相位晓得编码器是正转,仍是反转,还能够依据编码器参数得出旋转了几何角度等。

罕见的增量式编码器A、B、Z三根线代表甚么意义呢?使用过编码器的人不难懂得,这里简略给初学者讲述一下:

A、B两线供应相位相差90度的脉冲旌旗灯号,用其来计较扭转的角度;Z线为过零点线,也就是说每转一转,经由某一点都市输入一个脉冲旌旗灯号,首要用于“过零校订”,三线的旌旗灯号大致如下图(右边):

有些编码器进去的线有一个对应的“非”信号线(如上图右侧),实在首要用于抗干扰的。

更多对于编码器的描绘,请网上搜刮相干的常识举行懂得,本文再也不讲述。

Ⅱ STM32编码器接口模式

在STM32芯片中,都有这么一个定时器,叫通用定时器“General-purpose timers”,定时器内里存在这么一个模式,叫编码器接口模式“Encoder interface mode”。当然,详细是哪个TIM,可参看芯片对应的数据手册,能够一目明了。

STM32供应的编码器接口模式首要针对的便是“正交编码器”,它可以应用定时器的“计数”性能,得出编码器计了多少个;同时,它能够依据编码器AB的相位得出编码器是,仍是

(图片来自STM32参考手册)

有点近似TIM的捕捉性能,捕捉A相、B相的脉冲旌旗灯号;只是编码器模式是捕捉A(TI1)、B(TI2)相的边际旌旗灯号(如上图),相当于一个周期内,计4个脉冲旌旗灯号的值。

STM32的计数器会依据偏向(+ 或许 -)来举行计数,TI1和TI2相位相差90,4个阶段的边际,对应TI1和TI2分歧电平旌旗灯号,从这个分歧的旌旗灯号,硬件本身能够判别出其偏向。在编码器模式下,有个寄存器(TIMx_CR1)中有一个偏向位(DIR),会跟着编码器扭转偏向的转变而转变,咱们能够经由过程读取该位来判别编码器的正转,仍是反转。

STM32编码器接口模式实际上是经由过程应用AB相位TIM供应时钟旌旗灯号,使其计数。

对编码器有所理解了实在,在STM32能够经由过程设置编码器模式对应的函数就可以完成猎取编码器传感器下面的信息了。

void ENCODER_Configuration(void){  TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);  TIM_Cmd(TIM3, ENABLE);}

STM32CubeMX是一套倏地开辟对象,让很多不懂得STM32底层伴侣能够倏地的在STM32上编写使用步伐。

本文说的设置编码器接口,在某些TIM上存在一个“Combined Channel设置能够理解为连贯通道”,也算是TIM的一种复用模式抉择内里的“Encoder Mode”即可。

Ⅳ 实例代码

本文供应的代码为一个应用规范外设库编写简略Demo工程此中内里附带一个工程(用于模仿编码器AB相波形的工程以下如:

该工程首要设置TIM的编码器模式经由过程准时读取编码器偏向(DIR),和计数(CNT经由过程串口打印进去。

链接:https://pan.baidu.com/s/1jH8yOqM 

https://github.com/EmbeddDeveloper/STM32F4_TIM_Encoder

http://download.csdn.net/download/ybhuangfugui/10165086 

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台