×
单片机 > 单片机程序设计 > 详情

关于STM32正交编码器边沿的理解

发布时间:2020-08-25 发布时间:
|

STM32中的TIM_EncoderInterfaceConfig()函数。其配置的定时器有编码器接口等功能,一般是定时器的通道1和通道2才能作为编码器的输入口,对应编码器输出的两项。 

TIMx参数就是使用哪个定时器作为编码器接口的捕捉定时器。 

一般一个编码器占用一个定时器。 

TIM_EncoderMode参数是模式,是单相计数(只能反映速度)还是两相计数(速度和方向)。 

TIM_IC1Polarity和TIM_IC2Polarity参数就是通道1、2的捕捉极性。 

但是一般来说,STM32对应的都是两相计数,一项计数容易误判,也就是说,你可以按一路计数,但是接线时好像两相的编码线A,B都是需要接上的,否则容易误判。

  

一:Counting on TI1 only(通过TI1来计数,一个周期内只能有两个跳边沿): 

若TI2为高时(第一行):TI1上升沿则向下计数,下降沿则向上计数。 

1时刻:TI2为低电平,TI1上升沿跳变,计数器向上计数; 

3时刻:TI2为高电平,TI1下降沿跳变,计数器仍然向上计数。 

二. Countingon TI1 and TI2:一个周期完成4次跳变。精度提高 

1时刻:TI2为低电平,TI1上升沿跳变,计数器向上计数; 

2时刻:TI1为高电平,TI2上升沿跳变,计数器仍然向上计数; 

3时刻:TI2为高电平,TI1下降沿跳变,计数器仍然向上计数; 

4时刻:TI1为低电平,TI2下降沿跳变,计数器仍然向上计数。


 

上图可见编码器模式下不支持配置双边沿模式


上图可见STM32的编码器都是双边沿触发的   上升下降沿只是配置极性而已,个人理解也就是在输入端接个反相器。

上图是ST的标准外设库,说明的很明确。


可以在初始化代码中添加这么一句,就可以实现单通道计数,一个上升沿、一个下降沿计数器变化1


实测OK


TIM_PrescalerConfig(TIM2, 1 , TIM_PSCReloadMode_Immediate);



关键字:STM32  正交编码器  边沿

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机中断源的扩展方法