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 发送件硬件触发命令,可选 EPWM 模块的 APWM_CVRC 或 APWM_CVRD 作为触发信号。
  • 状态寄存器:EDAT_IF 可以在状态寄存器中读取每次数据传输的情况。若触发下一次数据传输,状态寄存器自动清 0。
  • 看门狗定时器:对每次执行的命令进行超时检测。
  • 输入信号滤波:对于 DIO 接收的信号,支持硬件的滤波,用于滤除硬件电路的噪声,滤波精度支持 4.1 ns,对应采样时钟 240 MHz。
  • 单/ 多圈数据解析:通过配置寄存器,选择所需截取的数据,进而解析单/ 多圈数据。
  • 发送自动清空接收:使能后,即表示在触发发送命令的时刻清空上一次接收数据和接收状态。

指令表

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 发送件硬件触发命令。软件触发模式下,通过写寄存器触发 EDAT 进行命令发送。

硬件触发信号可以选择 EPWM 模块的 APWM_CVRC 或 APWM_CVRD。通过配置 EPWM 的周期,产生周期触发信号,可以控制 EDAT 进行周期发送命令。硬件模式和软件模式采用相同的寄存器控制发送和接收。

对寄存器字段 HW_TRG_EN 写 1 设置进入硬件触发模式。使能硬件触发模式后,如果需要退出硬件触发模式,则对寄存器字段 HW_TRG_EN 写 0。如果对字段 HW_TRG_EN 写 0 的时刻已经触发了一次命令的发送,需要等待当前的命令完成后才会退出硬件触发模式。在退出硬件触发模式的时刻,同时会产生退出硬件模式的状态,即 HW_TRIG_EXIT 标志,可以作为中断的信号源。

状态寄存器

每次数据帧传输完成后,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 receive reset (101010)
  • The mode command Encoder send parameter(100011)
  • The mode command Encoder receive parameter (011100)

单/ 多圈数据解析

EDT_IF 接收到的位置数据存放在 RECV1L 和 RECV1U[15:0],可以通过寄存器选择配置截取数据,进而解析单/ 多圈数据并存放至寄存器 DEC_ABS 和 DEC_ABM。

RECV1L 和 RECV1U[15:0] 的数据合并成 RXD_ALL[47:0],下图举例说明单圈数据裁剪的方式,以下是 ABS_DEC_ST_BIT = 0x2 (从 bit2 开始裁剪,包含 bit2),ABS_DEC_BIT_NUM = 0x7(裁剪的长度为 16-bit),裁剪后存入到 DEC_ABS 寄存器中。多圈数据的裁剪方式也与此一致。



发送自动清空接收

发送自动清空接收功能,即在触发发送命令的时刻清空上一次接收数据和接收状态。
  • 通过寄存器配置 STF_CLR_RXD_EN = 1,可以使能发送自动清空接收功能。
  • 如果 STF_CLR_RXD_EN 未使能,则仅在完成当前的命令后才更新接收数据和接收状态,而不会在触发发送命令时刻清空上一次的接收数据和接收状态。