123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529 |
- #ifndef _FSL_ADC16_H_
- #define _FSL_ADC16_H_
- #include "fsl_common.h"
- #define FSL_ADC16_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
- enum _adc16_channel_status_flags
- {
- kADC16_ChannelConversionDoneFlag = ADC_SC1_COCO_MASK,
- };
- enum _adc16_status_flags
- {
- kADC16_ActiveFlag = ADC_SC2_ADACT_MASK,
- #if defined(FSL_FEATURE_ADC16_HAS_CALIBRATION) && FSL_FEATURE_ADC16_HAS_CALIBRATION
- kADC16_CalibrationFailedFlag = ADC_SC3_CALF_MASK,
- #endif
- };
- #if defined(FSL_FEATURE_ADC16_HAS_MUX_SELECT) && FSL_FEATURE_ADC16_HAS_MUX_SELECT
- typedef enum _adc_channel_mux_mode
- {
- kADC16_ChannelMuxA = 0U,
- kADC16_ChannelMuxB = 1U,
- } adc16_channel_mux_mode_t;
- #endif
- typedef enum _adc16_clock_divider
- {
- kADC16_ClockDivider1 = 0U,
- kADC16_ClockDivider2 = 1U,
- kADC16_ClockDivider4 = 2U,
- kADC16_ClockDivider8 = 3U,
- } adc16_clock_divider_t;
- typedef enum _adc16_resolution
- {
-
- kADC16_Resolution8or9Bit = 0U,
- kADC16_Resolution12or13Bit = 1U,
- kADC16_Resolution10or11Bit = 2U,
-
- kADC16_ResolutionSE8Bit = kADC16_Resolution8or9Bit,
- kADC16_ResolutionSE12Bit = kADC16_Resolution12or13Bit,
- kADC16_ResolutionSE10Bit = kADC16_Resolution10or11Bit,
- #if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
- kADC16_ResolutionDF9Bit = kADC16_Resolution8or9Bit,
- kADC16_ResolutionDF13Bit = kADC16_Resolution12or13Bit,
- kADC16_ResolutionDF11Bit = kADC16_Resolution10or11Bit,
- #endif
- #if defined(FSL_FEATURE_ADC16_MAX_RESOLUTION) && (FSL_FEATURE_ADC16_MAX_RESOLUTION >= 16U)
-
- kADC16_Resolution16Bit = 3U,
- kADC16_ResolutionSE16Bit = kADC16_Resolution16Bit,
- #if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
- kADC16_ResolutionDF16Bit = kADC16_Resolution16Bit,
- #endif
- #endif
- } adc16_resolution_t;
- typedef enum _adc16_clock_source
- {
- kADC16_ClockSourceAlt0 = 0U,
- kADC16_ClockSourceAlt1 = 1U,
- kADC16_ClockSourceAlt2 = 2U,
- kADC16_ClockSourceAlt3 = 3U,
-
- kADC16_ClockSourceAsynchronousClock = kADC16_ClockSourceAlt3,
- } adc16_clock_source_t;
- typedef enum _adc16_long_sample_mode
- {
- kADC16_LongSampleCycle24 = 0U,
- kADC16_LongSampleCycle16 = 1U,
- kADC16_LongSampleCycle10 = 2U,
- kADC16_LongSampleCycle6 = 3U,
- kADC16_LongSampleDisabled = 4U,
- } adc16_long_sample_mode_t;
- typedef enum _adc16_reference_voltage_source
- {
- kADC16_ReferenceVoltageSourceVref = 0U,
- kADC16_ReferenceVoltageSourceValt = 1U,
- } adc16_reference_voltage_source_t;
- #if defined(FSL_FEATURE_ADC16_HAS_HW_AVERAGE) && FSL_FEATURE_ADC16_HAS_HW_AVERAGE
- typedef enum _adc16_hardware_average_mode
- {
- kADC16_HardwareAverageCount4 = 0U,
- kADC16_HardwareAverageCount8 = 1U,
- kADC16_HardwareAverageCount16 = 2U,
- kADC16_HardwareAverageCount32 = 3U,
- kADC16_HardwareAverageDisabled = 4U,
- } adc16_hardware_average_mode_t;
- #endif
- typedef enum _adc16_hardware_compare_mode
- {
- kADC16_HardwareCompareMode0 = 0U,
- kADC16_HardwareCompareMode1 = 1U,
- kADC16_HardwareCompareMode2 = 2U,
- kADC16_HardwareCompareMode3 = 3U,
- } adc16_hardware_compare_mode_t;
- #if defined(FSL_FEATURE_ADC16_HAS_PGA) && FSL_FEATURE_ADC16_HAS_PGA
- typedef enum _adc16_pga_gain
- {
- kADC16_PGAGainValueOf1 = 0U,
- kADC16_PGAGainValueOf2 = 1U,
- kADC16_PGAGainValueOf4 = 2U,
- kADC16_PGAGainValueOf8 = 3U,
- kADC16_PGAGainValueOf16 = 4U,
- kADC16_PGAGainValueOf32 = 5U,
- kADC16_PGAGainValueOf64 = 6U,
- } adc16_pga_gain_t;
- #endif
- typedef struct _adc16_config
- {
- adc16_reference_voltage_source_t referenceVoltageSource;
- adc16_clock_source_t clockSource;
- bool enableAsynchronousClock;
- adc16_clock_divider_t clockDivider;
- adc16_resolution_t resolution;
- adc16_long_sample_mode_t longSampleMode;
- bool enableHighSpeed;
- bool enableLowPower;
- bool enableContinuousConversion;
- } adc16_config_t;
- typedef struct _adc16_hardware_compare_config
- {
- adc16_hardware_compare_mode_t hardwareCompareMode;
- int16_t value1;
- int16_t value2;
- } adc16_hardware_compare_config_t;
- typedef struct _adc16_channel_config
- {
- uint32_t channelNumber;
- bool enableInterruptOnConversionCompleted;
- #if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
- bool enableDifferentialConversion;
- #endif
- } adc16_channel_config_t;
- #if defined(FSL_FEATURE_ADC16_HAS_PGA) && FSL_FEATURE_ADC16_HAS_PGA
- typedef struct _adc16_pga_config
- {
- adc16_pga_gain_t pgaGain;
- bool enableRunInNormalMode;
- #if defined(FSL_FEATURE_ADC16_HAS_PGA_CHOPPING) && FSL_FEATURE_ADC16_HAS_PGA_CHOPPING
- bool disablePgaChopping;
- #endif
- #if defined(FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT) && FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT
- bool enableRunInOffsetMeasurement;
- #endif
- } adc16_pga_config_t;
- #endif
- #if defined(__cplusplus)
- extern "C" {
- #endif
- void ADC16_Init(ADC_Type *base, const adc16_config_t *config);
- void ADC16_Deinit(ADC_Type *base);
- void ADC16_GetDefaultConfig(adc16_config_t *config);
- #if defined(FSL_FEATURE_ADC16_HAS_CALIBRATION) && FSL_FEATURE_ADC16_HAS_CALIBRATION
- status_t ADC16_DoAutoCalibration(ADC_Type *base);
- #endif
- #if defined(FSL_FEATURE_ADC16_HAS_OFFSET_CORRECTION) && FSL_FEATURE_ADC16_HAS_OFFSET_CORRECTION
- static inline void ADC16_SetOffsetValue(ADC_Type *base, int16_t value)
- {
- base->OFS = (uint32_t)(value);
- }
- #endif
- #if defined(FSL_FEATURE_ADC16_HAS_DMA) && FSL_FEATURE_ADC16_HAS_DMA
- static inline void ADC16_EnableDMA(ADC_Type *base, bool enable)
- {
- if (enable)
- {
- base->SC2 |= ADC_SC2_DMAEN_MASK;
- }
- else
- {
- base->SC2 &= ~ADC_SC2_DMAEN_MASK;
- }
- }
- #endif
- static inline void ADC16_EnableHardwareTrigger(ADC_Type *base, bool enable)
- {
- if (enable)
- {
- base->SC2 |= ADC_SC2_ADTRG_MASK;
- }
- else
- {
- base->SC2 &= ~ADC_SC2_ADTRG_MASK;
- }
- }
- #if defined(FSL_FEATURE_ADC16_HAS_MUX_SELECT) && FSL_FEATURE_ADC16_HAS_MUX_SELECT
- void ADC16_SetChannelMuxMode(ADC_Type *base, adc16_channel_mux_mode_t mode);
- #endif
- void ADC16_SetHardwareCompareConfig(ADC_Type *base, const adc16_hardware_compare_config_t *config);
- #if defined(FSL_FEATURE_ADC16_HAS_HW_AVERAGE) && FSL_FEATURE_ADC16_HAS_HW_AVERAGE
- void ADC16_SetHardwareAverage(ADC_Type *base, adc16_hardware_average_mode_t mode);
- #endif
- #if defined(FSL_FEATURE_ADC16_HAS_PGA) && FSL_FEATURE_ADC16_HAS_PGA
- void ADC16_SetPGAConfig(ADC_Type *base, const adc16_pga_config_t *config);
- #endif
- uint32_t ADC16_GetStatusFlags(ADC_Type *base);
- void ADC16_ClearStatusFlags(ADC_Type *base, uint32_t mask);
- void ADC16_SetChannelConfig(ADC_Type *base, uint32_t channelGroup, const adc16_channel_config_t *config);
- static inline uint32_t ADC16_GetChannelConversionValue(ADC_Type *base, uint32_t channelGroup)
- {
- assert(channelGroup < ADC_R_COUNT);
- return base->R[channelGroup];
- }
- uint32_t ADC16_GetChannelStatusFlags(ADC_Type *base, uint32_t channelGroup);
- #if defined(__cplusplus)
- }
- #endif
- #endif
|