123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710 |
- ((uint32_t)((~(ALL_FLAGS_MASK | TSI_GENCS_EXTCHRG_MASK)) | (3U << TSI_V4_EXTCHRG_FILTER_BITS_SHIFT)))
- ((uint32_t)((~(ALL_FLAGS_MASK | TSI_GENCS_EXTCHRG_MASK)) | (1U << TSI_V4_EXTCHRG_RESISTOR_BIT_SHIFT)))
- typedef enum _tsi_n_consecutive_scans
- {
- kTSI_ConsecutiveScansNumber_1time = 0U,
- kTSI_ConsecutiveScansNumber_2time = 1U,
- kTSI_ConsecutiveScansNumber_3time = 2U,
- kTSI_ConsecutiveScansNumber_4time = 3U,
- kTSI_ConsecutiveScansNumber_5time = 4U,
- kTSI_ConsecutiveScansNumber_6time = 5U,
- kTSI_ConsecutiveScansNumber_7time = 6U,
- kTSI_ConsecutiveScansNumber_8time = 7U,
- kTSI_ConsecutiveScansNumber_9time = 8U,
- kTSI_ConsecutiveScansNumber_10time = 9U,
- kTSI_ConsecutiveScansNumber_11time = 10U,
- kTSI_ConsecutiveScansNumber_12time = 11U,
- kTSI_ConsecutiveScansNumber_13time = 12U,
- kTSI_ConsecutiveScansNumber_14time = 13U,
- kTSI_ConsecutiveScansNumber_15time = 14U,
- kTSI_ConsecutiveScansNumber_16time = 15U,
- kTSI_ConsecutiveScansNumber_17time = 16U,
- kTSI_ConsecutiveScansNumber_18time = 17U,
- kTSI_ConsecutiveScansNumber_19time = 18U,
- kTSI_ConsecutiveScansNumber_20time = 19U,
- kTSI_ConsecutiveScansNumber_21time = 20U,
- kTSI_ConsecutiveScansNumber_22time = 21U,
- kTSI_ConsecutiveScansNumber_23time = 22U,
- kTSI_ConsecutiveScansNumber_24time = 23U,
- kTSI_ConsecutiveScansNumber_25time = 24U,
- kTSI_ConsecutiveScansNumber_26time = 25U,
- kTSI_ConsecutiveScansNumber_27time = 26U,
- kTSI_ConsecutiveScansNumber_28time = 27U,
- kTSI_ConsecutiveScansNumber_29time = 28U,
- kTSI_ConsecutiveScansNumber_30time = 29U,
- kTSI_ConsecutiveScansNumber_31time = 30U,
- kTSI_ConsecutiveScansNumber_32time = 31U
- } tsi_n_consecutive_scans_t;
- typedef enum _tsi_electrode_osc_prescaler
- {
- kTSI_ElecOscPrescaler_1div = 0U,
- kTSI_ElecOscPrescaler_2div = 1U,
- kTSI_ElecOscPrescaler_4div = 2U,
- kTSI_ElecOscPrescaler_8div = 3U,
- kTSI_ElecOscPrescaler_16div = 4U,
- kTSI_ElecOscPrescaler_32div = 5U,
- kTSI_ElecOscPrescaler_64div = 6U,
- kTSI_ElecOscPrescaler_128div = 7U
- } tsi_electrode_osc_prescaler_t;
- typedef enum _tsi_analog_mode
- {
- kTSI_AnalogModeSel_Capacitive = 0U,
- kTSI_AnalogModeSel_NoiseNoFreqLim = 4U,
- kTSI_AnalogModeSel_NoiseFreqLim = 8U,
- kTSI_AnalogModeSel_AutoNoise = 12U
- } tsi_analog_mode_t;
- typedef enum _tsi_reference_osc_charge_current
- {
- kTSI_RefOscChargeCurrent_500nA = 0U,
- kTSI_RefOscChargeCurrent_1uA = 1U,
- kTSI_RefOscChargeCurrent_2uA = 2U,
- kTSI_RefOscChargeCurrent_4uA = 3U,
- kTSI_RefOscChargeCurrent_8uA = 4U,
- kTSI_RefOscChargeCurrent_16uA = 5U,
- kTSI_RefOscChargeCurrent_32uA = 6U,
- kTSI_RefOscChargeCurrent_64uA = 7U
- } tsi_reference_osc_charge_current_t;
- typedef enum _tsi_osc_voltage_rails
- {
- kTSI_OscVolRailsOption_0 = 0U,
- kTSI_OscVolRailsOption_1 = 1U,
- kTSI_OscVolRailsOption_2 = 2U,
- kTSI_OscVolRailsOption_3 = 3U
- } tsi_osc_voltage_rails_t;
- typedef enum _tsi_external_osc_charge_current
- {
- kTSI_ExtOscChargeCurrent_500nA = 0U,
- kTSI_ExtOscChargeCurrent_1uA = 1U,
- kTSI_ExtOscChargeCurrent_2uA = 2U,
- kTSI_ExtOscChargeCurrent_4uA = 3U,
- kTSI_ExtOscChargeCurrent_8uA = 4U,
- kTSI_ExtOscChargeCurrent_16uA = 5U,
- kTSI_ExtOscChargeCurrent_32uA = 6U,
- kTSI_ExtOscChargeCurrent_64uA = 7U
- } tsi_external_osc_charge_current_t;
- typedef enum _tsi_series_resistance
- {
- kTSI_SeriesResistance_32k = 0U,
- kTSI_SeriesResistance_187k = 1U
- } tsi_series_resistor_t;
- typedef enum _tsi_filter_bits
- {
- kTSI_FilterBits_3 = 0U,
- kTSI_FilterBits_2 = 1U,
- kTSI_FilterBits_1 = 2U,
- kTSI_FilterBits_0 = 3U
- } tsi_filter_bits_t;
- typedef enum _tsi_status_flags
- {
- kTSI_EndOfScanFlag = TSI_GENCS_EOSF_MASK,
- kTSI_OutOfRangeFlag = TSI_GENCS_OUTRGF_MASK
- } tsi_status_flags_t;
- typedef enum _tsi_interrupt_enable
- {
- kTSI_GlobalInterruptEnable = 1U,
- kTSI_OutOfRangeInterruptEnable = 2U,
- kTSI_EndOfScanInterruptEnable = 4U
- } tsi_interrupt_enable_t;
- typedef struct _tsi_calibration_data
- {
- uint16_t calibratedData[FSL_FEATURE_TSI_CHANNEL_COUNT];
- } tsi_calibration_data_t;
- typedef struct _tsi_config
- {
- uint16_t thresh;
- uint16_t thresl;
- tsi_electrode_osc_prescaler_t prescaler;
- tsi_external_osc_charge_current_t extchrg;
- tsi_reference_osc_charge_current_t refchrg;
- tsi_n_consecutive_scans_t nscn;
- tsi_analog_mode_t mode;
- tsi_osc_voltage_rails_t dvolt;
- tsi_series_resistor_t resistor;
- tsi_filter_bits_t filter;
- } tsi_config_t;
- extern "C" {
- void TSI_Init(TSI_Type *base, const tsi_config_t *config);
- void TSI_Deinit(TSI_Type *base);
- void TSI_GetNormalModeDefaultConfig(tsi_config_t *userConfig);
- void TSI_GetLowPowerModeDefaultConfig(tsi_config_t *userConfig);
- void TSI_Calibrate(TSI_Type *base, tsi_calibration_data_t *calBuff);
- void TSI_EnableInterrupts(TSI_Type *base, uint32_t mask);
- void TSI_DisableInterrupts(TSI_Type *base, uint32_t mask);
- static inline uint32_t TSI_GetStatusFlags(TSI_Type *base)
- {
- return (base->GENCS & (kTSI_EndOfScanFlag | kTSI_OutOfRangeFlag));
- }
- void TSI_ClearStatusFlags(TSI_Type *base, uint32_t mask);
- static inline uint32_t TSI_GetScanTriggerMode(TSI_Type *base)
- {
- return (base->GENCS & TSI_GENCS_STM_MASK);
- }
- static inline bool TSI_IsScanInProgress(TSI_Type *base)
- {
- return (base->GENCS & TSI_GENCS_SCNIP_MASK);
- }
- static inline void TSI_SetElectrodeOSCPrescaler(TSI_Type *base, tsi_electrode_osc_prescaler_t prescaler)
- {
- base->GENCS = (base->GENCS & ~(TSI_GENCS_PS_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_PS(prescaler));
- }
- static inline void TSI_SetNumberOfScans(TSI_Type *base, tsi_n_consecutive_scans_t number)
- {
- base->GENCS = (base->GENCS & ~(TSI_GENCS_NSCN_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_NSCN(number));
- }
- static inline void TSI_EnableModule(TSI_Type *base, bool enable)
- {
- if (enable)
- {
- base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) | TSI_GENCS_TSIEN_MASK;
- }
- else
- {
- base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) & (~TSI_GENCS_TSIEN_MASK);
- }
- }
- static inline void TSI_EnableLowPower(TSI_Type *base, bool enable)
- {
- if (enable)
- {
- base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) | TSI_GENCS_STPE_MASK;
- }
- else
- {
- base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) & (~TSI_GENCS_STPE_MASK);
- }
- }
- static inline void TSI_EnableHardwareTriggerScan(TSI_Type *base, bool enable)
- {
- if (enable)
- {
- base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) | TSI_GENCS_STM_MASK;
- }
- else
- {
- base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) & (~TSI_GENCS_STM_MASK);
- }
- }
- static inline void TSI_StartSoftwareTrigger(TSI_Type *base)
- {
- base->DATA |= TSI_DATA_SWTS_MASK;
- }
- static inline void TSI_SetMeasuredChannelNumber(TSI_Type *base, uint8_t channel)
- {
- assert(channel < FSL_FEATURE_TSI_CHANNEL_COUNT);
- base->DATA = ((base->DATA) & ~TSI_DATA_TSICH_MASK) | (TSI_DATA_TSICH(channel));
- }
- static inline uint8_t TSI_GetMeasuredChannelNumber(TSI_Type *base)
- {
- return (uint8_t)((base->DATA & TSI_DATA_TSICH_MASK) >> TSI_DATA_TSICH_SHIFT);
- }
- static inline void TSI_EnableDmaTransfer(TSI_Type *base, bool enable)
- {
- if (enable)
- {
- base->DATA |= TSI_DATA_DMAEN_MASK;
- }
- else
- {
- base->DATA &= ~TSI_DATA_DMAEN_MASK;
- }
- }
- static inline void TSI_EnableEndOfScanDmaTransferOnly(TSI_Type *base, bool enable)
- {
- if (enable)
- {
- base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) | TSI_GENCS_EOSDMEO_MASK;
- }
- else
- {
- base->GENCS =
- (base->GENCS & ~ALL_FLAGS_MASK) & (~TSI_GENCS_EOSDMEO_MASK);
- }
- }
- static inline uint16_t TSI_GetCounter(TSI_Type *base)
- {
- return (uint16_t)(base->DATA & TSI_DATA_TSICNT_MASK);
- }
- static inline void TSI_SetLowThreshold(TSI_Type *base, uint16_t low_threshold)
- {
- assert(low_threshold < 0xFFFFU);
- base->TSHD = ((base->TSHD) & ~TSI_TSHD_THRESL_MASK) | (TSI_TSHD_THRESL(low_threshold));
- }
- static inline void TSI_SetHighThreshold(TSI_Type *base, uint16_t high_threshold)
- {
- assert(high_threshold < 0xFFFFU);
- base->TSHD = ((base->TSHD) & ~TSI_TSHD_THRESH_MASK) | (TSI_TSHD_THRESH(high_threshold));
- }
- static inline void TSI_SetAnalogMode(TSI_Type *base, tsi_analog_mode_t mode)
- {
- base->GENCS = (base->GENCS & ~(TSI_GENCS_MODE_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_MODE(mode));
- }
- static inline uint8_t TSI_GetNoiseModeResult(TSI_Type *base)
- {
- return (base->GENCS & TSI_GENCS_MODE_MASK) >> TSI_GENCS_MODE_SHIFT;
- }
- static inline void TSI_SetReferenceChargeCurrent(TSI_Type *base, tsi_reference_osc_charge_current_t current)
- {
- base->GENCS = (base->GENCS & ~(TSI_GENCS_REFCHRG_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_REFCHRG(current));
- }
- static inline void TSI_SetElectrodeChargeCurrent(TSI_Type *base, tsi_external_osc_charge_current_t current)
- {
- base->GENCS = (base->GENCS & ~(TSI_GENCS_EXTCHRG_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_EXTCHRG(current));
- }
- static inline void TSI_SetOscVoltageRails(TSI_Type *base, tsi_osc_voltage_rails_t dvolt)
- {
- base->GENCS = (base->GENCS & ~(TSI_GENCS_DVOLT_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_DVOLT(dvolt));
- }
- static inline void TSI_SetElectrodeSeriesResistor(TSI_Type *base, tsi_series_resistor_t resistor)
- {
- base->GENCS = (base->GENCS & TSI_V4_EXTCHRG_RESISTOR_BIT_CLEAR) | TSI_GENCS_EXTCHRG(resistor);
- }
- static inline void TSI_SetFilterBits(TSI_Type *base, tsi_filter_bits_t filter)
- {
- base->GENCS = (base->GENCS & TSI_V4_EXTCHRG_FILTER_BITS_CLEAR) | (filter << TSI_V4_EXTCHRG_FILTER_BITS_SHIFT);
- }
- }
|