【江科协-STM32】6. TIM编码器接口
1. 编码器接口简介
编码器接口(Encoder Interface),可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度。
每个高级定时器和通用定时器都拥有一个编码器接口,两个输入引脚借用了输入捕获的通道1和通道2。
2. 正交编码器
正转时,A相上升沿,B相低电平;对应反转,B相则是低电平,以此类推。
当出现某个边沿时,我们看对应另一相的高低电平,如果对应另一相的状态出现在该表中,就是正转,计数自增。否则,就是自减。
3. 旋转编码器
旋转编码器:用于测量位置、速度或者旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向。
类型:机械触点式/霍尔传感器式/光栅式
接线的引脚有两个是电源,两个是AB相,还有一个编码器0位置的测量,还有一个是空脚,闲置。
4. 编码器接口应用
高级定时器和通用定时器都是只有一个编码器接口。
基本定时器没有编码器接口。
编码器接口有两个输入端,分别接到A相和B相。
回到这张图中:
编码器接口的输入有两个信号:TI1FP1和TI2FP2。
编码器接口的两个引脚,借用了输入捕获单元的前两个通道。最终编码器的输入引脚可以追溯到CH1和CH2。信号的通路是,CH1通过TI1-输入滤波器和边沿检测器通向编码器接口,CH2通过TI2-输入滤波器和边沿检测器通向编码器接口。
:::warning
我们之前一直使用的72MHz的内部时钟,和我们在时基单元初始化时设置的计数方向,并不会使用,因为此时计数时钟和计数方向都处于编码器接口托管的状态,计数器的自增和自减是受编码器控制的.
:::
输入捕获的前两个通道,通过GPIO口接入编码器的A、B相,然后通过滤波器和边沿检测极性选择,产生TI1FP1和TI2FP2两个信号,通向编码器接口,编码器接口通过预分频器控制CNT计数器的时钟,同时,编码器接口还根据编码器的旋转方向,控制CNT的计数方向,编码器正转时,CNT自增,编码器反转时,CNT自减,ARR也是有效的,一般是设置为65535,利用上补码的特点,在自减的时候输出负数。
5. 工作模式
注意到我们是可以忽略边沿的。比如可以仅在A相的上升沿和下降沿自增或者自减,而B相的两个状态忽略掉,不进行计数。
在前两种模式下,在一相的边沿计数,另一相忽略。
在第三种模式下,正转的状态都向上计数,反转的状态都向下计数。
一般都使用第三种模式。
在上图中,两个引脚都是用的第三种模式。
一个引脚不变,另一个引脚连续跳变好几次,可以归为毛刺信号。毛刺信号可以滤掉。正交编码器可以帮助我们滤掉这种噪声。
来看TI1反相的情况: