正交位置计数功能
功能框图

正交位置计数器的复位
通过寄存器字段 QEP_POS_CNT_RST,配置正交位置计数器四种复位模式:
复位模式1:QEP_IDX_MKR 信号复位位置计数器。
QEP_IDX_MKR 信号是表示位置回到0点位置,QEP_IDX_MKR 信号的产生与输入管脚信号 QEP_I有关,下面三图给出了三种不同 QEP_I输入信号对应的采用 QEP_IDX_MKR 复位位置寄存器的例子,其中位置寄存器的计数表示采用的是十六进制。
在复位模式1下,只要出现 QEP_IDX_MKR 信号,正交位置计数器则进行一次复位,若为正向前进,那么复位值为0;若为反向前进,则复位值为终点值 QEP_POS_CNT_EPV。
另外在此模式下,会进行锁存值的判断检测,在正向前进的情况下,如果QEP_IDX_MKR信号触发写入寄存器 QEP_POS_CNT_ICAPV 的数值与 QEP_POS_CNT_EPV数值不一致,那么 QEP_POS_CNT_ERR_FLG 置1 以及 QEP_POS_CNT_ERR_INT_FLG 置 1,表示产生位置计数的错误。
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信号,指示计数器计数下溢出。
-
复位模式3,QEP_FIDX_MKR信号复位位置计数。QEP_FIDX_MKR信号,为QEP模块使能后第一次检测到的QEP_IDX_MKR信号。
此模式下,位置计数器会在QEP_FIDX_MKR信号进行复位,如果为正向前进,那么复位至0,如果为反向则复位至QEP_POS_CNT_EPV。由于后续不会再产生QEP_FIDX_MKR信号,后续的位置计数器复位,通过QEP_POS_CNT_EP信号复位,即按照模式2进行复位。
-
复位模式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写入QEP_POS_CNT_ICAPV。
QEP_POS_ICAP_MOD = 0x2,使能QEP_IDX信号的下降沿触发捕获位置计数器,位置计数值QEP_POS_CNT_V写入QEP_POS_CNT_ICAPV。
QEP_POS_ICAP_MOD = 0x3,使能QEP_IDX_MKR信号触发捕获位置计数器,位置计数值QEP_POS_CNT_V写入QEP_POS_CNT_ICAPV。
-
Strobe相关事件的触发捕获,通过寄存器可选择触发捕获位置计数器的Strobe事件。
QEP_POS_SCAP_MOD = 0x0,使能QEP_SRB信号的上升沿触发捕获位置计数器,位置计数值QEP_POS_CNT_V写入QEP_POS_CNT_SCAPV。
QEP_POS_SCAP_MOD = 0x1,使能根据方向进行捕获。正向前进时,以QEP_SRB上升沿进行捕获,反向前进时,以QEP_SRB下降沿进行捕获,位置计数值QEP_POS_CNT_V写入QEP_POS_CNT_SCAPV。
正交位置计数器的初始化
位置计数器的初始化,即更新当前位置计数器的计数值,支持三种模式的初始化:
-
Index相关事件的初始化,通过寄存器可选择触发位置计数器初始化的Index事件。
QEP_POS_IDX_INIT = 0x2,使能QEP_IDX信号的上升沿触发位置计数器的初始化,位置起点值QEP_POS_CNT_SPV写入位置计数器。
QEP_POS_IDX_INIT = 0x3,使能QEP_IDX信号的下降沿触发位置计数器的初始化,位置起点值QEP_POS_CNT_SPV写入位置计数器。
-
Strobe相关事件的初始化,通过寄存器可选择触发位置计数器初始化的Strobe事件。
QEP_POS_SRB_INIT = 0x2,使能QEP_SRB信号的上升沿触发位置计数器的初始化,位置起点值QEP_POS_CNT_SPV写入位置计数器。
QEP_POS_SRB_INIT = 0x3,使能QEP_SRB信号的下降沿触发位置计数器的初始化,位置起点值QEP_POS_CNT_SPV写入位置计数器。
-
软件初始化,寄存器QEP_POS_SW_INIT字段置1可触发位置计数器初始化,位置起点值QEP_POS_CNT_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 信号的输出方式见位置比较输出章节。