TIM 编码接口

目录

一、编码器接口简介

​编辑

二、正交编码器

1.正交编码器的边沿总结

2.编码器电路的设计

3.编码器接口基本结构

4.工作模式

5.实例


一、编码器接口简介

Encoder Interface 编码器接口

编码器流程概述:编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度。

每个高级定时器和通用定时器都拥有1个编码器接口(比如STM32F103C8T6中,有TIM1,TIM2, TIM3,TIM4四个定时器,当接入四个编码器的时候,就没有定时器可以使用了。如果是美没有资源,也可以使用外部中断来接编码器,用软件的资源来弥补硬件资源。软件和硬件资源是互补的。有硬件资源,一帮都是先使用硬件资源,把软件资源节约下来干其他的事情)

两个输入引脚借用了输入捕获的通道1和通道2(借用的引脚就是CH1和CH2,CH3和CH4不能接入编码器)


二、正交编码器

正交编码器一般可以测量位置或者带有方向的速度值,它一般有两个信号输出零件,一个是A项,一个是B项。

旋转编码器:

第一个是只有一个光栅加红外对管的编码器,这只能输出一个方波信号,并不是正交编码器。

第二个图就的编码器里面靠两个金属触点交替导通,可以输出a项和b项两个正交信号。

第三个图中有四个硬件,上面两个是供电的正极和负极,下面两个是A项和B项的输出

|----------------------------------------------------------------------------|----------------------------------------------------------------------------|----------------------------------------------------------------------------|
| | | |

当编码器的旋转轴转起来时,A项和B项就会输出正交编码器这样的方波信号,转得越快,这个方波的频率就越高,所以方波的频率就代表了速度。我们取出任意一项的信号来测频率,就能知道旋转速度了,但是只有以上的信号无法测量旋转方向。因为无论正转还是反转都是一样的。

正交信号:当正转时A相提前B相90度,反转时A相滞后B相90度,这个正转是A相提前还是A相滞后,并不是绝对的。

正交信号相比较单独定义一个方向引脚有什么好处如下:

  • 首先就是正交信号精度更高,因为AB相都可以计时,相当于计时频率提高了一倍。
  • 其次就是正交信号可以抗噪声,因为正交信号两个信号必须是交替跳变的,所以可以设计一个抗噪声电路,如果一个信号不变,另一个信号连续跳变,也就是产生了噪声,那这时计时值是不会变化的。

1.正交编码器的边沿总结

在正转的时候:

  • 第一个时刻A相上升沿对应B相低电平,对应表里的第一行;
  • 第二个时刻B相上升沿对应A相电平,是表里的第三行;
  • 第三个时刻A相下降沿对应B相高电平,是表里的第二行;
  • 最后是B相下降沿对应A相低电平,是表里的第四行,之后就是第一个到第四个状态的重复。

反转

  • 第一个时刻B相上升沿对应A相低电平。
  • 第二个时刻A项上升沿对应B相高电平。
  • 第三个时刻B相下降沿对应A相高电平。
  • 第四个时刻A相下降沿对应B相低电平。

总结:当A,B相出现这些边缘时,对于逆向的状态,正转和反转正好是相反的,比如A相上升沿时正转,B相就是低电平,反转B相就是高电平,剩下的也是相反的。

2.编码器电路的设计

高级定时器和通用定时器都是一样的,每一个定时器都只有一个编码器起接口,基本定时器没有编码器。

从下图中可以看出这个编码器接口的两个硬件借用了输入捕获单元的前两个通道,所以最终编码器的输入硬件就是定时器的CH1和CH2 这两个,不使用CH3和CH4。输入捕获滤波器和边缘检测编码器接口也有使用,但是后面的是否交叉预分频器和CCR寄存器与编码器接口无关,这些就是编码器接口的输入部分。

那编码器接口的输出部分,其实就相当于从模式控制器,去控制CNT的计数时钟和计数方向,简单来说这里的输出执行流程是按照之前总结的那个表,如果出现了边沿信号并且对应另一相的状态为正转则控制CNT自增,否则控制CNT自减。

注意在这里,我们之前一直在使用的72MHz内部时钟和我们在时基单元初始化时设置的计数方向并不会使用,因为此时技计数时钟和计数方向都处于编码器接口托管的状态,计数器的自增和自减受编码器控制。这就是编码器接口的电路结构了。

3.编码器接口基本结构

这个图中编码器接口通过预分频器控制CNT计数时钟,同时编码接口还感觉编码器的旋转方向控制CNT的计数方向,编码器正转时候CNT自增,编码器反转时候CNT自减。

同时这里的ARR重装器也是有效的,一般设置为65535,这样可以通过补码容易得到负数,当CNT初始为0自增就是0,1,2,3......,自减就是65535,65534......到时候根据补码定义,就会对应-1,-2,-3,就可以得到负数了。

4.工作模式

有三种工作模式,分别是只在一相的边沿计数和两相的边沿都计数,一相边沿计数的精度会稍微低一些,一般都是使用第三个模式的计数。两个图结合着看。

5.实例

正交信号就像走路一样,两个信号是交替变化的。

注意毛刺的时候,通过两个一起计数的逻辑,就可以将这样的噪声过滤掉,计数器会不断加减来回摆动,最终计数值不变。

这个图是两个引脚都不反相的图。

极性选择:就是选择上升沿有效还是下降沿有效,这里的极性选择是对高低电平的极性选择,选择上升沿的参数就是信号直通过来,高低电平极性不反转,选择下降沿的参数就是信号通过一个非门过来,高低电平反转,故极性选择时候就会有两个控制极性的参数选择要不要加一个非门,反转一下极性。

下图中将极性反转,首先要把TI1的高低电平如图中所画的将其取反,不然得出来的就会是错误的,和下面的图对应不上。

相关推荐
zd8451015009 小时前
STM32 HAL DHT11驱动程序
stm32·单片机·嵌入式硬件
南梦也要学习12 小时前
STM32江科大-----SPI
stm32·单片机·嵌入式硬件
willhu200812 小时前
Keil调试STM32:未定义OS_EVENT以及停在“BEAB BKPT 0xAB”处等问题
stm32·单片机·嵌入式硬件
卡尔曼的BD SLAMer12 小时前
问题 | 对于初学者来说,esp32和stm32哪个比较适合?
stm32·单片机·嵌入式硬件
不脱发的程序猿12 小时前
ESP32与STM32哪种更适合初学者?
arm开发·stm32·嵌入式硬件
Quinn2715 小时前
【正点原子】STM32MP257 同构多核架构下的 ADC 电压采集与处理应用开发实战
stm32·架构·正点原子·arm linux·stm32mp257
田甲18 小时前
【STM32】ST7789屏幕驱动
stm32·单片机·嵌入式硬件
xMathematics1 天前
STM32嵌入式开发从入门到实战:全面指南与项目实践
stm32·单片机·嵌入式硬件
冻结的鱼1 天前
在 STM32 中实现电机测速的方法介绍
stm32·单片机·嵌入式硬件