EQEP外设
1.static inline void EQEP_enableModule(uint32_t base);
函数功能:该函数用于启用增强正交编码器脉冲(eQEP)模块。在启用之前,必须对该模块进行配置 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
2.static inline void EQEP_disableModule(uint32_t base);
函数功能:该函数用于禁用增强正交编码器脉冲(eQEP)模块 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
3.static inline void EQEP_setDecoderConfig(uint32_t base, uint16_t config);
函数功能: 参数说明 输入参数:base为eQEP模块的基地址 config为eQEP 模块解码器单元的配置 返回参数:无
4.static inline void EQEP_setPositionCounterConfig
(uint32_t base, EQEP_PositionResetMode mode, uint32_t maxPosition);
函数功能:该函数用于配置eQEP模块的位置计数器。参数mode决定位置计数器重启的情况。当计数器的值达到以下四个值时可能发生重启: EQEP_POSITION_RESET_IDX, EQEP_POSITION_RESET_MAX_POS, EQEP_POSITION_RESET_1ST_IDX, EQEP_POSITION_RESET_UNIT_TIME_OUT maxPosition是计数器的最大值,而且用于重置位置捕获的数值,当转向反方向转动时。 参数说明 输入参数:base为eQEP模块的基地址 mode为eQEP 位置计数器的配置 maxPosition为最大位置值 返回参数:无
5.static inline uint32_t EQEP_getPosition(uint32_t base);
函数功能:该函数用于获取编码器的当前位置。根据编码器的配置以及是否发生了索引脉冲,这个数值可能包含或不包含预期的数据(也就是说,在索引重置模式下,如果尚未遇到索引脉冲,则位置计数器尚未与索引脉冲对齐) 参数说明 输入参数:base为eQEP模块的基地址 返回参数:编码器现在的位置
6.static inline void EQEP_setPosition(uint32_t base, uint32_t position);
函数功能:该函数用于设置编码器的当前位置,然后相对于这个值来测量编码器的位置 参数说明 输入参数:base为eQEP模块的基地址 position为编码器的新位置 返回参数:无
7.static inline int16_t EQEP_getDirection(uint32_t base);
函数功能:该函数用于获取当前转动的方向。在这种情况下,当前指的是编码器最近检测到的方向;它可能目前没有移动,但这是它停止前最后移动的方向。 参数说明 输入参数:base为eQEP模块的基地址 返回参数:1为正转,-1为反转
8.static inline void EQEP_enableInterrupt(uint32_t base, uint16_t intFlags);
函数功能:该函数用于启用eQEP模块各个中断源,中断源有以下几种: EQEP_INT_POS_CNT_ERROR - 位置计数器错误 EQEP_INT_PHASE_ERROR -正交相位错误 EQEP_INT_DIR_CHANGE - 正交方向改变 EQEP_INT_WATCHDOG - 看门狗超时 EQEP_INT_UNDERFLOW -位置计数器下溢 EQEP_INT_OVERFLOW - 位置计数器上溢 EQEP_INT_POS_COMP_READY -位置比较准备 EQEP_INT_POS_COMP_MATCH -位置比较匹配 EQEP_INT_STROBE_EVNT_LATCH - 触发事件锁存 EQEP_INT_INDEX_EVNT_LATCH - 索引事件锁存 EQEP_INT_UNIT_TIME_OUT -单位时间超时 EQEP_INT_QMA_ERROR - QMA错误 参数说明 输入参数:base为eQEP模块的基地址 intFlags为要启用的中断源的位掩码 返回参数:无
9.static inline void EQEP_disableInterrupt(uint32_t base, uint16_t intFlags);
函数功能:该函数用于禁用eQEP模块各个中断源,中断源有以下几种: EQEP_INT_POS_CNT_ERROR - 位置计数器错误 EQEP_INT_PHASE_ERROR -正交相位错误 EQEP_INT_DIR_CHANGE - 正交方向改变 EQEP_INT_WATCHDOG - 看门狗超时 EQEP_INT_UNDERFLOW -位置计数器下溢 EQEP_INT_OVERFLOW - 位置计数器上溢 EQEP_INT_POS_COMP_READY -位置比较准备 EQEP_INT_POS_COMP_MATCH -位置比较匹配 EQEP_INT_STROBE_EVNT_LATCH - 触发事件锁存 EQEP_INT_INDEX_EVNT_LATCH - 索引事件锁存 EQEP_INT_UNIT_TIME_OUT -单位时间超时 EQEP_INT_QMA_ERROR - QMA错误 参数说明 输入参数:base为eQEP模块的基地址 intFlags为要启用的中断源的位掩码 返回参数:无
10.static inline uint16_t EQEP_getInterruptStatus(uint32_t base);
函数功能:该函数用于获取eQEP模块各个中断现有状态,以以下值的位字段枚举: EQEP_INT_GLOBAL - 全局中断标志 EQEP_INT_POS_CNT_ERROR - 位置计数器错误 EQEP_INT_PHASE_ERROR -正交相位错误 EQEP_INT_DIR_CHANGE - 正交方向改变 EQEP_INT_WATCHDOG - 看门狗超时 EQEP_INT_UNDERFLOW -位置计数器下溢 EQEP_INT_OVERFLOW - 位置计数器上溢 EQEP_INT_POS_COMP_READY -位置比较准备 EQEP_INT_POS_COMP_MATCH -位置比较匹配 EQEP_INT_STROBE_EVNT_LATCH - 触发事件锁存 EQEP_INT_INDEX_EVNT_LATCH - 索引事件锁存 EQEP_INT_UNIT_TIME_OUT -单位时间超时 EQEP_INT_QMA_ERROR - QMA错误 参数说明 输入参数:base为eQEP模块的基地址 返回参数:eQEP模块各个中断现有状态
11.static inline void EQEP_clearInterruptStatus(uint32_t base, uint16_t intFlags);
函数功能:该函数用于清空eQEP模块的中断,具体包括: EQEP_INT_GLOBAL - 全局中断标志 EQEP_INT_POS_CNT_ERROR - 位置计数器错误 EQEP_INT_PHASE_ERROR -正交相位错误 EQEP_INT_DIR_CHANGE - 正交方向改变 EQEP_INT_WATCHDOG - 看门狗超时 EQEP_INT_UNDERFLOW -位置计数器下溢 EQEP_INT_OVERFLOW - 位置计数器上溢 EQEP_INT_POS_COMP_READY -位置比较准备 EQEP_INT_POS_COMP_MATCH -位置比较匹配 EQEP_INT_STROBE_EVNT_LATCH - 触发事件锁存 EQEP_INT_INDEX_EVNT_LATCH - 索引事件锁存 EQEP_INT_UNIT_TIME_OUT -单位时间超时 EQEP_INT_QMA_ERROR - QMA错误 注意:EQEP_INT_GLOBAL为全局中断标志,必须被清空 参数说明 输入参数:base为eQEP模块的基地址 intFlags为要被清理中断的一位掩码 返回参数:无
12.static inline void EQEP_forceInterrupt(uint32_t base, uint16_t intFlags);
函数功能:该函数用于强制执行eQEP模块的中断,具体包括: EQEP_INT_GLOBAL - 全局中断标志 EQEP_INT_POS_CNT_ERROR - 位置计数器错误 EQEP_INT_PHASE_ERROR -正交相位错误 EQEP_INT_DIR_CHANGE - 正交方向改变 EQEP_INT_WATCHDOG - 看门狗超时 EQEP_INT_UNDERFLOW -位置计数器下溢 EQEP_INT_OVERFLOW - 位置计数器上溢 EQEP_INT_POS_COMP_READY -位置比较准备 EQEP_INT_POS_COMP_MATCH -位置比较匹配 EQEP_INT_STROBE_EVNT_LATCH - 触发事件锁存 EQEP_INT_INDEX_EVNT_LATCH - 索引事件锁存 EQEP_INT_UNIT_TIME_OUT -单位时间超时 EQEP_INT_QMA_ERROR - QMA错误 注意:EQEP_INT_GLOBAL为全局中断标志,必须被清空 参数说明 输入参数:base为eQEP模块的基地址 intFlags为要被强制执行中断的一位掩码 返回参数:无
13.static inline bool EQEP_getError(uint32_t base);
函数功能:该函数用作 eQEP 模块的错误指示器。当正交输入的两个信号同时改变时,这被视为错误。 参数说明 输入参数:base为eQEP模块的基地址 返回参数:如果有错误则返回true,否则返回false
14.static inline uint16_t EQEP_getStatus(uint32_t base);
函数功能:该函数用于获取 eQEP 寄存器的值,其返回的值为以下值的按位或: EQEP_STS_UNIT_POS_EVNT - 被检测的单位位置事件 EQEP_STS_DIR_ON_1ST_IDX - 如果设置,则表示在第一个索引事件上发生了顺时针旋转(向前运动) EQEP_STS_DIR_FLAG - 如果设置,则为顺时针旋转 EQEP_STS_DIR_LATCH -如果设置,则表示在上一个索引事件标记上发生了顺时针旋转 EQEP_STS_CAP_OVRFLW_ERROR -eQEP 捕获定时器发生了溢出 EQEP_STS_CAP_DIR_ERROR - 在位置捕获事件之间发生了方向变化 EQEP_STS_1ST_IDX_FLAG - 由第一个索引脉冲的发生设置 EQEP_STS_POS_CNT_ERROR - 位置计数器发生错误 参数说明 输入参数:base为eQEP模块的基地址 返回参数:eQEP状态寄存器的值
15.static inline void EQEP_clearStatus(uint32_t base, uint16_t statusFlags);
函数功能:该函数用于清除 eQEP 模块状态寄存器的选定字段,这些字段由 statusFlags与以下逻辑 或决定 EQEP_STS_UNIT_POS_EVNT - 被检测的单位位置事件 EQEP_STS_CAP_OVRFLW_ERROR -eQEP 捕获定时器发生了溢出 EQEP_STS_CAP_DIR_ERROR - 在位置捕获事件之间发生了方向变化 EQEP_STS_1ST_IDX_FLAG - 由第一个索引脉冲的发生设置 注意:只有以上能被清空,其他的为只读 参数说明 输入参数:base为eQEP模块的基地址 statusFlags是要清除的状态标志位掩码 返回参数:eQEP状态寄存器的值
16.static inline void EQEP_setCaptureConfig
(uint32_t base, EQEP_CAPCLKPrescale capPrescale, EQEP_UPEVNTPrescale evntPrescale);
函数功能:该函数配置 eQEP 模块的边缘捕获单元的操作。参数 \e capPrescale 提供了 eQEP 捕获定时器时钟速率的配置。它确定 SYSCLKOUT 被多少个 2 的幂整除,在 1 到 128 之间(包括 1 和 128)。该参数的宏格式为 EQEP_CAPTURE_CLK_DIV_X,其中 X 是除法值。例如,\b EQEP_CAPTURE_CLK_DIV_32 将提供一个捕获定时器时钟频率为 SYSCLKOUT/32。 参数evntPrescale 确定单位位置事件发生的频率。可以传递给该参数的宏格式为 EQEP_UNIT_POS_EVNT_DIV_X,其中 X 是单位位置事件之间的正交时钟周期数。例如,\b EQEP_UNIT_POS_EVNT_DIV_16 将导致单位位置事件频率为 QCLK/16 参数说明 输入参数:base为eQEP模块的基地址 capPrescale 是 eQEP 捕获定时器时钟的预分频设置 evntPrescale 是单位位置事件频率的预分频设置 返回参数:无
17.static inline void EQEP_enableCapture(uint32_t base);
函数功能:该函数用于启用边缘捕获单元 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
18.static inline void EQEP_disableCapture(uint32_t base);
函数功能:该函数用于禁用边缘捕获单元 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
19.static inline uint16_t EQEP_getCapturePeriod(uint32_t base);
函数功能:该函数用于获取编码器捕获周期 参数说明 输入参数:base为eQEP模块的基地址 返回参数:最后连续的 eQEP 位置事件之间的周期计数值
20.static inline uint16_t EQEP_getCaptureTimer(uint32_t base);
函数功能:该函数用于获取编码器捕获时间值 参数说明 输入参数:base为eQEP模块的基地址 返回参数:捕获时间值
21.static inline void EQEP_enableCompare(uint32_t base);
函数功能:该函数用于启用位置比较单元 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
22.static inline void EQEP_disableCompare(uint32_t base);
函数功能:该函数用于禁用位置比较单元 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
23.static inline void EQEP_setComparePulseWidth(uint32_t base, uint16_t cycles);
函数功能:该函数用于配置位置比较单元的同步输出脉冲宽度,脉冲的宽度将为 cycles * 4 * 一个SYSCLKOUT周期的宽度。最大宽度为 4096 * 4 * SYSCLKOUT周期。" 参数说明 输入参数:base为eQEP模块的基地址 cycles为在位置比较事件上可以生成的脉冲宽度。它以4个SYSCLKOUT周期为单位。 返回参数:无
24.static inline void EQEP_loadUnitTimer(uint32_t base, uint32_t period);
函数功能:该函数用于将 eQEP 模块单元定时器周期加载为 SYSCLK 周期数 参数说明 输入参数:base为eQEP模块的基地址 period 为设置单元超时中断的周期值 返回参数:无
25.static inline void EQEP_enableUnitTimer(uint32_t base, uint32_t period);
函数功能:该函数用于启用eQEP外设单元时间器 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
26.static inline void EQEP_disableUnitTimer(uint32_t base);
函数功能:该函数用于禁用eQEP外设单元时间器 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
27.static inline void EQEP_enableWatchdog(uint32_t base, uint16_t period);
函数功能:该函数用于启用看门狗单元 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
28.static inline void EQEP_disableWatchdog(uint32_t base);
函数功能:该函数用于禁用看门狗单元 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
29.static inline void EQEP_setWatchdogTimerValue(uint32_t base, uint16_t value);
函数功能:该函数设置eQEP模块看门狗单元时间器的值 参数说明 输入参数:base为eQEP模块的基地址 value为要设置的值 返回参数:无
30.static inline uint16_t EQEP_getWatchdogTimerValue(uint32_t base);
函数功能:该函数获取eQEP模块看门狗单元时间器的值 参数说明 输入参数:base为eQEP模块的基地址 返回参数:无
31.static inline void EQEP_setPositionInitMode(uint32_t base, uint16_t initMode);
函数功能:该函数配置了可以初始化位置计数的事件。参数 initMode 提供了模式,可以是 EQEP_INIT_DO_NOTHING(未配置任何操作),或者以下 strobe 事件、index 事件之一,或者 strobe 事件和 index 事件的逻辑或。 EQEP_INIT_RISING_STROBE 或 EQEP_INIT_EDGE_DIR_STROBE 指定了哪个 strobe 事件将初始化位置计数器。 EQEP_INIT_RISING_INDEX 或 \b EQEP_INIT_FALLING_INDEX 指定了哪个 index 事件将初始化位置计数器。
使用 EQEP_setSWPositionInit() 进行软件初始化,并使用 EQEP_setInitialPosition() 设置初始化时加载到位置计数器的值。 参数说明 输入参数:base为eQEP模块的基地址 initMode 用于初始化位置计数的配置的模式 返回参数:无
32.static inline void EQEP_setSWPositionInit(uint32_t base, bool initialize);
函数功能:当 initialize 参数为 true 时,该函数对位置计数器执行软件初始化。当为 false 时,QEPCTL[SWI] 位将被清除,不会执行任何操作。
可以使用 EQEP_setInitialPosition() 设置要加载到位置计数器中的初始值。还可以使用 EQEP_setPositionInitMode() 配置其他初始化原因。 参数说明 输入参数:base为eQEP模块的基地址 initialize 是一个标志,用于指定是否启用位置计数器的软件初始化 返回参数:无
33.static inline void EQEP_setInitialPosition(uint32_t base, uint32_t position);
函数功能:该函数设置编码器位置的初始值。参见 EQEP_setPositionInitMode() 以设置初始化原因,或者 EQEP_setSWPositionInit() 以执行软件初始化 参数说明 输入参数:base为eQEP模块的基地址 position 是在初始化时写入位置计数器的值 返回参数:无
34.static inline void EQEP_setLatchMode(uint32_t base, uint32_t latchMode);
函数功能:该函数配置可以锁存位置计数和其他几个寄存器的事件。参数 latchMode 提供了几个值的逻辑或模式。 EQEP_LATCH_CNT_READ_BY_CPU 或 \b EQEP_LATCH_UNIT_TIME_OUT 指定锁存位置计数的事件。可以使用 EQEP_getPositionLatch() 读取此锁存寄存器。基于此设置,捕获计时器和捕获周期也会被锁存,可以使用 EQEP_getCaptureTimerLatch() 和 EQEP_getCapturePeriodLatch() 读取。 EQEP_LATCH_RISING_STROBE 或 \b EQEP_LATCH_EDGE_DIR_STROBE 指定哪个 strobe 事件将位置计数锁存到 strobe 位置锁存寄存器中。可以使用 EQEP_getStrobePositionLatch() 读取此寄存器。 EQEP_LATCH_RISING_INDEX、 EQEP_LATCH_FALLING_INDEX 或 EQEP_LATCH_SW_INDEX_MARKER 指定哪个索引事件将位置计数锁存到索引位置锁存寄存器中。可以使用EQEP_getIndexPositionLatch() 读取此寄存器 参数说明 输入参数:base为eQEP模块的基地址 latchMode 是用于锁存位置计数和其他寄存器的配置 返回参数:无
35.static inline uint32_t EQEP_getIndexPositionLatch(uint32_t base);
函数功能:该函数返回索引位置锁存寄存器中的值。位置计数器在上升索引边缘、下降索引边缘或软件索引标记中锁存到该寄存器中。这是使用 EQEP_setLatchMode() 配置的。 参数说明 输入参数:base为eQEP模块的基地址 返回参数:索引事件上锁存的位置计数
36.static inline uint32_t EQEP_getStrobePositionLatch(uint32_t base);
函数功能:该函数返回 strobe 位置锁存寄存器中的值。位置计数器可以配置为仅在上升 strobe 边缘时锁存到该寄存器中,或在顺时针移动时的上升 strobe 边缘和逆时针移动时的下降 strobe 边缘时锁存。这是使用 EQEP_setLatchMode() 配置的 参数说明 输入参数:base为eQEP模块的基地址 返回参数:strobe 事件上锁存的位置计数
37.static inline uint32_t EQEP_getPositionLatch(uint32_t base);
函数功能:该函数返回位置锁存寄存器中的值。位置计数器在单元超时事件时锁存到该寄存器中 参数说明 输入参数:base为eQEP模块的基地址 返回参数:位置计数锁存寄存器的值
38.static inline uint16_t EQEP_getCaptureTimerLatch(uint32_t base);
函数功能:该函数返回捕获计时器锁存寄存器中的值。捕获计时器值在单元超时事件或 CPU 读取 eQEP 位置计数器时锁存到该寄存器中。这是使用 EQEP_setLatchMode() 配置的 参数说明 输入参数:base为eQEP模块的基地址 返回参数:边缘捕获计时器锁存值
39.static inline uint16_t EQEP_getCapturePeriodLatch(uint32_t base);
函数功能:该函数返回捕获周期锁存器中的值。捕获周期值在单元超时事件或 CPU 读取 eQEP 位置计数器时锁存到该寄存器中。这是使用 EQEP_setLatchMode() 配置的。 参数说明 输入参数:base为eQEP模块的基地址 返回参数:边缘捕获周期锁存值
40.static inline void EQEP_setQMAModuleMode
(uint32_t base, EQEP_QMAMode qmaMode)
函数功能:该函数设置QMA模块的模式。可能的模式通过参数qmaMode 传递给函数,可以取值 EQEP_QMA_MODE_BYPASS、EQEP_QMA_MODE_1 或 EQEP_QMA_MODE_2。要使用 QMA 模块,必须首先将 eQEP 模块置于方向计数模式(EQEP_CONFIG_CLOCK_DIR)中,使用 EQEP_setConfig()。 参数说明 输入参数:base为eQEP模块的基地址 qmaMode 是 QMA 模块将操作的模式 返回参数:无
41.static inline void EQEP_setStrobeSource
(uint32_t base, EQEP_StrobeSource strobeSrc)
函数功能:该函数设置 eQEP 模块 strobe 信号的源。参数strobeSrc 的可能值包括: EQEP_STROBE_FROM_GPIO - 经过极性选择逻辑后,strobe 信号原样使用 EQEP_STROBE_OR_ADCSOCA - 经过极性选择逻辑后,strobe 信号与 ADCSOCA 信号进行 OR 操作 EQEP_STROBE_OR_ADCSOCB - 经过极性选择逻辑后,strobe 信号与 ADCSOCB 信号进行 OR 操作 参数说明 输入参数:base为eQEP模块的基地址 strobeSrc 是 strobe 信号的源 返回参数:无
42.static inline void EQEP_setEmulationMode
(uint32_t base, EQEP_EmulationMode emuMode)
函数功能:该函数设置 eQEP 模块的仿真模式。该模式确定了计时器在仿真挂起时的影响方式。参数emuMode 的有效值如下: EQEP_EMULATIONMODE_STOPIMMEDIATELY - 位置计数器、看门狗计数器、单元定时器和捕获计时器立即停止 EQEP_EMULATIONMODE_STOPATROLLOVER - 位置计数器、看门狗计数器、单元定时器一直计数直到周期溢出。捕获计时器计数直到下一个单元周期事件 EQEP_EMULATIONMODE_RUNFREE - 位置计数器、看门狗计数器、单元定时器和捕获计时器在仿真挂起时不受影响 参数说明 输入参数:base为eQEP模块的基地址 emuMode 是在仿真挂起时的模式操作 返回参数:无
43.extern void EQEP_setCompareConfig
(uint32_t base, uint16_t config, uint32_t compareValue, uint16_t cycles);
函数功能:该函数配置 eQEP 模块位置比较单元的操作。参数config 提供了位置比较单元的配置,是几个值的逻辑或: EQEP_COMPARE_NO_SYNC_OUT、 EQEP_COMPARE_IDX_SYNC_OUT 或 EQEP_COMPARE_STROBE_SYNC_OUT 指定是否有同步输出脉冲以及应使用哪个引脚 EQEP_COMPARE_NO_SHADOW、EQEP_COMPARE_LOAD_ON_ZERO 或 EQEP_COMPARE_LOAD_ON_MATCH 指定是否启用阴影以及何时应执行加载 即QPOSCNT = 0 或 QPOSCNT = QPOSCOMP 参数 cycles 用于选择同步输出脉冲的宽度。生成脉冲的宽度将为cycles * 4 * 一个 SYSCLKOUT 周期的宽度。最大宽度为 4096 * 4 * SYSCLKOUT 周期 注意:可以使用 EQEP_setComparePulseWidth() 函数独立设置同步脉冲宽度 参数说明 输入参数:base 为 eQEP 模块的基地址。 config 为 eQEP 模块位置比较单元的配置 compareValue 为与位置计数值进行比较以进行位置比较事件的值 cycles 为在位置比较事件上可以生成的脉冲宽度。它以 4 个 SYSCLKOUT 周期为单位 返回参数:无
44.extern void EQEP_setInputPolarity
(uint32_t base, bool invertQEPA, bool invertQEPB, bool invertIndex,
bool invertStrobe);
函数功能:该函数配置 eQEP 模块的输入信号的极性。要取反任何输入信号的极性,请将 true 传递到该函数中对应的参数中。将 false 传递以保持其原样。 参数说明 输入参数:base 为 eQEP 模块的基地址。 invertQEPA 为取反 QEPA 输入的标志 invertQEPB 为取反 QEPB 输入的标志 invertIndex 为取反索引输入的标志 invertStrobe 为取反 strobe 输入的标志 返回参数:无