EQEP Module¶
The enhanced quadrature encoder pulse (eQEP) API provides a set of functions to configure an interface to an encoder. The functions provide the ability to configure the device’s eQEP module to properly decode incoming pulse signals, to configure module outputs, and to get direction, position, and speed information. There are also APIs to setup the possible interrupt events that the module can generate.
-
group
eqep_api
Defines
-
EQEP_CONFIG_QUADRATURE
0x0000U¶ Quadrature-clock mode.
-
EQEP_CONFIG_CLOCK_DIR
0x4000U¶ Direction-count mode.
-
EQEP_CONFIG_UP_COUNT
0x8000U¶ Up-count mode, QDIR = 1.
-
EQEP_CONFIG_DOWN_COUNT
0xC000U¶ Down-count mode, QDIR = 0.
-
EQEP_CONFIG_2X_RESOLUTION
0x0000U¶ Count rising and falling edge.
-
EQEP_CONFIG_1X_RESOLUTION
0x0800U¶ Count rising edge only.
-
EQEP_CONFIG_NO_SWAP
0x0000U¶ Do not swap QEPA and QEPB.
-
EQEP_CONFIG_SWAP
0x0400U¶ Swap QEPA and QEPB.
-
EQEP_COMPARE_NO_SYNC_OUT
0x0000U¶ Disable sync output.
-
EQEP_COMPARE_IDX_SYNC_OUT
0x2000U¶ Sync output on index pin.
-
EQEP_COMPARE_STROBE_SYNC_OUT
0x3000U¶ Sync output on strobe pin.
-
EQEP_COMPARE_NO_SHADOW
0x0000U¶ Disable shadow of QPOSCMP.
-
EQEP_COMPARE_LOAD_ON_ZERO
0x8000U¶ Load on QPOSCNT = 0.
-
EQEP_COMPARE_LOAD_ON_MATCH
0xC000U¶ Load on QPOSCNT = QPOSCMP.
-
EQEP_INT_GLOBAL
0x0001U¶ Global interrupt flag.
-
EQEP_INT_POS_CNT_ERROR
0x0002U¶ Position counter error.
-
EQEP_INT_PHASE_ERROR
0x0004U¶ Quadrature phase error.
-
EQEP_INT_DIR_CHANGE
0x0008U¶ Quadrature direction change.
-
EQEP_INT_WATCHDOG
0x0010U¶ Watchdog time-out.
-
EQEP_INT_UNDERFLOW
0x0020U¶ Position counter underflow.
-
EQEP_INT_OVERFLOW
0x0040U¶ Position counter overflow.
-
EQEP_INT_POS_COMP_READY
0x0080U¶ Position-compare ready.
-
EQEP_INT_POS_COMP_MATCH
0x0100U¶ Position-compare match.
-
EQEP_INT_STROBE_EVNT_LATCH
0x0200U¶ Strobe event latch.
-
EQEP_INT_INDEX_EVNT_LATCH
0x0400U¶ Index event latch.
-
EQEP_INT_UNIT_TIME_OUT
0x0800U¶ Unit time-out.
-
EQEP_INT_QMA_ERROR
0x1000U¶ QMA error.
-
EQEP_STS_UNIT_POS_EVNT
0x0080U¶ Unit position event detected.
-
EQEP_STS_DIR_ON_1ST_IDX
0x0040U¶ Direction was clockwise on first index event.
-
EQEP_STS_DIR_FLAG
0x0020U¶ Direction is CW (forward)
-
EQEP_STS_DIR_LATCH
0x0010U¶ Direction was CW on index.
-
EQEP_STS_CAP_OVRFLW_ERROR
0x0008U¶ Capture timer overflow.
-
EQEP_STS_CAP_DIR_ERROR
0x0004U¶ Direction changed between position capture events.
-
EQEP_STS_1ST_IDX_FLAG
0x0002U¶ First index pulse occurred.
-
EQEP_STS_POS_CNT_ERROR
0x0001U¶ Position counter error.
-
EQEP_LATCH_CNT_READ_BY_CPU
0x0000U¶ On position counter read.
-
EQEP_LATCH_UNIT_TIME_OUT
0x0004U¶ On unit time-out event.
-
EQEP_LATCH_RISING_STROBE
0x0000U¶ On rising edge of strobe.
-
EQEP_LATCH_EDGE_DIR_STROBE
0x0040U¶ On rising edge when clockwise, on falling when counter clockwise.
-
EQEP_LATCH_RISING_INDEX
0x0010U¶ On rising edge of index.
-
EQEP_LATCH_FALLING_INDEX
0x0020U¶ On falling edge of index.
-
EQEP_LATCH_SW_INDEX_MARKER
0x0030U¶ On software index marker.
-
EQEP_INIT_DO_NOTHING
0x0000U¶ Action is disabled.
-
EQEP_INIT_RISING_STROBE
0x0800U¶ On rising edge of strobe.
-
EQEP_INIT_EDGE_DIR_STROBE
0x0C00U¶ On rising edge when clockwise, on falling when counter clockwise.
-
EQEP_INIT_RISING_INDEX
0x0200U¶ On rising edge of index.
-
EQEP_INIT_FALLING_INDEX
0x0300U¶ On falling edge of index.
Enums
-
enum
EQEP_PositionResetMode
¶ Values that can be passed to EQEP_setPositionCounterConfig() as the mode parameter.
Values:
-
enumerator
EQEP_POSITION_RESET_IDX
= 0x0000¶ Reset position on index pulse.
-
enumerator
EQEP_POSITION_RESET_MAX_POS
= 0x1000¶ Reset position on maximum position.
-
enumerator
EQEP_POSITION_RESET_1ST_IDX
= 0x2000¶ Reset position on the first index pulse.
-
enumerator
EQEP_POSITION_RESET_UNIT_TIME_OUT
= 0x3000¶ Reset position on a unit time event.
-
enumerator
-
enum
EQEP_CAPCLKPrescale
¶ Values that can be passed to EQEP_setCaptureConfig() as the capPrescale parameter. CAPCLK is the capture timer clock frequency.
Values:
-
enumerator
EQEP_CAPTURE_CLK_DIV_1
= 0x00¶ CAPCLK = SYSCLKOUT/1.
-
enumerator
EQEP_CAPTURE_CLK_DIV_2
= 0x10¶ CAPCLK = SYSCLKOUT/2.
-
enumerator
EQEP_CAPTURE_CLK_DIV_4
= 0x20¶ CAPCLK = SYSCLKOUT/4.
-
enumerator
EQEP_CAPTURE_CLK_DIV_8
= 0x30¶ CAPCLK = SYSCLKOUT/8.
-
enumerator
EQEP_CAPTURE_CLK_DIV_16
= 0x40¶ CAPCLK = SYSCLKOUT/16.
-
enumerator
EQEP_CAPTURE_CLK_DIV_32
= 0x50¶ CAPCLK = SYSCLKOUT/32.
-
enumerator
EQEP_CAPTURE_CLK_DIV_64
= 0x60¶ CAPCLK = SYSCLKOUT/64.
-
enumerator
EQEP_CAPTURE_CLK_DIV_128
= 0x70¶ CAPCLK = SYSCLKOUT/128.
-
enumerator
-
enum
EQEP_UPEVNTPrescale
¶ Values that can be passed to EQEP_setCaptureConfig() as the evntPrescale parameter. UPEVNT is the unit position event frequency.
Values:
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_1
¶ UPEVNT = QCLK/1.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_2
¶ UPEVNT = QCLK/2.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_4
¶ UPEVNT = QCLK/4.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_8
¶ UPEVNT = QCLK/8.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_16
¶ UPEVNT = QCLK/16.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_32
¶ UPEVNT = QCLK/32.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_64
¶ UPEVNT = QCLK/64.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_128
¶ UPEVNT = QCLK/128.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_256
¶ UPEVNT = QCLK/256.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_512
¶ UPEVNT = QCLK/512.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_1024
¶ UPEVNT = QCLK/1024.
-
enumerator
EQEP_UNIT_POS_EVNT_DIV_2048
¶ UPEVNT = QCLK/2048.
-
enumerator
-
enum
EQEP_StrobeSource
¶ Values that can be passed to EQEP_setStrobeSource() as the strobeSrc parameter.
Values:
-
enumerator
EQEP_STROBE_FROM_GPIO
= 0¶ Strobe signal comes from GPIO.
-
enumerator
EQEP_STROBE_OR_ADCSOCA
= 2¶ Strobe signal is OR’d with ADCSOCA.
-
enumerator
EQEP_STROBE_OR_ADCSOCB
= 3¶ Strobe signal is OR’d with ADCSOCB.
-
enumerator
-
enum
EQEP_QMAMode
¶ Values that can be passed to EQEP_setQMAModuleMode() as the qmaMode parameter.
Values:
-
enumerator
EQEP_QMA_MODE_BYPASS
¶ QMA module is bypassed.
-
enumerator
EQEP_QMA_MODE_1
¶ QMA mode-1 operation is selected.
-
enumerator
EQEP_QMA_MODE_2
¶ QMA mode-2 operation is selected.
-
enumerator
-
enum
EQEP_Source
¶ Possible values of sources for QEPA,QEPB and Index signal which are passed as a structure to EQEP_selectSource() as sourceConfig
Values:
-
enumerator
EQEP_SOURCE_DEVICE_PIN
= 0x0000U¶ signal comes from Device Pin
-
enumerator
EQEP_SOURCE_CMPSS1
= 0x0001U¶ signal comes from CMPSS1
-
enumerator
EQEP_SOURCE_CMPSS2
= 0x0002U¶ signal comes from CMPSS2
-
enumerator
EQEP_SOURCE_CMPSS3
= 0x0003U¶ signal comes from CMPSS3
-
enumerator
EQEP_SOURCE_CMPSS4
= 0x0004U¶ signal comes from CMPSS4
-
enumerator
EQEP_SOURCE_CMPSS5
= 0x0005U¶ signal comes from CMPSS5
-
enumerator
EQEP_SOURCE_CMPSS6
= 0x0006U¶ signal comes from CMPSS6
-
enumerator
EQEP_SOURCE_CMPSS7
= 0x0007U¶ signal comes from CMPSS7
-
enumerator
EQEP_SOURCE_CMPSS8
= 0x0008U¶ signal comes from CMPSS8
-
enumerator
EQEP_SOURCE_PWMXBAR1
= 0x0009U¶ signal comes from PWMXBAR1
-
enumerator
EQEP_SOURCE_PWMXBAR2
= 0x000AU¶ signal comes from PWMXBAR2
-
enumerator
EQEP_SOURCE_PWMXBAR3
= 0x000BU¶ signal comes from PWMXBAR3
-
enumerator
EQEP_SOURCE_PWMXBAR4
= 0x000CU¶ signal comes from PWMXBAR4
-
enumerator
EQEP_SOURCE_PWMXBAR5
= 0x000DU¶ signal comes from PWMXBAR5
-
enumerator
EQEP_SOURCE_PWMXBAR6
= 0x000EU¶ signal comes from PWMXBAR6
-
enumerator
EQEP_SOURCE_PWMXBAR7
= 0x000FU¶ signal comes from PWMXBAR7
-
enumerator
-
enum
EQEP_EmulationMode
¶ Values that can be passed to EQEP_setEmulationMode() as the emuMode parameter.
Values:
-
enumerator
EQEP_EMULATIONMODE_STOPIMMEDIATELY
¶ Counters stop immediately.
-
enumerator
EQEP_EMULATIONMODE_STOPATROLLOVER
¶ Counters stop at period rollover.
-
enumerator
EQEP_EMULATIONMODE_RUNFREE
¶ Counter unaffected by suspend.
-
enumerator
Functions
-
void
EQEP_enableModule
(uint32_t base)¶ Enables the eQEP module.
This function enables operation of the enhanced quadrature encoder pulse (eQEP) module. The module must be configured before it is enabled.
- Parameters
base
: is the base address of the eQEP module.
- See
EQEP_setConfig()
- Return
None.
-
void
EQEP_disableModule
(uint32_t base)¶ Disables the eQEP module.
This function disables operation of the eQEP module.
- Parameters
base
: is the base address of the enhanced quadrature encoder pulse (eQEP) module
- Return
None.
-
void
EQEP_setDecoderConfig
(uint32_t base, uint16_t config)¶ Configures eQEP module’s quadrature decoder unit.
This function configures the operation of the eQEP module’s quadrature decoder unit. The
config parameter provides the configuration of the decoder and is the logical OR of several values:- Parameters
base
: is the base address of the eQEP module.config
: is the configuration for the eQEP module decoder unit.
EQEP_CONFIG_2X_RESOLUTION or EQEP_CONFIG_1X_RESOLUTION specify if both rising and falling edges should be counted or just rising edges.
EQEP_CONFIG_QUADRATURE, EQEP_CONFIG_CLOCK_DIR, EQEP_CONFIG_UP_COUNT, or EQEP_CONFIG_DOWN_COUNT specify if quadrature signals are being provided on QEPA and QEPB, if a direction signal and a clock are being provided, or if the direction should be hard-wired for a single direction with QEPA used for input.
EQEP_CONFIG_NO_SWAP or EQEP_CONFIG_SWAP to specify if the signals provided on QEPA and QEPB should be swapped before being processed.
- Return
None.
-
void
EQEP_setPositionCounterConfig
(uint32_t base, EQEP_PositionResetMode mode, uint32_t maxPosition)¶ Configures eQEP module position counter unit.
This function configures the operation of the eQEP module position counter. The
mode parameter determines the event on which the position counter gets reset. It should be passed one of the following values: EQEP_POSITION_RESET_IDX, EQEP_POSITION_RESET_MAX_POS, EQEP_POSITION_RESET_1ST_IDX, or EQEP_POSITION_RESET_UNIT_TIME_OUT.- Parameters
base
: is the base address of the eQEP module.mode
: is the configuration for the eQEP module position counter.maxPosition
: specifies the maximum position value.
maxPosition is the maximum value of the position counter and is the value used to reset the position capture when moving in the reverse (negative) direction.
- Return
None.
-
uint32_t
EQEP_getPosition
(uint32_t base)¶ Gets the current encoder position.
This function returns the current position of the encoder. Depending upon the configuration of the encoder, and the incident of an index pulse, this value may or may not contain the expected data (that is, if in reset on index mode, if an index pulse has not been encountered, the position counter is not yet aligned with the index pulse).
- Parameters
base
: is the base address of the eQEP module.
- Return
The current position of the encoder.
-
void
EQEP_setPosition
(uint32_t base, uint32_t position)¶ Sets the current encoder position.
This function sets the current position of the encoder; the encoder position is then measured relative to this value.
- Parameters
base
: is the base address of the eQEP module.position
: is the new position for the encoder.
- Return
None.
-
int16_t
EQEP_getDirection
(uint32_t base)¶ Gets the current direction of rotation.
This function returns the current direction of rotation. In this case, current means the most recently detected direction of the encoder; it may not be presently moving but this is the direction it last moved before it stopped.
- Parameters
base
: is the base address of the eQEP module.
- Return
Returns 1 if moving in the forward direction or -1 if moving in the reverse direction.
-
void
EQEP_enableInterrupt
(uint32_t base, uint16_t intFlags)¶ Enables individual eQEP module interrupt sources.
This function enables eQEP module interrupt sources. The
intFlags parameter can be any of the following values OR’d together:EQEP_INT_POS_CNT_ERROR - Position counter error
EQEP_INT_PHASE_ERROR - Quadrature phase error
EQEP_INT_DIR_CHANGE - Quadrature direction change
EQEP_INT_WATCHDOG - Watchdog time-out
EQEP_INT_UNDERFLOW - Position counter underflow
EQEP_INT_OVERFLOW - Position counter overflow
EQEP_INT_POS_COMP_READY - Position-compare ready
EQEP_INT_POS_COMP_MATCH - Position-compare match
EQEP_INT_STROBE_EVNT_LATCH - Strobe event latch
EQEP_INT_INDEX_EVNT_LATCH - Index event latch
EQEP_INT_UNIT_TIME_OUT - Unit time-out
- Parameters
base
: is the base address of the eQEP module.intFlags
: is a bit mask of the interrupt sources to be enabled.
- Return
None.
-
void
EQEP_disableInterrupt
(uint32_t base, uint16_t intFlags)¶ Disables individual eQEP module interrupt sources.
This function disables eQEP module interrupt sources. The
intFlags parameter can be any of the following values OR’d together:EQEP_INT_POS_CNT_ERROR - Position counter error
EQEP_INT_PHASE_ERROR - Quadrature phase error
EQEP_INT_DIR_CHANGE - Quadrature direction change
EQEP_INT_WATCHDOG - Watchdog time-out
EQEP_INT_UNDERFLOW - Position counter underflow
EQEP_INT_OVERFLOW - Position counter overflow
EQEP_INT_POS_COMP_READY - Position-compare ready
EQEP_INT_POS_COMP_MATCH - Position-compare match
EQEP_INT_STROBE_EVNT_LATCH - Strobe event latch
EQEP_INT_INDEX_EVNT_LATCH - Index event latch
EQEP_INT_UNIT_TIME_OUT - Unit time-out
- Parameters
base
: is the base address of the eQEP module.intFlags
: is a bit mask of the interrupt sources to be disabled.
- Return
None.
-
uint16_t
EQEP_getInterruptStatus
(uint32_t base)¶ Gets the current interrupt status.
This function returns the interrupt status for the eQEP module module.
- Parameters
base
: is the base address of the eQEP module.
- Return
Returns the current interrupt status, enumerated as a bit field of the following values:
EQEP_INT_GLOBAL - Global interrupt flag
EQEP_INT_POS_CNT_ERROR - Position counter error
EQEP_INT_PHASE_ERROR - Quadrature phase error
EQEP_INT_DIR_CHANGE - Quadrature direction change
EQEP_INT_WATCHDOG - Watchdog time-out
EQEP_INT_UNDERFLOW - Position counter underflow
EQEP_INT_OVERFLOW - Position counter overflow
EQEP_INT_POS_COMP_READY - Position-compare ready
EQEP_INT_POS_COMP_MATCH - Position-compare match
EQEP_INT_STROBE_EVNT_LATCH - Strobe event latch
EQEP_INT_INDEX_EVNT_LATCH - Index event latch
EQEP_INT_UNIT_TIME_OUT - Unit time-out
-
void
EQEP_clearInterruptStatus
(uint32_t base, uint16_t intFlags)¶ Clears eQEP module interrupt sources.
This function clears eQEP module interrupt flags. The
intFlags parameter can be any of the following values OR’d together:EQEP_INT_GLOBAL - Global interrupt flag
EQEP_INT_POS_CNT_ERROR - Position counter error
EQEP_INT_PHASE_ERROR - Quadrature phase error
EQEP_INT_DIR_CHANGE - Quadrature direction change
EQEP_INT_WATCHDOG - Watchdog time-out
EQEP_INT_UNDERFLOW - Position counter underflow
EQEP_INT_OVERFLOW - Position counter overflow
EQEP_INT_POS_COMP_READY - Position-compare ready
EQEP_INT_POS_COMP_MATCH - Position-compare match
EQEP_INT_STROBE_EVNT_LATCH - Strobe event latch
EQEP_INT_INDEX_EVNT_LATCH - Index event latch
EQEP_INT_UNIT_TIME_OUT - Unit time-out
- Parameters
base
: is the base address of the eQEP module.intFlags
: is a bit mask of the interrupt sources to be cleared.
Note that the EQEP_INT_GLOBAL value is the global interrupt flag. In order to get any further eQEP interrupts, this flag must be cleared.
- Return
None.
-
void
EQEP_forceInterrupt
(uint32_t base, uint16_t intFlags)¶ Forces individual eQEP module interrupts.
This function forces eQEP module interrupt flags. The
intFlags parameter can be any of the following values OR’d together: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
- Parameters
base
: is the base address of the eQEP module.intFlags
: is a bit mask of the interrupt sources to be forced.
- Return
None.
-
bool
EQEP_getError
(uint32_t base)¶ Gets the encoder error indicator.
This function returns the error indicator for the eQEP module. It is an error for both of the signals of the quadrature input to change at the same time.
- Parameters
base
: is the base address of the eQEP module.
- Return
Returns true if an error has occurred and false otherwise.
-
uint16_t
EQEP_getStatus
(uint32_t base)¶ Returns content of the eQEP module status register
This function returns the contents of the status register. The value it returns is an OR of the following values:
- Parameters
base
: is the base address of the eQEP module.
EQEP_STS_UNIT_POS_EVNT - Unit position event detected
EQEP_STS_DIR_ON_1ST_IDX - If set, clockwise rotation (forward movement) occurred on the first index event
EQEP_STS_DIR_FLAG - If set, movement is clockwise rotation
EQEP_STS_DIR_LATCH - If set, clockwise rotation occurred on last index event marker
EQEP_STS_CAP_OVRFLW_ERROR - Overflow occurred in eQEP capture timer
EQEP_STS_CAP_DIR_ERROR - Direction change occurred between position capture events
EQEP_STS_1ST_IDX_FLAG - Set by the occurrence of the first index pulse
EQEP_STS_POS_CNT_ERROR - Position counter error occurred
- Return
Returns the value of the QEP status register.
-
void
EQEP_clearStatus
(uint32_t base, uint16_t statusFlags)¶ Clears selected fields of the eQEP module status register
This function clears the status register fields indicated by
statusFlags. The statusFlags parameter is the logical OR of any of the following:- Parameters
base
: is the base address of the eQEP module.statusFlags
: is the bit mask of the status flags to be cleared.
EQEP_STS_UNIT_POS_EVNT - Unit position event detected
EQEP_STS_CAP_OVRFLW_ERROR - Overflow occurred in eQEP capture timer
EQEP_STS_CAP_DIR_ERROR - Direction change occurred between position capture events
EQEP_STS_1ST_IDX_FLAG - Set by the occurrence of the first index pulse
- Note
Only the above status fields can be cleared. All others are read-only, non-sticky fields.
- Return
None.
-
void
EQEP_setCaptureConfig
(uint32_t base, EQEP_CAPCLKPrescale capPrescale, EQEP_UPEVNTPrescale evntPrescale)¶ Configures eQEP module edge-capture unit.
This function configures the operation of the eQEP module edge-capture unit. The
capPrescale parameter provides the configuration of the eQEP capture timer clock rate. It determines by which power of 2 between 1 and 128 inclusive SYSCLKOUT is divided. The macros for this parameter are in the format of EQEP_CAPTURE_CLK_DIV_X, where X is the divide value. For example, EQEP_CAPTURE_CLK_DIV_32 will give a capture timer clock frequency that is SYSCLKOUT/32.- Parameters
base
: is the base address of the eQEP module.capPrescale
: is the prescaler setting of the eQEP capture timer clk.evntPrescale
: is the prescaler setting of the unit position event frequency.
The evntPrescale parameter determines how frequently a unit position event occurs. The macro that can be passed this parameter is in the format EQEP_UNIT_POS_EVNT_DIV_X, where X is the number of quadrature clock periods between unit position events. For example, EQEP_UNIT_POS_EVNT_DIV_16 will result in a unit position event frequency of QCLK/16.
- Return
None.
-
void
EQEP_enableCapture
(uint32_t base)¶ Enables the eQEP module edge-capture unit.
This function enables operation of the eQEP module’s edge-capture unit.
- Parameters
base
: is the base address of the eQEP module.
- Return
None.
-
void
EQEP_disableCapture
(uint32_t base)¶ Disables the eQEP module edge-capture unit.
This function disables operation of the eQEP module’s edge-capture unit.
- Parameters
base
: is the base address of the eQEP module.
- Return
None.
-
uint16_t
EQEP_getCapturePeriod
(uint32_t base)¶ Gets the encoder capture period.
This function returns the period count value between the last successive eQEP position events.
- Parameters
base
: is the base address of the eQEP module.
- Return
The period count value between the last successive position events.
-
uint16_t
EQEP_getCaptureTimer
(uint32_t base)¶ Gets the encoder capture timer value.
This function returns the time base for the edge capture unit.
- Parameters
base
: is the base address of the eQEP module.
- Return
The capture timer value.
-
void
EQEP_enableCompare
(uint32_t base)¶ Enables the eQEP module position-compare unit.
This function enables operation of the eQEP module’s position-compare unit.
- Parameters
base
: is the base address of the eQEP module.
- Return
None.
-
void
EQEP_disableCompare
(uint32_t base)¶ Disables the eQEP module position-compare unit.
This function disables operation of the eQEP module’s position-compare unit.
- Parameters
base
: is the base address of the eQEP module.
- Return
None.
-
void
EQEP_setComparePulseWidth
(uint32_t base, uint16_t cycles)¶ Configures the position-compare unit’s sync output pulse width.
This function configures the width of the sync output pulse. The width of the pulse will be
cycles * 4 * the width of a SYSCLKOUT cycle. The maximum width is 4096 * 4 * SYSCLKOUT cycles.- Parameters
base
: is the base address of the eQEP module.cycles
: is the width of the pulse that can be generated on a position-compare event. It is in units of 4 SYSCLKOUT cycles.
- Return
None.
-
void
EQEP_loadUnitTimer
(uint32_t base, uint32_t period)¶ Loads the eQEP module unit timer period as number of SYSCLK cycles.
This function sets the unit time-out interrupt when it matches the value specified by
period The unit timer is clocked by SYSCLKOUT- Parameters
base
: is the base address of the eQEP module.period
: is period value at which a unit time-out interrupt is set.
- Return
None.
-
void
EQEP_enableUnitTimer
(uint32_t base, uint32_t period)¶ Enables the eQEP module unit timer.
This function enables operation of the eQEP module’s peripheral unit timer. The unit timer is clocked by SYSCLKOUT and will set the unit time-out interrupt when it matches the value specified by
period.- Parameters
base
: is the base address of the eQEP module.period
: is period value at which a unit time-out interrupt is set.
- Return
None.
-
void
EQEP_disableUnitTimer
(uint32_t base)¶ Disables the eQEP module unit timer.
This function disables operation of the eQEP module’s peripheral unit timer.
- Parameters
base
: is the base address of the eQEP module.
- Return
None.
-
void
EQEP_enableWatchdog
(uint32_t base, uint16_t period)¶ Enables the eQEP module watchdog timer.
This function enables operation of the eQEP module’s peripheral watchdog timer.
- Parameters
base
: is the base address of the eQEP module.period
: is watchdog period value at which a time-out will occur if no quadrature-clock event is detected.
- Note
When selecting period, note that the watchdog timer is clocked from SYSCLKOUT/64.
- Return
None.
-
void
EQEP_disableWatchdog
(uint32_t base)¶ Disables the eQEP module watchdog timer.
This function disables operation of the eQEP module’s peripheral watchdog timer.
- Parameters
base
: is the base address of the eQEP module.
- Return
None.
-
void
EQEP_setWatchdogTimerValue
(uint32_t base, uint16_t value)¶ Sets the eQEP module watchdog timer value.
This function sets the eQEP module’s watchdog timer value.
- Parameters
base
: is the base address of the eQEP module.value
: is the value to be written to the watchdog timer.
- Return
None.
-
uint16_t
EQEP_getWatchdogTimerValue
(uint32_t base)¶ Gets the eQEP module watchdog timer value.
- Return
Returns the current watchdog timer value.
- Parameters
base
: is the base address of the eQEP module.
-
void
EQEP_setPositionInitMode
(uint32_t base, uint16_t initMode)¶ Configures the mode in which the position counter is initialized.
This function configures the events on which the position count can be initialized. The
initMode parameter provides the mode as either EQEP_INIT_DO_NOTHING (no action configured) or one of the following strobe events, index events, or a logical OR of both a strobe event and an index event.- Parameters
base
: is the base address of the eQEP module.initMode
: is the configuration for initializing the position count. See below for a description of this parameter.
EQEP_INIT_RISING_STROBE or EQEP_INIT_EDGE_DIR_STROBE specify which strobe event will initialize the position counter.
EQEP_INIT_RISING_INDEX or EQEP_INIT_FALLING_INDEX specify which index event will initialize the position counter.
Use EQEP_setSWPositionInit() to cause a software initialization and EQEP_setInitialPosition() to set the value that gets loaded into the position counter upon initialization.
- Return
None.
-
void
EQEP_setSWPositionInit
(uint32_t base, bool initialize)¶ Sets the software initialization of the encoder position counter.
This function does a software initialization of the position counter when the
initialize parameter is true. When false, the QEPCTL[SWI] bit is cleared and no action is taken.- Parameters
base
: is the base address of the eQEP module.initialize
: is a flag to specify if software initialization of the position counter is enabled.
The init value to be loaded into the position counter can be set with EQEP_setInitialPosition(). Additional initialization causes can be configured with EQEP_setPositionInitMode().
- Return
None.
-
void
EQEP_setInitialPosition
(uint32_t base, uint32_t position)¶ Sets the init value for the encoder position counter.
This function sets the init value for position of the encoder. See
EQEP_setPositionInitMode() to set the initialization cause or EQEP_setSWPositionInit() to cause a software initialization.- Parameters
base
: is the base address of the eQEP module.position
: is the value to be written to the position counter upon. initialization.
- Return
None.
-
void
EQEP_setLatchMode
(uint32_t base, uint32_t latchMode)¶ Configures the quadrature modes in which the position count can be latched.
This function configures the events on which the position count and several other registers can be latched. The
latchMode parameter provides the mode as the logical OR of several values.- Parameters
base
: is the base address of the eQEP module.latchMode
: is the configuration for latching of the position count and several other registers. See below for a description of this parameter.
EQEP_LATCH_CNT_READ_BY_CPU or EQEP_LATCH_UNIT_TIME_OUT specify the event that latches the position counter. This latch register can be read using EQEP_getPositionLatch(). The capture timer and capture period are also latched based on this setting, and can be read using EQEP_getCaptureTimerLatch() and EQEP_getCapturePeriodLatch().
EQEP_LATCH_RISING_STROBE or EQEP_LATCH_EDGE_DIR_STROBE specify which strobe event will latch the position counter into the strobe position latch register. This register can be read with EQEP_getStrobePositionLatch().
EQEP_LATCH_RISING_INDEX, EQEP_LATCH_FALLING_INDEX, or EQEP_LATCH_SW_INDEX_MARKER specify which index event will latch the position counter into the index position latch register. This register can be read with EQEP_getIndexPositionLatch().
- Return
None.
-
uint32_t
EQEP_getIndexPositionLatch
(uint32_t base)¶ Gets the encoder position that was latched on an index event.
This function returns the value in the index position latch register. The position counter is latched into this register on either a rising index edge, a falling index edge, or a software index marker. This is configured using
EQEP_setLatchMode().- Parameters
base
: is the base address of the eQEP module.
- Return
The position count latched on an index event.
-
uint32_t
EQEP_getStrobePositionLatch
(uint32_t base)¶ Gets the encoder position that was latched on a strobe event.
This function returns the value in the strobe position latch register. The position counter can be configured to be latched into this register on rising strobe edges only or on rising strobe edges while moving clockwise and falling strobe edges while moving counter-clockwise. This is configured using
EQEP_setLatchMode().- Parameters
base
: is the base address of the eQEP module.
- Return
The position count latched on a strobe event.
-
uint32_t
EQEP_getPositionLatch
(uint32_t base)¶ Gets the encoder position that was latched on a unit time-out event.
This function returns the value in the position latch register. The position counter is latched into this register either on a unit time-out event.
- Parameters
base
: is the base address of the eQEP module.
- Return
The position count latch register value.
-
uint16_t
EQEP_getCaptureTimerLatch
(uint32_t base)¶ Gets the encoder capture timer latch.
This function returns the value in the capture timer latch register. The capture timer value is latched into this register either on a unit time-out event or upon the CPU reading the eQEP position counter. This is configured using
EQEP_setLatchMode().- Parameters
base
: is the base address of the eQEP module.
- Return
The edge-capture timer latch value.
-
uint16_t
EQEP_getCapturePeriodLatch
(uint32_t base)¶ Gets the encoder capture period latch.
This function returns the value in the capture period latch register. The capture period value is latched into this register either on a unit time-out event or upon the CPU reading the eQEP position counter. This is configured using
EQEP_setLatchMode().- Parameters
base
: is the base address of the eQEP module.
- Return
The edge-capture period latch value.
-
void
EQEP_setQMAModuleMode
(uint32_t base, EQEP_QMAMode qmaMode)¶ Set the quadrature mode adapter (QMA) module mode
This function sets the quadrature mode adapter module mode. The possible modes are passed to the function through the
qmaMode parameter which can take the values EQEP_QMA_MODE_BYPASS, EQEP_QMA_MODE_1, or EQEP_QMA_MODE_2.- Parameters
base
: is the base address of the eQEP module.qmaMode
: is the mode in which the QMA module will operate.
To use the QMA module, you must first put the eQEP module into direction-count mode (EQEP_CONFIG_CLOCK_DIR) using EQEP_setConfig().
- Return
None.
-
void
EQEP_setStrobeSource
(uint32_t base, EQEP_StrobeSource strobeSrc)¶ Set the strobe input source of the eQEP module.
This function sets the source of the eQEP module’s strobe signal. The possible values of the
strobeSrc parameter areEQEP_STROBE_FROM_GPIO - The strobe is used as-is after passing through the polarity select logic.
EQEP_STROBE_OR_ADCSOCA - The strobe is OR’d with the ADCSOCA signal after passing through the polarity select logic.
EQEP_STROBE_OR_ADCSOCB - The strobe is OR’d with the ADCSOCB signal after passing through the polarity select logic.
- Parameters
base
: is the base address of the eQEP module.strobeSrc
: is the source of the strobe signal.
- Return
None.
-
void
EQEP_enableDirectionChangeDuringIndex
(uint32_t base)¶ Enables the index direction enhancement mode of the eQEP module
This function enables the enhancement mode for direction change during Index event
- Parameters
base
: is the base address of the eQEP module.
- Return
None.
-
void
EQEP_disableDirectionChangeDuringIndex
(uint32_t base)¶ Disables the index direction enhancement mode of the eQEP module
This function disables the enhancement mode for direction change during Index event
- Parameters
base
: is the base address of the eQEP module.
- Return
None.
-
void
EQEP_selectSource
(uint32_t base, EQEP_SourceSelect sourceConfig)¶ Selects the source for eQEPA/B/I signals
This function configures the sources for QEPA,QEPB and Index of eQEP module
- Parameters
base
: is the base address of the enhanced quadrature encoder pulse (eQEP) modulesourceConfig
: is the structure that contains source configuration
- Return
None.
-
void
EQEP_setEmulationMode
(uint32_t base, EQEP_EmulationMode emuMode)¶ Set the emulation mode of the eQEP module.
This function sets the eQEP module’s emulation mode. This mode determines how the timers are affected by an emulation suspend. Valid values for the
emuMode parameter are the following:- Parameters
base
: is the base address of the eQEP module.emuMode
: is the mode operation upon an emulation suspend.
EQEP_EMULATIONMODE_STOPIMMEDIATELY - The position counter, watchdog counter, unit timer, and capture timer all stop immediately.
EQEP_EMULATIONMODE_STOPATROLLOVER - The position counter, watchdog counter, unit timer all count until period rollover. The capture timer counts until the next unit period event.
EQEP_EMULATIONMODE_RUNFREE - The position counter, watchdog counter, unit timer, and capture timer are all unaffected by an emulation suspend.
- Return
None.
-
void
EQEP_setCompareConfig
(uint32_t base, uint16_t config, uint32_t compareValue, uint16_t cycles)¶ Configures eQEP module position-compare unit.
This function configures the operation of the eQEP module position-compare unit. The
config parameter provides the configuration of the position-compare unit and is the logical OR of several values:- Parameters
base
: is the base address of the eQEP module.config
: is the configuration for the eQEP module position-compare unit. See below for a description of this parameter.compareValue
: is the value to which the position count value is compared for a position-compare event.cycles
: is the width of the pulse that can be generated on a position-compare event. It is in units of 4 SYSCLKOUT cycles.
EQEP_COMPARE_NO_SYNC_OUT, EQEP_COMPARE_IDX_SYNC_OUT, or EQEP_COMPARE_STROBE_SYNC_OUT specify if there is a sync output pulse and which pin should be used.
EQEP_COMPARE_NO_SHADOW, EQEP_COMPARE_LOAD_ON_ZERO, or EQEP_COMPARE_LOAD_ON_MATCH specify if a shadow is enabled and when should the load should occurQPOSCNT = 0 or QPOSCNT = QPOSCOMP.
The cycles is used to select the width of the sync output pulse. The width of the resulting pulse will be cycles * 4 * the width of a SYSCLKOUT cycle. The maximum width is 4096 * 4 * SYSCLKOUT cycles.
- Note
You can set the sync pulse width independently using the EQEP_setComparePulseWidth() function.
- Return
None.
-
void
EQEP_setInputPolarity
(uint32_t base, bool invertQEPA, bool invertQEPB, bool invertIndex, bool invertStrobe)¶ Sets the polarity of the eQEP module’s input signals.
This function configures the polarity of the inputs to the eQEP module. To negate the polarity of any of the input signals, pass
true into its corresponding parameter in this function. Pass false to leave it as-is.- Parameters
base
: is the base address of the eQEP module.invertQEPA
: is the flag to negate the QEPA input.invertQEPB
: is the flag to negate the QEPA input.invertIndex
: is the flag to negate the index input.invertStrobe
: is the flag to negate the strobe input.
- Return
None.
-
struct
EQEP_SourceSelect
¶ - #include <eqep.h>
Structure to be passed to EQEP_selectSource() as sourceConfig.
-
The code for this module is contained in driverlib/eqep.c, with driverlib/eqep.h containing the API declarations for use by applications.