编码器接口简介
关于Encoder Interface 编码器接口
编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度
每个高级定时器和通用定时器都拥有1个编码器接口
两个输入引脚借用了输入捕获的通道1和通道2
最后一条编码器没有与CH3和CH4连接的电路
相当于是一个带有方向控制的外部时钟,他同时控制着CNT的技术时钟和技术方向,因此CNT的值就表示了编码器的位置。每隔一段时间。取一次CNT的值,再把CNT清零。每次取出来的纸就表示了当前编码器的速度,编码器测速实际上就是测频法测正交脉冲的频率,CNT这次每隔一段时间取一次计次,总体来说它是一个带方向的测速

正交编码器工作原理与编码器接口实现机制
增量式正交编码器通过输出相位差为 90° 的两相方波信号(A 相、B 相)实现位置、转速与转向的检测,其核心工作逻辑如下:
一、信号特征与基础检测原理
转速表征机制:编码器旋转时,A、B 两相输出周期性方波信号,信号频率与旋转速度正相关。因此,仅对单相信号进行频率检测,即可获取编码器的旋转速度;但单相信号无法区分旋转方向,因正、反转过程中,单相方波的频率与占空比无显著差异。
转向表征机制:为实现转向检测,编码器引入正交相位设计:
正转状态下,A 相信号相位超前 B 相 90°;
反转状态下,B 相信号相位超前 A 相 90°。两相信号的相位差特征,为转向判断提供了核心依据。
二、编码器接口的计数与转向判断逻辑
定时器编码器接口通过对 A、B 两相的边沿事件与对应相位状态的关联分析,实现位置计数与转向判定,其核心机制为:
计数触发方式:将 A、B 两相的所有上升沿、下降沿均作为计数器(CNT)的计数触发事件,每检测到一次边沿信号,计数器执行一次自增或自减操作。
转向判定规则:计数方向由触发边沿时另一相的电平状态决定,具体逻辑如下:
表格
|
触发边沿 |
正转时另一相状态 |
反转时另一相状态 |
|
A 相上升沿(↑) |
B 相低电平 |
B 相高电平 |
|
A 相下降沿(↓) |
B 相高电平 |
B 相低电平 |
|
B 相上升沿(↑) |
A 相高电平 |
A 相低电平 |
|
B 相下降沿(↓) |
A 相低电平 |
A 相高电平 |
|
接口通过检测边沿触发时刻另一相的电平,匹配上述状态表,自动控制计数器自增(正转)或自减(反转),实现位置、方向的同步检测。 |
三、正交信号的抗噪声特性
正交编码器的两相信号设计具备天然的抗噪声能力:当环境噪声导致某一相信号出现无规律的边沿跳变,而另一相信号保持稳定电平时,计数器会因连续的自增 / 自减操作相互抵消,最终计数值无显著偏移,从而抑制了噪声对位置检测结果的干扰,提升了系统的稳定性。
极性选择的核心作用
1. 定义信号的逻辑电平方向
- 正逻辑(Positive Polarity):
当编码器输出信号的高电平(如 + 5V、+24V)对应 “1” 状态,低电平(如 0V)对应 “0” 状态时,称为正逻辑。
应用场景:大多数工业控制系统(如 PLC)默认采用正逻辑,直接匹配标准数字信号。 - 负逻辑(Negative Polarity):
高电平对应 “0” 状态,低电平对应 “1” 状态。
应用场景:部分特殊电路或抗干扰需求较高的场景(如长线传输时通过反相器增强抗噪能力)。
2. 调整信号相位(脉冲方向)
- 在增量式编码器中,极性选择可改变 A、B 相脉冲的相位关系,从而影响计数器对旋转方向的判断:
- 正极性:A 相超前 B 相时表示 “正转”,输出正向脉冲。
- 负极性:A 相超前 B 相时表示 “反转”,或脉冲方向与正逻辑相反。
作用:无需物理调换编码器接线,通过软件设置即可适配不同旋转方向的需求(如电机正反转计数)。
3. 匹配不同接口标准
- 编码器输出信号需与后续电路(如控制器、计数器)的输入电平兼容:
- 例如:控制器支持NPN 输入(低电平有效)时,编码器需设置为负逻辑;
- 若控制器支持PNP 输入(高电平有效),则需设置为正逻辑。
- 避免信号冲突:错误的极性设置可能导致信号无法被识别,甚至损坏电路。
补充:编码器读出负数技巧:将ARR值调成65535
65535是16位1,先减一,再根据反码定义取反就倒退出-1
(正数的补码是本身,负数的补码取反+1)
编码器接口硬件架构解析

该接口基于通用定时器模块实现,整体信号链路与时序单元的工作架构如下:
信号输入链路:编码器 A、B 两相正交信号通过 GPIO 引脚接入系统,依次经过数字滤波器(抑制高频噪声干扰,提升信号可靠性)与边沿检测及极性选择模块(识别信号有效边沿并配置触发极性),生成标准化的 TI1FP1、TI2FP2 信号,送入编码器接口核心模块。
编码器接口核心:接收两路处理后的正交信号,根据相位差与边沿状态自动解析旋转方向,并生成计数脉冲,作为时基单元的计数时钟源。
时基单元:由预分频器(PSC)、计数器(CNT)与自动重装载寄存器(ARR)组成。编码器接口输出的计数脉冲经 PSC 预分频后驱动 CNT 计数;ARR 配置计数溢出 / 下溢边界,实现位置的循环计数,避免计数溢出导致的位置信息丢失。
编码器接口初始化流程
基于定时器的正交编码器接口初始化,需按以下步骤完成外设配置,确保信号采集与计数功能稳定实现:
外设时钟使能通过 RCC(复位与时钟控制)模块开启 GPIO 端口与目标定时器的外设时钟,为后续寄存器配置与外设工作提供时钟基础。
GPIO 引脚模式配置将编码器 A、B 相连接的 GPIO 引脚(如示例中的 PA6、PA7)配置为浮空输入模式,使引脚处于高阻输入状态,确保正交信号可被定时器正确采集。
时基单元参数配置配置定时器时基单元核心参数,适配编码器计数需求:
预分频器(PSC):通常配置为不分频(PSC=0),使编码器接口输出的脉冲直接驱动计数器,保证计数精度与转速检测的实时性;
自动重装载寄存器(ARR):配置为 16 位定时器的最大计数范围(0xFFFF,即 65535),使计数器可在全范围循环计数,减少溢出中断触发频率;
计数器(CNT):初始值设为 0,用于记录编码器的累计位置信息。
输入捕获单元配置配置定时器输入捕获通道的滤波与边沿检测参数,对应硬件链路中的滤波与极性选择模块:设置信号滤波参数抑制噪声干扰,配置信号极性以匹配编码器输出的有效边沿特征。
编码器接口模式配置通过定时器库函数配置为编码器接口模式,指定计数触发方式(如上升沿 / 下降沿均计数),使定时器自动根据 A、B 相信号的相位关系,控制 CNT 的增减计数,实现位置与方向的同步检测。
定时器启动启动定时器并使能计数器,编码器接口开始响应 A、B 相信号,执行位置计数与方向解析。
定时器编码器接口配置机制与工作模式分析
一、编码器接口配置函数
通用 / 高级定时器的编码器接口需通过专用库函数完成初始化配置,其核心函数原型为:
void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx,
uint16_t TIM_EncoderMode,
uint16_t TIM_IC1Polarity,
uint16_t TIM_IC2Polarity);
该函数定义了定时器响应正交编码器信号的核心规则,是实现位置、转速与转向检测的关键配置接口。
二、函数参数与工作模式解析
1. 外设与模式选择参数
-
TIMx:指定目标定时器外设,编码器接口功能仅支持通用定时器与高级定时器模块。 -
TIM_EncoderMode:定义编码器的计数触发模式,对应三种工作方式,其计数方向与信号状态的关系如表 77 所示:- 仅在 TI1 计数模式:仅响应 A 相(TI1FP1)信号的上升沿与下降沿,B 相(TI2FP2)仅作为方向判定的参考电平,计数分辨率为 1 倍频;
- 仅在 TI2 计数模式:仅响应 B 相(TI2FP2)信号的上升沿与下降沿,A 相(TI1FP1)仅作为方向判定的参考电平,计数分辨率为 1 倍频;
- TI1 与 TI2 均计数模式:同时响应 A、B 两相的所有边沿信号,每相的上升沿、下降沿均触发计数,计数分辨率提升至 4 倍频,适用于高精度检测场景。

结合表 77 的计数逻辑,定时器通过 “有效边沿 + 另一相电平” 的组合规则判定计数方向:当某一相信号产生有效边沿时,若另一相处于特定电平状态,计数器执行自增操作;反之则执行自减操作,从而实现转向的自动识别。
2. 输入通道极性配置
TIM_IC1Polarity与TIM_IC2Polarity分别配置通道 1、通道 2 的信号极性,定义有效边沿的触发条件:
- 该配置会覆盖此前通过输入捕获结构体设置的极性参数,为编码器接口模式下的最终极性配置;
- 极性配置对计数方向的影响:仅反转单通道极性时,两相信号的相位差关系反转,计数方向同步改变;若同时反转双通道极性,相位差关系不变,计数方向保持不变。因此,仅需调整单通道极性即可适配不同编码器的输出相位特征,实现计数方向的校正
三、编码器接口的时钟特性
编码器接口可视为一种带方向控制的外部时钟源:正交编码器输出的 A、B 相信号边沿直接驱动定时器计数器(CNT)的增减计数,替代了定时器内部时钟的作用。因此,在编码器接口模式下,定时器的内部时钟配置无效,计数器的工作时钟完全由外部编码器信号决定,计数方向则由两相信号的相位差与极性配置共同控制。
注:本文是学习笔记,素材来源于b站up江协科技

被折叠的 条评论
为什么被折叠?



