编码器接口简介
•Encoder Interface 编码器接口
•编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度
•每个高级定时器和通用定时器都拥有1个编码器接口
•两个输入引脚借用了输入捕获的通道1和通道2
编码器有两个输出,一个是A相,一个是B项。将A相和B相,接⼊STM32定时器的编码器接口,编码器接口⾃动控制时基 单元中的CNT计数器,进⾏⾃增或者⾃减,例如:CNT初始值为0,编码器右转 产⽣⼀个脉冲,CNT++,左转CNT--,编码器接口(相当于带有⽅向控制的外部时钟)同时 控制CNT的计数时钟和计数⽅向,CNT的值就表示了编码器的位置,每隔⼀段时间取⼀次 CNT的值再把CNT清零,每次取出来的值就代表 了编码器的速度,编码器的测速实际上就 是测频法测正交脉冲的频率,CNT计次,每隔⼀段时间取⼀次计次。
2. 正交编码器
![](https://img-blog.csdnimg.cn/img_convert/1be45845e56e956aca36df050d1d784b.png)
![](https://img-blog.csdnimg.cn/img_convert/b5c40f4369de576b97d987c22aafedd2.png)
当编码器的旋转轴转起来时,A相和B相就会输出⽅波信号,转的越快,⽅波的频率越⾼, ⽅波的频率代表速度,取出任意⼀相的信号来测量频率,可测得旋转速度,只有⼀相 的信号⽆法确定旋转⽅向,因为无论正传反转,他都为一条方波。(正交信号:当正转时,A相超前B相90度,翻转时,A相滞后B相90度 提前或者滞后由自己规定)
正转时,第⼀个时刻,A相上升沿,对应B此时是低电平,第⼆个时刻,B相上升沿,对应A 相⾼电平,第三个时刻,A相下降沿,对应B相⾼电平,B相下降沿,对应A相低电平。
反转时,第⼀个时刻,B相上升沿,对应A相低电平,第⼆个时刻A相上升沿,对应B相⾼电 平,第三个时刻,B相下降沿,对应A相⾼电平,第四个时刻,A相下降沿,对应B相低电 平。 当A、B相出现这些边沿时,对应另⼀相的状态,正转和反转正好是相反的
编码器接⼜的设计逻辑是:首先把A相和B相的所有边沿作为计数器的计数时钟,出现边沿 信号时,就计数自增或者自减。
3. 编码器接口基本结构
![](https://img-blog.csdnimg.cn/img_convert/d87eb76e198b5c9680e01e92bf50f94d.png)
输⼊捕获的前两个通道,通过GPIO口接⼊编码器的A、B相,然后通过滤波器和边沿检测极性选择,产⽣TI1TP1和TI2FP2,通向编码器接口,编码器接口通过控制预分频器控制CNT计数器的时钟,同时,编码器接口还根据编码器的旋转⽅向,控制CNT的计数⽅向,编码器正转时,CNT自增,编码器反转时,CNT自减。
另外设置ARR为65535最⼤量程,这样利用补码特性很容易得到负数。(直接把16位无符号数转换为16位有符号数,根据补码定义65535对应-1,65534对应-2)
4. 工作模式
![](https://img-blog.csdnimg.cn/img_convert/d51f09dd4e8dd7ba0608ba4449dd3628.png)
编码器接口的工作逻辑:TI1FP1和TI2FP2接的就是编码器的A、B相,在A相和B相的上升沿 或者下降沿触发计数,向上计数还是向下计数取决于边沿信号发⽣时,另⼀相的电平状态 (相对信号的电平)
5. 实例
TI1和TI2均不反相(上升沿)
![](https://img-blog.csdnimg.cn/img_convert/43cf6baad5499e104abd86627c55c8da.png)
TI1反相(下降沿)
极性变化对计数的影响
![](https://img-blog.csdnimg.cn/img_convert/46ca5daab6e515c55079324a95f99537.png)
TI1反相后,把TI1高低电平取反,这才是反相后实际给编码器接口的电平。