Edit online

功能描述

Read time: 5 minute(s)
ENDAT_IF 绝对值编码器接口支持下列模式和功能:
  • 速率: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 将每次数据传输的异常状态输出至硬件电流环模块,反馈编码器的数据读取出现异常。

指令表

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,可以通过寄存器 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 状态产生中断信号,也就是每次数据发生传输超时可以触发中断,传输完成可以触发中断。

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

2. 状态寄存器状态位描述
符号 说明
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 裁剪举例说明数据裁剪的方式:
  • ABS_POS_CB = 0x2:从 bit2 开始裁剪,包含 bit2
  • ABS_POS_SIZE = 0xF:剪的长度为 16 bits


ENDAT_IF 将每次数据传输的异常状态通过 OR 逻辑输出至硬件电流环模块,反馈编码器的数据读取出现异常。异常状态可以通过寄存器配置,选择需要输出至硬件电流环模块的异常状态信号。