1、SSI接口
编码器数据传输一般采用串行通讯的方式,常用的协议有Biss,SSI,EnDat,Hiperface以及起止式异步协议。SSI全称为同步串行接口( Synchronous Serial interface ),是一种广泛使用的位置传感器之间的串行接口和一个控制器。
SSI是RS-422上的单向串行协议。单向时钟由主频产生,并从80khz指定到2mhz。接收数据也是单向的,SSI不支持传播延迟补偿。SSI接口的电气连接标准是差分四线制,即时钟+、时钟-、数据+、数据-,如图所示。虽然SSI 接口在电气特性上可以直接采用 RS422/485 的通信方式,但对于SSI 协议的逻辑控制,需要根据相应的时序编写软件程序实现逻辑操作。

SSI协议时序图如图 所示,SSI 协议采用主动接收方式,由SSI 数据接收模块主动发送同步时钟,从最高位(MSB)开始传送。数据发送方在检测到同步时钟的第一个下降沿时,在t1( t1>0.45us )时间内准备需要发送的数据,随后在同步时钟的每一个上升沿发送一位数据,至数据发送完后,拉低数据输出端,延时t 3(13us < t 3*<* 25us)时间之后,拉高数据输出端,等待下一次同步时钟的到来,再次发送数据。发送同步时钟的个数取决于数据发送方需要传送数据的位数。另外,当通信双方不传输数据时,同步时钟信号和数据信号均保持高电平。

T =1 ~ 10us ,t 1>0.25us ,t 2>0.35us ,t 3=12 ~ 25us ,n为传输位数。其中, SSI通信接口数据通讯的速率由同步时钟信号的频率所决定,本课题所研究SSI 通信接口同步时钟频率80kHz-2MHz。
在工控系统中,绝对值编码器SSI信号的正确读取是非常重要的,而单片机一般没有对应的SSI接口。过去多数情况下,微控制器都是用CPLD或者FGPA实现SSI绝对值编码器数据读取。该方法的缺点是需要增加CPLD或者FGPA相关电路的器件成本和电路尺寸,实现成本较高。也有采用2个IO口模拟SSI通信协议来实现编码器数据读取,但这种模拟方法会给软件上增加成本。此外,还可以利用单片机集成的SPI,对SSI通信协议进行模拟,来实时读取输出信号。
2、SSI接口硬件设计
以STM32系列MCU作为接收信号的芯片,基于SPI的绝对值编码器SSI接口读出方法的设计框图。SSI接口出来的是两组422差分数字信号,经过SN65HVD78逻辑电平转换电路,转换成两组可以让STM32系列芯片识别的单端信号,与芯片SPI接口的两个端子MISO和SCK对接,通过软件解析SPI接收到的SSI信号,从而完成对编码器输出信号的读取工作。

由于SPI每一帧数据是8位或者16位的,需要根据绝对值编码器的位数选择合适的数据帧格式进行设置。由于只需要接收SSI的信号,可以配置SPI为单工只接收通信模式。设置SPI为主机模式,发送的时钟脉冲频率配置在SSI时钟脉冲频率范围内,并通过CPOL=1以及CPHA=0来设置SPI工作在第1种时序模式。实现编码器读取:
