功能描述
速率
ENDAT-IF 时钟 CLK 频率支持 16 MHz/ 8 MHz/ 4MHz/ 2MHz/ 1MHz/ 200KHz/ 100KHz。
指令表
模式指令 | 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 状态产生中断信号,也就是每次数据发生传输超时可以触发中断,传输完成可以触发中断。
如下状态寄存器列表中各状态位对应信息:
符号 | 说明 |
---|---|
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 逻辑输出至电流环模块。