Edit online

正交位置计数功能

16 Aug 2024
Read time: 2 minute(s)

功能框图



正交位置计数器有四种复位模式,可通过寄存器字段 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 信号的输出方式见位置比较输出章节。