功能描述
- 速率:ENDAT_IF 时钟 CLK 频率支持 16 MHz/ 8 MHz/ 4 MHz/ 2 MHz/ 1 MHz/ 200 KHz/ 100 KHz。
- 发送类型和接收类型指令:关于详细的指令描述和典型命令控制示例,查看指令表。
- 连续模式:在完成一次位置数据获取后,时钟并不会停止,而是持续输出时钟信号,编码器则会一直输出新的位置数据。
- 状态寄存器:ENDAT_IF 可以在状态寄存器中读取每次数据传输的情况。若触发下一次数据传输,状态寄存器自动清 0。
- 看门狗定时器:对每次执行的命令进行超时检测。
- 输入信号滤波:对于 DIO 接收的信号,支持硬件的滤波,用于滤除硬件电路的噪声,滤波精度支持 4.1 ns,对应采样时钟 240 MHz。
- 硬件电流环交互: 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 |
-
发送类型:
-
TX type1:只发送模式命令。
-
TX type2:发送模式命令 + 8-bit MRS + 16-bit Data。
-
-
接收类型:
-
RX type1:接收位置数据,可通过寄存器使能是否接收此类型数据的附加数据 1 和附加数据 2。
为兼容 EnDat2.1,可以通过寄存器 RX_ERR_WIDTH 配置错误位为 1-bit。
-
RX type2:接收位置数据 + 续发控制数据,可通过寄存器使能是否接收此类型数据的附加数据 1 和附加数据 2。
在此模式下,trt 寄存器生效。
-
RX type3:接收控制类数据。
-
-
Case1: TX type1 + RX type1,未使能接收附加数据
对于 RX 位置数据的 CRC,计算说明如下:-
计算的多项式为 x5+x3+x+1。
-
计算的范围是从 F1 + F2 (指令 000111 无 F2)+ Data。
-
计算的初始值为 0x1F。
-
最后计算的 CRC 结果需要取反。
-
返回的 CRC 是 LSB 先发送。
-
-
Case2: TX type2 + RX type3
对于 RX 参数数据的 CRC,计算说明如下:-
计算的多项式为 x5+x3+x+1。
-
计算的范围是 24-bit 参数。
-
计算的初始值为 0x1F。
-
最后计算的 CRC 结果需要取反。
-
返回的 CRC 是 LSB 先发送。
-
-
Case3: TX type1 + RX type2 (未使能附加数据)
-
Case4: TX type1 + RX type1 (使能附加数据 2 和附加数据 1)
对于 RX 附加数据格式,补充说明如下图所示:
其中,附加数据的 CRC 的计算方式如下:-
计算的多项式为 x5+x3+x+1。
-
计算的范围是 WRN + RM + Busy +8bit ACK+ 8-bit 地址 + 8-bit 数据。
-
计算的初始值为 0x1F。
-
最后计算的 CRC 结果需要取反。
-
返回的 CRC 是 LSB 先发送。
-
连续模式
ENDAT_IF 支持连续模式,与正常模式不同,连续模式下在完成一次的位置数据获取后,时钟并不会停止,而是持续输出时钟信号,因此 ENDAT_IF 编码器会一直输出新的位置数据。连续模式下,主控可以持续获得最新的位置数据。
在连续模式 下,命令 000111 的工作时序如下图所示:
连续模式下,每完成一次位置信息获取,都会产生一次 RXEND 状态。若出现异常状态,可以通过寄存器配置为继续进行下一次位置信息获取或停止位置信息获取。
状态寄存器
每次数据帧传输完成后,ENDAT_IF 均可以在状态寄存器中读取本次数据传输的情况,若触发下一次数据传输,状态寄存器自动清 0。
通过寄存器配置,可以配置 WDG 和 RXEND 状态产生中断信号,也就是每次数据发生传输超时可以触发中断,传输完成可以触发中断。
状态寄存器列表中各状态位对应信息如下:
符号 | 说明 |
---|---|
RX1 | RECV1 接收到数据 |
RX2 | 接收到附加信息 2 |
RX3 | 接收到附加信息 1 |
F1 | 数据是无效值 |
F2 | 数据是无效值 |
CRC1 | RECV1 接收到的数据存在 CRC 错误 |
CRC2 | 附加信息 1 存在 CRC 错误 |
CRC3 | 附加信息 2 存在 CRC 错误 |
MRSADR | MRS 代码或地址错误 |
BUSY | 附加信息 1 或 2 存在 BUSY = 1 |
RM | 附加信息 1 或 2 存在 RM = 1 |
WRN | 附加信息 1 或 2 存在 WRN = 1 |
WDG | 看门狗超时异常 |
RXEND | 接收完成 |
MBERR | Mode 比特错误 |
看门狗定时器
ENDAT_IF 支持看门狗定时器,对每次执行的命令进行超时检测。如果从写 STRB 寄存器开始到传输完成所需的时间,超过所设置的时间,WDG 比特会置 1。
- 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)
硬件电流环交互
ENDAT_IF 接收到的位置数据存放在 RECV1L 和 RECV1U[15:0],可以通过寄存器配置,选择将截取数据存放至寄存器 0x0050 ABS_POS。
- ABS_POS_CB = 0x2:从 bit2 开始裁剪,包含 bit2
- ABS_POS_SIZE = 0xF:剪的长度为 16 bits
ENDAT_IF 将每次数据传输的异常状态通过 OR 逻辑输出至硬件电流环模块,反馈编码器的数据读取出现异常。异常状态可以通过寄存器配置,选择需要输出至硬件电流环模块的异常状态信号。