4. 绝对式编码器与串行协议概览
绝对式编码器与增量式编码器最大的区别在于:上电后无需寻找 Z 相或回零,编码器内部已经保存了唯一的位置信息。C2000 要读取这个位置,必须通过一根或几根串行数据线,按照编码器厂商规定的时序和帧格式进行通信。本节聚焦四种在伺服与运动控制中最常见的绝对式串行协议:SSI、BiSS、EnDat 和 Tamagawa,说明它们在 C2000 上的接入方式、信号链结构以及选型判断依据。
一、四种协议的信号链与帧结构差异
SSI(Synchronous Serial Interface)是最基础的一种。它使用一对差分时钟线和一对差分数据线,主机发出时钟脉冲,编码器在时钟下降沿或上升沿逐位输出数据。典型帧为 24 位或 25 位位置数据,外加若干状态位。SSI 只支持单向读取,没有寄存器访问,也没有 CRC 校验,协议简单、延迟低,但功能也最少。
BiSS(Bidirectional Synchronous Serial)在 SSI 的物理层基础上扩展了双向能力。BiSS-C 是常见版本,帧内包含位置数据、状态位和 CRC,主机还可以通过寄存器读写访问编码器内部参数,例如分辨率、偏移量、温度等。BiSS 的时钟频率可以做到较高,适合对刷新率和诊断能力都有要求的场合。
EnDat 2.2 是海德汉主推的协议,采用差分时钟与差分数据,支持位置读取和参数读写。它的帧结构比 SSI 复杂,包含模式命令、地址、数据和 CRC。EnDat 的优势在于功能完整、诊断信息丰富,并且支持纯串行和带增量信号两种模式。在 C2000 上接入 EnDat 时,通常需要外部协议芯片或 FPGA 做物理层与帧解析,MCU 侧通过 SPI 或并行接口读取结果。
Tamagawa(多摩川)协议在亚洲伺服市场非常普遍,采用半双工差分总线,主机发送请求帧,编码器返回包含绝对位置、多圈数据和 CRC 的响应帧。它的电气层类似 RS-485,需要方向控制。Tamagawa 的帧长和时序固定,协议实现相对成熟,很多 C2000 伺服方案会直接用 CLB 或 SPI 加外部收发器完成。
二、C2000 上的接入方式与关键配置
在 C2000 上接入绝对式编码器,核心问题是:谁来产生时钟、谁来解析帧、谁来校验 CRC。对于 SSI,最简单的方式是用 SPI 外设工作在主机模式,SCLK 经过差分收发器送到编码器,编码器数据回到 SPI 的 MISO 引脚。以 TMS320F28379D 为例,SPI 时钟可以配置为 1 MHz 到 10 MHz,CPOL=0、CPHA=0 或 CPOL=1、CPHA=1 取决于编码器在时钟的哪个边沿输出数据。接收到的 24 位数据需要屏蔽状态位,再乘以分辨率得到机械角度。
BiSS-C 的接入稍微复杂一些。由于 BiSS 的时钟是连续脉冲串,且数据线在帧间隙需要切换方向,直接用 SPI 从机模式并不总是可行。常见做法是用 C2000 的 CLB(可配置逻辑块)产生 BiSS 时钟,并用 SPI 或 GPIO 采样数据线,再在软件中做 CRC 校验。如果编码器支持标准 SPI 兼容模式,也可以把 BiSS 当作 SPI 从机来读,但需要确认帧长和 CRC 位置。
EnDat 2.2 通常不直接在 C2000 的 SPI 上实现,因为它的命令帧和响应帧之间有严格的时序要求,且需要处理模式切换。工程上更常见的方案是使用专用的 EnDat 协议芯片(如 iC-Haus 或海德汉的接口芯片),C2000 通过 SPI 或并行总线读取已经解析好的位置值。这样做的代价是增加一颗芯片和若干引脚,但换来了确定性的时序和完整的诊断信息。
Tamagawa 协议在 C2000 上可以用 SCI 或 SPI 加 RS-485 收发器实现。主机先拉低方向控制引脚发送请求帧,然后释放总线并切换为接收,等待编码器返回响应帧。响应帧中包含绝对位置、多圈计数和 CRC。由于 Tamagawa 的帧长固定,可以在 SCI 接收中断中按字节解析,也可以用 DMA 搬运整帧后统一处理。方向控制引脚的切换时机非常关键,过早会截断编码器响应,过晚会影响下一帧的请求间隔。
三、选型对比与判断依据
选型时不要只看协议名称,而要从四个维度判断:刷新率、分辨率、诊断需求和系统成本。SSI 的刷新率最高可以做到 10 MHz 时钟,但只有位置数据,没有 CRC,适合对成本敏感、干扰较小的场合。BiSS-C 在相近的时钟频率下增加了 CRC 和寄存器访问,适合需要在线诊断和参数调整的伺服系统。EnDat 2.2 的功能最完整,支持位置、参数、诊断和功能安全,但需要外部协议芯片,BOM 成本和 PCB 面积都会增加。Tamagawa 在亚洲伺服市场生态成熟,多圈绝对位置和 CRC 都有,接口实现难度适中,是很多国产伺服驱动器的默认选择。
另一个容易被忽略的因素是编码器与 C2000 之间的线缆长度和电磁环境。RS-422 和 RS-485 差分信号在几米到几十米范围内都能可靠工作,但如果线缆超过 20 米,建议降低时钟频率并增加共模扼流圈。对于 EnDat 和 BiSS,时钟频率越高,对线缆和收发器的要求也越高。在样机阶段,可以先用较低频率(例如 1 MHz)验证协议解析是否正确,再逐步提高频率观察 CRC 错误率。
| 维度 | SSI | BiSS-C | EnDat 2.2 | Tamagawa |
|---|---|---|---|---|
| 位置数据 | 单圈/多圈 | 单圈/多圈 | 单圈/多圈 | 单圈/多圈 |
| CRC 校验 | 无 | 有 | 有 | 有 |
| 寄存器访问 | 不支持 | 支持 | 支持 | 有限支持 |
| C2000 接口复杂度 | 低 | 中 | 高(需外部芯片) | 中 |
| 典型时钟频率 | 1–10 MHz | 1–10 MHz | 1–8 MHz | 2.5–10 MHz |
| 适用场景 | 低成本单圈 | 高刷新率伺服 | 高端功能安全 | 亚洲伺服多圈 |
四、一个可复用的接入检查清单
在把编码器接到 C2000 之前,建议按以下顺序逐项确认,避免在调试阶段反复排查:
- 确认编码器协议版本和帧长,例如 SSI 是 24 位还是 25 位,BiSS-C 的 CRC 多项式是哪个。
- 确认电气接口:RS-422 全双工还是 RS-485 半双工,是否需要方向控制引脚。
- 确认 C2000 侧使用的外设:SPI、SCI 还是 CLB,引脚分配是否与收发器匹配。
- 确认时钟极性和相位,用示波器同时观察时钟和数据线,确保采样点落在数据稳定区。
- 确认 CRC 或校验和的计算方式,并在代码中单独实现一个校验函数,先用已知帧验证。
- 确认多圈数据的拼接方式,避免单圈回绕时多圈计数错误。
- 确认故障处理策略:CRC 错误时是保持上一次位置、报警还是切换到安全状态。
完成以上检查后,可以先用低速时钟读取位置,手动转动编码器轴,观察位置值是否单调变化。如果出现跳变,优先检查 CRC 错误计数和原始帧缓冲区,而不是直接怀疑编码器损坏。大多数接入问题都出在时钟相位、方向控制时机或 CRC 解析上,而不是编码器本身。