Edit online

功能描述

Edit online

正交解码

通过寄存器字段 QEP_DEC_CNT_MODE,可配置解码器的以下几种解码方式:

  • QEP_DEC _CNT_MODE = 0x0,正交计数解码

  • QEP_DEC _CNT_MODE = 0x1,方向计数解码

  • QEP_DEC _CNT_MODE = 0x2,递增计数解码

  • QEP_DEC _CNT_MODE = 0x3,递减计数解码

  • QEP_DEC _CNT_MODE = 0x4,高有效 CW/CCW 计数解码

  • QEP_DEC _CNT_MODE = 0x5,低有效 CW/CCW 计数解码

正交计数解码

正交计数解码方式,外部信号 QEP_A 和 QEP_B 输入为正交信号,根据 QEP_A 与 Q_EPB 的信号的相位信息解析出提供后续解码计数器的步进信号 QEP_CLK 以及步进方向信号 QEP_DIR,如正交计数解码所示。



1. 正交计数解码

另外正交计数解码还具有以下的功能:

  • 相位异常检测:输入的 QEP_A 以及 QEP_B 的相位不符合正常的相位跳转模式,则产生正交信号异常的中断信号 QEP_QUADPH_ERR;

  • 互换功能:通过寄存器字段 QEP_SWAP_AB 配置为 1, 可将 QEP_A 和 QEP_B 的输入信号互换。

方向计数解码

方向计数解码方式,则无需经过正交信号的解码,外部信号 QEP_A 和 QEP_B 输入分别作为时钟信号 QEP_CLK 和方向信号 QEP_DIR,QEP_DIR 决定计数的方向,QEP_CLK 用于控制计数的步进。 默认的配置下 (即输入信号的极性未进行方向反相),QEP_DIR 为高电平的时候,表示正交计数器进行递增计数,QEP_DIR 为低电平的时候,表示正交计数器进行递减计数。 另外 QEP_A 的信号可以配置为上升沿触发一次 QEP_CLK 有效边沿,或上下沿均可触发一次的 CLK 有效边沿。



递增/递减计数解码

内部信号 QEP_DIR 固定选定为递增/递减的方向,此时只需 QEP_A 的输入信号,而 QEP_B 信号无效。另外 QEP_A 的信号可以配置为上升沿触发一次 QEP_CLK 有效边沿,或上下沿均可触发一次的 QEP_CLK 有效边沿。

CW/ CCW 计数解码

CW/ CCW 计数解码方式包括高有效的 CW/ CCW 解码计数和低有效的 CW/ CCW 解码计数:

  • 高有效的 CW/CCW 解码方式



    高有效是指低电平为无效电平,高电平为有效电平,当从低电平跳至高电平产生的上升边沿为有效边沿。若此有效边沿出现在 QEP_A 信号,即 CW 信号,那么则位置计数器正向加 1;若此有效边沿出现在 QEP_B 信号,即 CCW 信号,那么则位置计数器反向减 1。

    另外如若出现 QEP_A 和 QEP_B 同时处于有效电平高电平时,则产生 CW/ CCW 错误中断信号,QEP_CW_CCW_ERR_INT。

  • 低有效的 CW/CCW 解码方式



    低有效是指高电平为无效电平,低电平为有效电平,当从高电平跳至低电平产生的下降边沿为有效边沿。若此有效边沿出现在 QEP_A 信号,即 CW 信号,那么则位置计数器正向加 1;若此有效边沿出现在 QEP_B 信号,即 CCW 信号,那么则位置计数器反向减 1。

    另外如若出现 QEP_A 和 QEP_B 同时处于有效电平低电平时,则产生 CW/CCW 错误中断信号,QEP_CW_CCW_ERR_INT。

输入反相

QEP 模块的输入信号 QEP_A、QEP_B、QEP_I 和 QEP_S,均可以通过寄存器配置相应的输入反相器是否使能。使能后,输入信号为低有效信号。

输入 QEP_IGATE

输入 QEP 模块的输入信号 QEP_I 可以通过寄存器字段 QEP_IGATE 配置是否需要使能信号 QEP_S 对 QEP_I 进行 Gate 处理,处理方式如下图。



位置比较输出

QEP Position Counter Function 模块输出的信号 QEP_SOUT 信号,是位置计数器达到寄存器 QEP_POS_CNT_CMPV 时所产生的脉冲信号,该信号输出至正交解码模块,这里可以通过寄存器字段 QEP_SYNC_OUT_PIN 选择,使能输出为 QEP_I 或 QEP_S 信号。

QEP 模块的信号 QEP_A、QEP_B 为外部输入信号,支持输入信号的滤波。而 QEP 模块的信号 QEP_I、QEP_S 为双向信号,当设置为输入信号时,支持输入信号的滤波。

输入滤波

输入滤波功能,主要是用于滤除噪音信号,功能描述可以参考 EPWM 模块的输入滤波章节描述。

Edit online

正交位置计数功能

功能框图



正交位置计数器有四种复位模式,可通过寄存器字段 QEP_POS_CNT_RST 配置:

  • 复位模式 1:QEP_IDX_MKR 信号复位位置计数器,即只要出现 QEP_IDX_MKR 信号,正交位置计数器则进行一次复位:
    注: 复位模式 1 下,会进行锁存值的判断检测。
    • 若为正向前进,复位值为 0。

      锁存值的判断检测:在正向前进的情况下,如果 MKR 信号触发写入寄存器 QEP_POS_CNT_ICAPV 的数值与 QEP_POS_CNT_EPV 数值不一致,则 QEP_POS_CNT_ERR_FLG 置 1 且 QEP_POS_CNT_ERR_INT_FLG 置 1,表示产生位置计数的错误。

    • 若为反向前进,复位值为终点值 QEP_POS_CNT_EPV。
    QEP_IDX_MKR 信号是表示位置回到 0 点位置。QEP_IDX_MKR 信号的产生与输入管脚信号 QEP_I 有关。以下三张示例图片分别描述了三种不同 QEP_I 输入信号所对应的 QEP_IDX_MKR 复位位置寄存器,其中位置寄存器的计数采用十六进制表示。
    • QEP_IDX_MKR 信号复位位置计数:



    • QEP_IDX_MKR 信号复位位置计数 (A Gated QEP_I):



    • QEP_IDX_MKR 信号复位位置计数 (A & B Gated QEP_I)



  • 复位模式 2,QEP_POS_CNT_EP 信号复位位置计数。

    QEP_POS_CNT_EP 信号表示位置计数器发生计数溢出的信号:
    • 递增计数时,当计数达到 QEP_POS_CNT_EPV 时,复位计数器数值为 0,同时产生 QEP_POS_CNT_OVFL 中断信号,指示位置计数器计数上溢出。
    • 递减计数时,当计数达到 0 时,复位计数器数值为 QEP_POS_CNT_EPV,同时产生 QEP_POS_CNT_UNFL 信号,指示计数器计数下溢出。

    由于后续不会再产生 QEP_FIDX_MKR 信号,后续的位置计数器则通过 QEP_POS_CNT_EP 信号复位,即按照模式 2 进行复位。

  • 复位模式 3,QEP_FIDX_MKR 信号复位位置计数。QEP_FIDX_MKR 信号,为 QEP 模块使能后第一次检测到的 QEP_IDX_MKR 信号。

    此模式下,位置计数器会在 QEP_FIDX_MKR 信号进行复位:
    • 如果为正向前进,复位至 0。
    • 如果为反向则复位至 QEP_POS_CNT_EPV。
  • 复位模式 4,QEP_TMR_TO 信号复位位置计数。QEP_TMR_TO 信号,为 QEP 定时器超时产生的信号。

    此模式下,位置计数器会在 QEP_TMR_TO 超时信号进行复位:
    • 如果为正向前进,复位至 0
    • 如果为反向,复位至 QEP_POS_CNT_EPV。

正交位置计数器的捕获

位置计数器的捕获支持两种,Index 相关事件触发的捕获以及 Strobe 相关事件触发的捕获。

  • Index 相关事件的触发捕获,通过寄存器可选择触发捕获位置计数器的 Index 事件。

    QEP_POS_ICAP_MOD = 0x1,使能 QEP_IDX 信号的上升沿触发捕获位置计数器,位置计数值 QEP_POS_CNT_V 写入 ICAPV。

    QEP_POS_ICAP_MOD = 0x2,使能 QEP_IDX 信号的下降沿触发捕获位置计数器,位置计数值 QEP_POS_CNT_V 写入 ICAPV。

    QEP_POS_ICAP_MOD = 0x3,使能 MKR 信号触发捕获位置计数器,位置计数值 QEP _POS_CNT_V 写入 ICAPV。

  • Strobe 相关事件的触发捕获,通过寄存器可选择触发捕获位置计数器的 Strobe 事件。

    QEP_POS_SCAP_MOD = 0x0,使能 SRB 信号的上升沿触发捕获位置计数器,位置计数值 QEP_POS_CNT_V 写入 SCAPV。

    QEP_POS_SCAP_MOD = 0x1,使能根据方向进行捕获。正向前进时,以 SRB 上升沿进行捕获,反向前进时,以 SRB 下降沿进行捕获,位置计数值 QEP_POS_CNT_V 写入 SCAPV。

正交位置计数器的初始化

位置计数器的初始化,即更新当前位置计数器的计数值,支持三种模式的初始化:

  • Index 相关事件的初始化,通过寄存器可选择触发位置计数器初始化的 Index 事件。

    QEP_POS_IDX_INIT = 0x2,使能 IDX 信号的上升沿触发位置计数器的初始化,位置起点值 SPV 写入位置计数器。

    QEP_POS_IDX_INIT = 0x3,使能 IDX 信号的下降沿触发位置计数器的初始化,位置起点值 SPV 写入位置计数器。

  • Strobe 相关事件的初始化,通过寄存器可选择触发位置计数器初始化的 Strobe 事件。

    QEP_POS_SRB_INIT = 0x2,使能 SRB 信号的上升沿触发位置计数器的初始化,位置起点值 SPV 写入位置计数器。

    QEP_POS_SRB_INIT = 0x3,使能 SRB 信号的下降沿触发位置计数器的初始化,位置起点值 SPV 写入位置计数器。

  • 软件初始化,寄存器 INIT 字段置 1 可触发位置计数器初始化,位置起点值 SPV 写入位置计数器。

QEP_SOUT 信号

QEP_SOUT 信号,为位置计数器达到 QEP_POS_CNT_CMPV 的时候产生的信号,仅在 QEP_POS_CMP_EN = 1 时产生。QEP_SOUT 信号支持极性的控制,以及脉宽长度的调节。

寄存器 QEP_POS_CNT_CMPV 的更新方式支持立即更新以及影子更新模式。影子更新的加载点也可以通过寄存器配置,具体配置见 QEP_POS_CMP_LP 和 QEP_POS_CMP_UPDT_MOD 的描述。

QEP_SOUT 信号的输出方式见位置比较输出章节。

Edit online

正交时间捕捉功能



时间捕捉功能的框图如上图所示,具体的功能描述如下:

  • SYS_CLK 信号,利用寄存器字段 DIV 进行分频,分频后提供给 Capture 定时器以及 Capture 控制。

  • QEP_CLK 信号,表示 1 次位置计数器的计数,经过 Unit Distance Control 功能模块对 QEP_CLK 进行分频,对应就可以获得单位距离的信号 QEP_UD_EVNT,下图为设定 QEP_SET_UDIST = 0x1,即 2 次 CLK 的对应产生一次的 EVNT。

  • QEP_UD_EVNT 信号,会触发 Capture 控制模块进行 Capture 定时器的数值捕获,进而计算与上次数值作差,写入 DELT 寄存器中,随后对 Capture 定时器进行复位至 0,如下图所示。

  • 通过 QEP_UD_EVNT 信号触发获得 QEP_CAP_DELT,对于电机的应用,可以实现 T 法的速度计算。

  • QEP_TMR_TO 信号,为 Timer 的超时信号 (可参考章节 QEP Timer),也可以触发寄存器 TMRV 锁存至 LH,而 DELT 锁存至 LH。

  • 通过 TO 信号触发读取 QEP_POS_TOCAP 的位置值,对于电机的应用,可以实现 M 法的速度计算。

  • QEP_DIR 输入至方向检测模块,此模块检测在 EVNT 的有效边沿间隔中是否出现方向改变的状态,若出现方向改变,QEP_CAP_DERR 信号置 1。

QEP Capture Timer 时间捕获:



Edit online

QEP Hall Monitor

QEP Hall Monitor 的功能用于检测三路管脚输入信号 QEP_HA0/ 1/ 2 的电平:

  • 三路输入信号均配有滤波模块,支持电路的硬件滤波。

  • 三路输入信号的电平可以通过寄存器 STS 读取,在寄存器字段配置 QEP_HALL_IN_POL = 0(正极性)的情况下,0 代表低电平,1 代表高电平,若为负极性则相反。

  • 三路的输入信号若由其中一路发生改变,则产生中断,读取状态寄存器 FLG 可以得出发生信号改变的通道号。

Edit online

QEP Timer

QEP Timer 的功能框图如下所示,当寄存器 V 的数值大于 QEP_TMR_PRD_V 时,产生 TO 超时信号。



Edit online

QEP Watchdog Timer

QEP Watchdog Timer 的功能框图如下所示,QEP_CLK 信号用于对看门狗定时器的复位,当无有效的 CLK 信号出现时,看门狗计时器一直计数,当 V 的数值大于 QEP_WDTMR_PRD_V 时,产生 TO 超时信号。



Edit online

中断

QEP 模块支持产生中断,通过寄存器可以使能以下的信号经过 OR 逻辑得出 QEP 模块的中断信号 QEP_INT:

  • QEP_TMRTO:指示 QEP 计数器超时的信号

  • QEP_ICAP:指示发生 Index 相关事件引起的捕获位置计数器的信号

  • QEP_SCAP:指示发生 Strobe 相关事件引起的捕获位置计数器的信号

  • QEP_POS_CMP:指示产生了位置比较信号

  • QEP_POS_CMP_RDY:指示位置比较寄存器 QEP_POS_CNT_CMPV 的数值需要更新

  • QEP_POS_CNT_OVFL:指示位置计数器发生上溢出的信号

  • QEP_POS_CNT_UDFL:指示位置计数器发生下溢出的信号

  • QEP_WDTO:指示看门狗计时器发生超时的信号

  • QEP_DIR_CHG:指示 QEP 的正交解析的方向信号发生了改变

  • QEP_QUADPH_ERR:指示 QEP 的正交解析的相位信号发生错误

  • QEP_POS_CNT_ERR:指示 QEP 的位置计数器计数出错的信号

  • QEP_CW_CCW_ERR_INT:指示 QEP 输入的 CW 和 CCW 信号出现异常

  • QEP_HALL_INT:QEP 霍尔输入中断信号,指示 QEP 输入霍尔信号 HA0/1/2 的通道中,至少存在一个通道发生输入信号的改变