这篇主要是介绍一下BISS编码器协议,以及TI的对于绝对值编码器的方案。主要针对BISS的是线路延迟补偿的一些介绍。顺便一提,有一说一,TI的文档写的全,还细致。
关于SSI的绝对值编码器协议可以看这里:
SSI编码器通信
首先简单的介绍一下BISS的编码器协议。
它和SSI的硬件一样,兼容SSI接口。为了通信速度更快,BISS加入了传播延迟的补偿功能。又怕数据出错,加入的数据诊断CRC校验。在SSI只能单向通信的情况,那BISS又有了双向通信,可以对编码器进行设置。并且不满足点对点的通信,那又有组网功能。所以其特点:
- 高速通信
- 低时延且固定
- 延迟补偿
- 数据诊断(crc)
- 双向通信
- 组网能力
在TI文档:《Universal Digital Interface to Absolute Position Encoders》中有表进行了几个编码器的对比:
线路延迟
TI文档《Interface to a 5-V BiSS® Position Encoder》有描述线缆的长度和信号传输的延迟关系。
电缆对较长电缆长度的传播延迟有显着贡献,这远远超过了 RS485 收发器的传播延迟。电缆的传播延迟取决于电缆的电气参数,根据经验,大约使用 5 ns/m。
理想情况下,传播延迟与相对介电常数εr和相对磁导率μr的平方根成反比。 对于PVC,在1 MHz时的相对介电常数εr约为4至4.5。 假设µr约为1,则传播速度为0.3 / sqrt(4)[m / ns] = 0.15 [m / ns]。 倒数是6.6 ns / m
而1M的时钟,其一个时钟单位才1us。要是10M的时钟,一个时钟单位100ns。
BISS的线路延迟补偿原理
BISS-C的ACK提供了可以检测准确延迟的机制。BiSS主设备以时钟MA开始传输帧。 MA的第一个上升沿用于从站的同步。 随着MA的第二个上升沿,从机将SLO线设置为0并生成一个确认信号(Ack)。
延迟补偿原则:
从时钟脉冲MA到SL信号输入的总信号延迟可以分别由主机检测和补偿。 为了确定线路延迟,主机测量从第二个MA上升沿到从机响应的Ack位(SL:Ack)下降沿的延迟。
TI的方案
这《适用于 C2000™ MCU 的 BiSS-C 绝对编码器主接口参考设计》这个文档中有详细的介绍:
这个文档中有TI对于biss的通信库的介绍,TI的 control suit里面还有这几种编码器通信的库,以及例程。
ti使用c2000系列的F28379D,它带有可编程逻辑块。
这个模块能让多个外设共同协调,配置,计算相关值。以下是内部实现图:
其原理大致:
利用了两路PWM,SPI,和INNPUT XBAR 以及CLB,四个外设。
- PWMB是作为SPI从机的时钟
- PWMA是作为编码器的MASTER,
- 其接受数据还是用的SPI的外设,不过是作为从机。两路PWM即是为了检测到线延迟,进行相位时间的调整。
- Ack的检测即是图中INNPUT XBAR监测SPISIMO来确定时间。
- 可编程逻辑块就是把pwm模块,spi模块,INNPUT XBAR把他们连接起来。
mcu对于BISS的开发
提到MCU开发BISS的难点:
随着MCU的发展,对于电机控制类的MCU,很有可能会开发加上对于这些绝对值编码器的外设。可能在一些驱动器产品中就可以省去一片FPGA或者CPLD。我也确实看到的有MCU介绍,去集成这种外设:
反正牛逼就是了。