12#include "fsl_common.h"
13#include "fsl_enc_defines.h"
23#define FSL_ENC_DRIVER_VERSION (MAKE_VERSION(2, 2, 1))
34#if !(defined(FSL_FEATURE_ENC_HAS_NO_CTRL2_SAB_INT) && FSL_FEATURE_ENC_HAS_NO_CTRL2_SAB_INT)
53#if !(defined(FSL_FEATURE_ENC_HAS_NO_CTRL2_SAB_INT) && FSL_FEATURE_ENC_HAS_NO_CTRL2_SAB_INT)
146#if (defined(FSL_FEATURE_ENC_HAS_CTRL3) && FSL_FEATURE_ENC_HAS_CTRL3)
153typedef enum _enc_prescaler
162 kENC_ClockDiv128 = 7,
163 kENC_ClockDiv256 = 8,
164 kENC_ClockDiv512 = 9,
165 kENC_ClockDiv1024 = 10,
166 kENC_ClockDiv2048 = 11,
167 kENC_ClockDiv4096 = 12,
168 kENC_ClockDiv8192 = 13,
169 kENC_ClockDiv16384 = 14,
170 kENC_ClockDiv32768 = 15,
174#if (defined(FSL_FEATURE_ENC_HAS_FILT_PRSC) && FSL_FEATURE_ENC_HAS_FILT_PRSC)
181typedef enum _enc_filter_prescaler
183 kENC_FilterPrescalerDiv1 = 0U,
184 kENC_FilterPrescalerDiv2 = 1U,
185 kENC_FilterPrescalerDiv4 = 2U,
186 kENC_FilterPrescalerDiv8 = 3U,
187 kENC_FilterPrescalerDiv16 = 4U,
188 kENC_FilterPrescalerDiv32 = 5U,
189 kENC_FilterPrescalerDiv64 = 6U,
190 kENC_FilterPrescalerDiv128 = 7U,
191} enc_filter_prescaler_t;
216#if (defined(FSL_FEATURE_ENC_HAS_FILT_PRSC) && FSL_FEATURE_ENC_HAS_FILT_PRSC)
217 enc_filter_prescaler_t filterPrescaler;
242#if (defined(FSL_FEATURE_ENC_HAS_CTRL3) && FSL_FEATURE_ENC_HAS_CTRL3)
244 bool enablePeriodMeasurementFunction;
245 enc_prescaler_t prescalerValue;
263#if defined(__cplusplus)
396static inline uint16_t ENC_GetSignalStatusFlags(
ENC_Type *base)
468static inline uint16_t ENC_GetPositionDifferenceValue(
ENC_Type *base)
484static inline uint16_t ENC_GetHoldPositionDifferenceValue(
ENC_Type *base)
496static inline uint16_t ENC_GetRevolutionValue(
ENC_Type *base)
512static inline uint16_t ENC_GetHoldRevolutionValue(
ENC_Type *base)
517#if (defined(FSL_FEATURE_ENC_HAS_LASTEDGE) && FSL_FEATURE_ENC_HAS_LASTEDGE)
525static inline uint16_t ENC_GetLastEdgeTimeValue(
ENC_Type *base)
527 return base->LASTEDGE;
537static inline uint16_t ENC_GetHoldLastEdgeTimeValue(
ENC_Type *base)
539 return base->LASTEDGEH;
543#if (defined(FSL_FEATURE_ENC_HAS_POSDPER) && FSL_FEATURE_ENC_HAS_POSDPER)
551static inline uint16_t ENC_GetPositionDifferencePeriodValue(
ENC_Type *base)
553 return base->POSDPER;
563static inline uint16_t ENC_GetPositionDifferencePeriodBufferValue(
ENC_Type *base)
565 return base->POSDPERBFR;
575static inline uint16_t ENC_GetHoldPositionDifferencePeriodValue(
ENC_Type *base)
577 return base->POSDPERH;
582#if defined(__cplusplus)
_enc_interrupt_enable
Interrupt enable/disable mask.
Definition fsl_enc.h:29
void ENC_EnableWatchdog(ENC_Type *base, bool enable)
Enable watchdog for ENC module.
Definition fsl_enc.c:332
_enc_status_flags
Status flag mask.
Definition fsl_enc.h:48
uint32_t ENC_GetPositionValue(ENC_Type *base)
Get the current position counter's value.
Definition fsl_enc.c:620
_enc_index_trigger_mode
Define INDEX signal's trigger mode.
Definition fsl_enc.h:96
enum _enc_position_match_mode enc_position_match_mode_t
Define type for the condition of POSMATCH pulses.
enum _enc_self_test_direction enc_self_test_direction_t
Define type for direction of self test generated signal.
uint32_t ENC_GetEnabledInterrupts(ENC_Type *base)
Get the enabled interrupts' flags.
Definition fsl_enc.c:562
void ENC_Init(ENC_Type *base, const enc_config_t *config)
Initialization for the ENC module.
Definition fsl_enc.c:94
void ENC_ClearStatusFlags(ENC_Type *base, uint32_t mask)
Clear the status flags.
Definition fsl_enc.c:401
enum _enc_revolution_count_condition enc_revolution_count_condition_t
Define type for determining how the revolution counter (REV) is incremented/decremented.
void ENC_EnableInterrupts(ENC_Type *base, uint32_t mask)
Enable the interrupts.
Definition fsl_enc.c:455
_enc_home_trigger_mode
Define HOME signal's trigger mode.
Definition fsl_enc.h:84
void ENC_SetInitialPositionValue(ENC_Type *base, uint32_t value)
Set initial position value for ENC module.
Definition fsl_enc.c:607
enum _enc_decoder_work_mode enc_decoder_work_mode_t
Define type for decoder work mode.
_enc_self_test_direction
Define type for direction of self test generated signal.
Definition fsl_enc.h:141
void ENC_GetDefaultConfig(enc_config_t *config)
Get an available pre-defined settings for ENC's configuration.
Definition fsl_enc.c:246
void ENC_DoSoftwareLoadInitialPositionValue(ENC_Type *base)
Load the initial position value to position counter.
Definition fsl_enc.c:287
struct _enc_self_test_config enc_self_test_config_t
Define configuration structure for self test module.
enum _enc_home_trigger_mode enc_home_trigger_mode_t
Define HOME signal's trigger mode.
_enc_decoder_work_mode
Define type for decoder work mode.
Definition fsl_enc.h:111
void ENC_SetSelfTestConfig(ENC_Type *base, const enc_self_test_config_t *config)
Enable and configure the self test function.
Definition fsl_enc.c:305
uint32_t ENC_GetHoldPositionValue(ENC_Type *base)
Get the hold position counter's value.
Definition fsl_enc.c:642
_enc_signal_status_flags
Signal status flag mask.
Definition fsl_enc.h:67
uint32_t ENC_GetStatusFlags(ENC_Type *base)
Get the status flags.
Definition fsl_enc.c:350
struct _enc_config enc_config_t
Define user configuration structure for ENC module.
enum _enc_index_trigger_mode enc_index_trigger_mode_t
Define INDEX signal's trigger mode.
_enc_position_match_mode
Define type for the condition of POSMATCH pulses.
Definition fsl_enc.h:121
_enc_revolution_count_condition
Define type for determining how the revolution counter (REV) is incremented/decremented.
Definition fsl_enc.h:131
void ENC_Deinit(ENC_Type *base)
De-initialization for the ENC module.
Definition fsl_enc.c:212
void ENC_DisableInterrupts(ENC_Type *base, uint32_t mask)
Disable the interrupts.
Definition fsl_enc.c:508
@ kENC_PositionCompareInerruptEnable
Definition fsl_enc.h:33
@ kENC_INDEXPulseInterruptEnable
Definition fsl_enc.h:31
@ kENC_SimultBothPhaseChangeInterruptEnable
Definition fsl_enc.h:35
@ kENC_HOMETransitionInterruptEnable
Definition fsl_enc.h:30
@ kENC_PositionRollOverInterruptEnable
Definition fsl_enc.h:38
@ kENC_PositionRollUnderInterruptEnable
Definition fsl_enc.h:39
@ kENC_WatchdogTimeoutInterruptEnable
Definition fsl_enc.h:32
@ kENC_INDEXPulseFlag
Definition fsl_enc.h:50
@ kENC_SimultBothPhaseChangeFlag
Definition fsl_enc.h:54
@ kENC_PositionRollOverFlag
Definition fsl_enc.h:56
@ kENC_PositionRollUnderFlag
Definition fsl_enc.h:57
@ kENC_WatchdogTimeoutFlag
Definition fsl_enc.h:51
@ kENC_PositionCompareFlag
Definition fsl_enc.h:52
@ kENC_HOMETransitionFlag
Definition fsl_enc.h:49
@ kENC_LastCountDirectionFlag
Definition fsl_enc.h:58
@ kENC_INDEXTriggerOnFallingEdge
Definition fsl_enc.h:99
@ kENC_INDEXTriggerOnRisingEdge
Definition fsl_enc.h:98
@ kENC_INDEXTriggerDisabled
Definition fsl_enc.h:97
@ kENC_HOMETriggerDisabled
Definition fsl_enc.h:85
@ kENC_HOMETriggerOnRisingEdge
Definition fsl_enc.h:86
@ kENC_HOMETriggerOnFallingEdge
Definition fsl_enc.h:87
@ kENC_SelfTestDirectionNegative
Definition fsl_enc.h:143
@ kENC_SelfTestDirectionPositive
Definition fsl_enc.h:142
@ kENC_DecoderWorkAsSignalPhaseCountMode
Definition fsl_enc.h:113
@ kENC_DecoderWorkAsNormalMode
Definition fsl_enc.h:112
@ kENC_RawPHBStatusFlag
Definition fsl_enc.h:70
@ kENC_FilteredPHBStatusFlag
Definition fsl_enc.h:74
@ kENC_RawINDEXStatusFlag
Definition fsl_enc.h:69
@ kENC_RawHOMEStatusFlag
Definition fsl_enc.h:68
@ kENC_FilteredPHAStatusFlag
Definition fsl_enc.h:75
@ kENC_RawPHAEXStatusFlag
Definition fsl_enc.h:71
@ kENC_FilteredINDEXStatusFlag
Definition fsl_enc.h:73
@ kENC_FilteredHOMEStatusFlag
Definition fsl_enc.h:72
@ kENC_POSMATCHOnPositionCounterEqualToComapreValue
Definition fsl_enc.h:122
@ kENC_POSMATCHOnReadingAnyPositionCounter
Definition fsl_enc.h:124
@ kENC_RevolutionCountOnRollOverModulus
Definition fsl_enc.h:133
@ kENC_RevolutionCountOnINDEXPulse
Definition fsl_enc.h:132
Define user configuration structure for ENC module.
Definition fsl_enc.h:198
bool enableWatchdog
Definition fsl_enc.h:211
enc_position_match_mode_t positionMatchMode
Definition fsl_enc.h:232
enc_index_trigger_mode_t INDEXTriggerMode
Definition fsl_enc.h:205
uint16_t filterSamplePeriod
Definition fsl_enc.h:226
enc_home_trigger_mode_t HOMETriggerMode
Definition fsl_enc.h:204
uint16_t filterCount
Definition fsl_enc.h:221
enc_revolution_count_condition_t revolutionCountCondition
Definition fsl_enc.h:236
bool enableTRIGGERClearPositionCounter
Definition fsl_enc.h:206
bool enableTRIGGERClearHoldPositionCounter
Definition fsl_enc.h:207
uint16_t watchdogTimeoutValue
Definition fsl_enc.h:212
bool enableModuloCountMode
Definition fsl_enc.h:237
uint32_t positionCompareValue
Definition fsl_enc.h:233
enc_decoder_work_mode_t decoderWorkMode
Definition fsl_enc.h:201
uint32_t positionModulusValue
Definition fsl_enc.h:238
bool enableReverseDirection
Definition fsl_enc.h:200
uint32_t positionInitialValue
Definition fsl_enc.h:240
Define configuration structure for self test module.
Definition fsl_enc.h:256
uint16_t signalPeriod
Definition fsl_enc.h:259
uint16_t signalCount
Definition fsl_enc.h:258
enc_self_test_direction_t signalDirection
Definition fsl_enc.h:257
Definition QDC_FSL/src/fsl_enc_defines.h:15