我们在之前参加比赛的过程中偶然间发现了使用不同的处理器之间对编码器的解码方法存在一定的不同。以至于我们在使用输出波形不同的编码器时,会产生处理器无法读值的问题或者读值一直错误的问题。
本次文章主要采用逐飞科技的两款输出波形不同的智能车编码器,以下为编码器实际输出波形:
随后我们研究了stm32和k6x系列的两种编码器计数模式的不同之处
首先是stm32系列,我们在查阅了其本身的编程手册之后找到了其编码器模式下的计数方法以及工作模式:
同时对比k6x系列的编码器计数模式的计数方法如下:![](https://i-blog.csdnimg.cn/blog_migrate/2c33138b2e5fed7717b474a59cd56aa5.png)
经过查阅数据手册我们发现stm32的计数器模式是根据t1和t2通道的边缘变化的顺序来确定计数的增加或减少,因此当采用方向编码器时无法通过方向线的高低电平来确定计数的增减。而k6x系列同时拥有两种编码器的计数模式,故两种编码均可在k60上进行准确计数。
若想实现stm32系列方向编码器的读数,我们采用的将方向编码器接入中断中判断高低电平,来决定计数的增加还是减少。同时输入捕获模式和单边编码器模式,都可实现此方法。