指令表
如下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先发送。