Edit online

功能描述

速率

ENDAT-IF 时钟 CLK 频率支持 16 MHz/ 8 MHz/ 4MHz/ 2MHz/ 1MHz/ 200KHz/ 100KHz。

指令表

1. ENDAT-IF 支持指令表
模式指令 M2 M1 M0 (M2) (M1) (M0) TX Typ RX Typ
编码器发送位置 EnDat 2.1 EnDat 2.2 0 0 0 1 1 1 Typ1 Typ1
存储区选择 EnDat 2.1 EnDat 2.2 0 0 1 1 1 0 Typ2 Typ3
编码器接收参数 EnDat 2.1 EnDat 2.2 0 1 1 1 0 0 Typ2 Typ3
编码器发送参数 EnDat 2.1 EnDat 2.2 1 0 0 0 1 1 Typ2 Typ3
编码器接收复位 EnDat 2.1 EnDat 2.2 1 0 1 0 1 0 Typ1 Typ1
编码器发送位置值及附加信息 EnDat 2.2 1 1 1 0 0 0 Typ1 Typ1
编码器发送位置值和接收存储区选择 EnDat 2.2 0 0 1 0 0 1 Typ1 Typ2
编码器发送位置值并接收参数 EnDat 2.2 0 1 1 0 1 1 Typ1 Typ2
编码器发送位置值和参数 EnDat 2.2 1 0 0 1 0 0 Typ1 Typ1
编码器发送位置值并接收出错复位 EnDat 2.2 1 0 1 1 0 1 Typ1 Typ2

ENDAT-IF 通过寄存器可以配置不同的发送类型和接收类型,进而兼容 Endat 2.1/2.2 的命令的传输模式。

发送类型:

  • TX type1:只发送模式命令;

  • TX type2:发送模式命令 + 8-bit MRS + 16-bit Data。

接收类型:

  • RX type1:接收位置数据,其中在此类型当中,可以通过寄存器使能是否接收附加数据 1 和附加数据 2。另外为兼容 Endat2.1,可以通过寄存器配置错误位为 1-bit;

  • RX type2:接收位置数据 + 续发控制数据,在此类型中同样可以配置附加数据。另外在此模式下,trt 寄存器生效;

  • RX type3:接收控制类数据。

下面给出典型的命令控制例子:

Case1: TX type1 + RX type1 (未使能接收附加数据)

这里对于 RX 位置数据的 CRC,进行补充说明,位置数据的 CRC 的计算:

  • 计算的多项式为 x^5+x^3+x+1;

  • 计算的范围是从 F1 + F2(指令 000111 无此位) + Data;

  • 计算的初始值为 0x1F;

  • 最后计算的 CRC 结果需要取反;

  • 返回的 CRC 是 LSB 先发送。

Case2: TX type2 + RX type3

这里对于 RX 参数数据的 CRC,进行补充说明,参数的 CRC 的计算:

  • 计算的多项式为 x^5+x^3+x+1;

  • 计算的范围是 24-bit 参数;

  • 计算的初始值为 0x1F;

  • 最后计算的 CRC 结果需要取反;

  • 返回的 CRC 是 LSB 先发送。

Case3: TX type1 + RX type2 (未使能附加数据)

Case4: TX type1 + RX type1 (使能附加数据 2 和附加数据 1)

这里对于 RX 附加数据 的格式,进行补充说明:

其中附加数据的 CRC 的计算如下:

  • 计算的多项式为 x^5+x^3+x+1;

  • 计算的范围是 WRN + RM + Busy +8bit ACK+ 8-bit 地址 + 8-bit 数据;

  • 计算的初始值为 0x1F;

  • 最后计算的 CRC 结果需要取反;

  • 返回的 CRC 是 LSB 先发送。

连续模式

ENDAT-IF 支持连续模式,连续模式区别于正常模式,连续模式下在完成一次的位置数据获取后,时钟并不会停止,而是持续输出时钟信号,那么编码器则会一直输出新的位置数据。通过这样的模式,主控可以持续获得最新的位置数据。

如下图所示为命令 000111 的连续模式 下工作时序图。

连续模式下,每完成一次的位置信息获取,都会产生一次的 RXEND 状态,若出现异常状态,可以通过寄存器配置,配置是继续进行下一次的位置信息获取,或停止位置信息获取操作。

状态寄存器

ENDAT-IF 每次的数据帧传输完成后,均可以在状态寄存器读取本次数据传输的情况,若触发下一次数据传输,状态寄存器自动清 0。

通过寄存器配置,可以配置 WDG 和 RXEND 状态产生中断信号,也就是每次数据发生传输超时可以触发中断,传输完成可以触发中断。

如下状态寄存器列表中各状态位对应信息:

2. 状态寄存器
符号 说明
RX1 RECV1 接收到数据
RX2 Additional data 2 has been received, 接收到附加信息 2
RX3 Additional data 1 has been received, 接收到附加信息 1
F1 Fault 1 data is an invalid value, 数据是无效值
F2 Fault 2 data is an invalid value, 数据是无效值
CRC1 CRC error for the data to be stored in the RECV1 is detected, RECV1 接收到的数据存在 CRC 错误
CRC2 CRC error for additional data 1, 附加信息 1 存在 CRC 错误
CRC3 CRC error for additional data 2, 附加信息 2 存在 CRC 错误
MRSADR MRS code/address error is detected, MRS 代码或地址错误
BUSY Either one of the BUSY bits of additional data 1 and additional data 2 is 1, 附加信息 1 或 2 存在 BUSY = 1
RM Either one of the RM bits of additional data 1 or additional data 2 is 1, 附加信息 1 或 2 存在 RM = 1
WRN Either one of the WRN bits of additional data 1 or additional data 2 is 1, 附加信息 1 或 2 存在 WRN = 1
WDG An error is detected by the watchdog timer, 看门狗超时异常
RXEND Reception is completed, 接收完成
MBERR Mode bit value error is detected, Mode 比特错误

看门狗定时器

EnDat 支持看门狗定时器,对每次执行的命令进行超时检测,从写 STRB 寄存器开始到传输完成,如果时间超过所设置的时间,那么 WDG 比特置 1,并且 EnDAT 接口将会忽略此次的命令执行情况,停止看门狗,DE 信号强制为低电平,停止时钟和数据信号,等待 30ms。

30ms 后,检测 DIO 的电平,当 DIO 为低并且持续超过 tR(协议约定最大 500ns)的时间后,重新进入空闲状态,等待下一次命令触发。

另外,需注意看门狗超时检测的功能不支持以下的命令:

  • The mode command Encoder send position values when continuous mode is enabled.(连续模式)
  • The mode command Encoder receive reset (101010)
  • The mode command Encoder send parameter(100011)
  • The mode command Encoder receive parameter (011100)

输入信号滤波

对于 DIO 接收的信号,支持硬件的滤波,用于滤除硬件电路的噪声,滤波精度支持 4.1ns(采样时钟 240MHz)。

硬件电流环交互

EDT_IF 接收到的位置数据存放在 L 和 RECV1U[15:0],可以通过寄存器选择配置截取数据存放至寄存器 POS。

下图用 ABS_POS 裁剪举例说明数据裁剪的方式,以下是 ABS_POS_CB = 0x2 (从 bit2 开始裁剪,包含 bit2),ABS_POS_SIZE = 0xF(裁剪的长度为 16-bit)。

另外 IF 需要将每次数据传输的异常状态输出至硬件电流环模块,反馈编码器的数据读取出现异常。

这里的异常状态可以通过寄存器配置,选择需要关心的异常状态信号,最后通过 OR 逻辑输出至电流环模块。