Edit online

功能描述

3 Mar 2025
Read time: 4 minute(s)
EDAT_IF 绝对值编码器接口支持下列模式和功能:
  • 速率:EDAT_IF 时钟 CLK 频率支持 16 MHz/ 8 MHz/ 4 MHz/ 2 MHz/ 1 MHz/ 200 KHz/ 100 KHz。
  • 发送类型和接收类型指令:关于详细的指令描述和典型命令控制示例,查看指令表
  • 连续模式:在完成一次位置数据获取后,时钟并不会停止,而是持续输出时钟信号,编码器则会一直输出新的位置数据。
  • 状态寄存器:EDAT_IF 可以在状态寄存器中读取每次数据传输的情况。若触发下一次数据传输,状态寄存器自动清 0。
  • 看门狗定时器:对每次执行的命令进行超时检测。
  • 输入信号滤波:对于 DIO 接收的信号,支持硬件的滤波,用于滤除硬件电路的噪声,滤波精度支持 4.1 ns,对应采样时钟 240 MHz。
  • 硬件电流环交互: EDAT_IF 将每次数据传输的异常状态输出至硬件电流环模块,反馈编码器的数据读取出现异常。

指令表

1. EDT_IF 支持指令表

模式指令

TX Typ

RX Typ

编码器发送位置

Typ1

Typ1

存储区选择

Typ2

Typ3

编码器接收参数

Typ2

Typ3

编码器发送参数

Typ2

Typ3

编码器接收复位

Typ1

Typ1

编码器发送位置值及附加信息

Typ1

Typ1

编码器发送位置值和接收存储区选择

Typ1

Typ2

编码器发送位置值并接收参数

Typ1

Typ2

编码器发送位置值和参数

Typ1

Typ1

编码器发送位置值并接收出错复位

Typ1

Typ2

EDAT_IF 通过寄存器可以配置不同的发送类型和接收类型。
  • 发送类型:

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

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

  • 接收类型:
    • RX type1:接收位置数据,可通过寄存器使能是否接收此类型数据的附加数据 1 和附加数据 2。

      可以通过寄存器 RX_ERR_WIDTH 配置错误位为 1-bit 或者 2-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 先发送。

连续模式

EDAT_IF 支持连续模式,与正常模式不同,连续模式下在完成一次的位置数据获取后,时钟并不会停止,而是持续输出时钟信号,因此编码器会一直输出新的位置数据。连续模式下,主控可以持续获得最新的位置数据。

在连续模式 下,命令 000111 的工作时序如下图所示:



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

状态寄存器

每次数据帧传输完成后,EDAT_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 比特错误

看门狗定时器

EDAT_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)

硬件电流环交互

EDAT_IF 接收到的位置数据存放在 RECV1L 和 RECV1U[15:0],可以通过寄存器配置,选择将截取数据存放至寄存器 0x0050 ABS_POS

下图用 ABS_POS 裁剪举例说明数据裁剪的方式:
  • ABS_POS_CB = 0x2:从 bit2 开始裁剪,包含 bit2
  • ABS_POS_SIZE = 0xF:剪的长度为 16 bits


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