The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_UBRIDGE/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K82F/drivers/fsl_tsi_v4.h@145:64910690c574
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 145:64910690c574 1 /*
AnnaBridge 145:64910690c574 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
AnnaBridge 145:64910690c574 3 * All rights reserved.
AnnaBridge 145:64910690c574 4 *
AnnaBridge 145:64910690c574 5 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 145:64910690c574 6 * are permitted provided that the following conditions are met:
AnnaBridge 145:64910690c574 7 *
AnnaBridge 145:64910690c574 8 * o Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 145:64910690c574 9 * of conditions and the following disclaimer.
AnnaBridge 145:64910690c574 10 *
AnnaBridge 145:64910690c574 11 * o Redistributions in binary form must reproduce the above copyright notice, this
AnnaBridge 145:64910690c574 12 * list of conditions and the following disclaimer in the documentation and/or
AnnaBridge 145:64910690c574 13 * other materials provided with the distribution.
AnnaBridge 145:64910690c574 14 *
AnnaBridge 145:64910690c574 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
AnnaBridge 145:64910690c574 16 * contributors may be used to endorse or promote products derived from this
AnnaBridge 145:64910690c574 17 * software without specific prior written permission.
AnnaBridge 145:64910690c574 18 *
AnnaBridge 145:64910690c574 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 145:64910690c574 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 145:64910690c574 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 145:64910690c574 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 145:64910690c574 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 145:64910690c574 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 145:64910690c574 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 145:64910690c574 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 145:64910690c574 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 145:64910690c574 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 145:64910690c574 29 */
AnnaBridge 145:64910690c574 30 #ifndef _FSL_TSI_V4_H_
AnnaBridge 145:64910690c574 31 #define _FSL_TSI_V4_H_
AnnaBridge 145:64910690c574 32
AnnaBridge 145:64910690c574 33 #include "fsl_common.h"
AnnaBridge 145:64910690c574 34
AnnaBridge 145:64910690c574 35 /*!
AnnaBridge 145:64910690c574 36 * @addtogroup tsi_v4_driver
AnnaBridge 145:64910690c574 37 * @{
AnnaBridge 145:64910690c574 38 */
AnnaBridge 145:64910690c574 39
AnnaBridge 145:64910690c574 40
AnnaBridge 145:64910690c574 41 /*******************************************************************************
AnnaBridge 145:64910690c574 42 * Definitions
AnnaBridge 145:64910690c574 43 ******************************************************************************/
AnnaBridge 145:64910690c574 44
AnnaBridge 145:64910690c574 45 /*! @name Driver version */
AnnaBridge 145:64910690c574 46 /*@{*/
AnnaBridge 145:64910690c574 47 /*! @brief TSI driver version */
AnnaBridge 145:64910690c574 48 #define FSL_TSI_DRIVER_VERSION (MAKE_VERSION(2, 1, 2))
AnnaBridge 145:64910690c574 49 /*@}*/
AnnaBridge 145:64910690c574 50
AnnaBridge 145:64910690c574 51 /*! @brief TSI status flags macro collection */
AnnaBridge 145:64910690c574 52 #define ALL_FLAGS_MASK (TSI_GENCS_EOSF_MASK | TSI_GENCS_OUTRGF_MASK)
AnnaBridge 145:64910690c574 53
AnnaBridge 145:64910690c574 54 /*! @brief resistor bit shift in EXTCHRG bit-field */
AnnaBridge 145:64910690c574 55 #define TSI_V4_EXTCHRG_RESISTOR_BIT_SHIFT TSI_GENCS_EXTCHRG_SHIFT
AnnaBridge 145:64910690c574 56
AnnaBridge 145:64910690c574 57 /*! @brief filter bits shift in EXTCHRG bit-field */
AnnaBridge 145:64910690c574 58 #define TSI_V4_EXTCHRG_FILTER_BITS_SHIFT (1U + TSI_GENCS_EXTCHRG_SHIFT)
AnnaBridge 145:64910690c574 59
AnnaBridge 145:64910690c574 60 /*! @brief macro of clearing the resistor bit in EXTCHRG bit-field */
AnnaBridge 145:64910690c574 61 #define TSI_V4_EXTCHRG_RESISTOR_BIT_CLEAR \
AnnaBridge 145:64910690c574 62 ((uint32_t)((~(ALL_FLAGS_MASK | TSI_GENCS_EXTCHRG_MASK)) | (3U << TSI_V4_EXTCHRG_FILTER_BITS_SHIFT)))
AnnaBridge 145:64910690c574 63
AnnaBridge 145:64910690c574 64 /*! @brief macro of clearing the filter bits in EXTCHRG bit-field */
AnnaBridge 145:64910690c574 65 #define TSI_V4_EXTCHRG_FILTER_BITS_CLEAR \
AnnaBridge 145:64910690c574 66 ((uint32_t)((~(ALL_FLAGS_MASK | TSI_GENCS_EXTCHRG_MASK)) | (1U << TSI_V4_EXTCHRG_RESISTOR_BIT_SHIFT)))
AnnaBridge 145:64910690c574 67
AnnaBridge 145:64910690c574 68 /*!
AnnaBridge 145:64910690c574 69 * @brief TSI number of scan intervals for each electrode.
AnnaBridge 145:64910690c574 70 *
AnnaBridge 145:64910690c574 71 * These constants define the tsi number of consecutive scans in a TSI instance for each electrode.
AnnaBridge 145:64910690c574 72 */
AnnaBridge 145:64910690c574 73 typedef enum _tsi_n_consecutive_scans
AnnaBridge 145:64910690c574 74 {
AnnaBridge 145:64910690c574 75 kTSI_ConsecutiveScansNumber_1time = 0U, /*!< Once per electrode */
AnnaBridge 145:64910690c574 76 kTSI_ConsecutiveScansNumber_2time = 1U, /*!< Twice per electrode */
AnnaBridge 145:64910690c574 77 kTSI_ConsecutiveScansNumber_3time = 2U, /*!< 3 times consecutive scan */
AnnaBridge 145:64910690c574 78 kTSI_ConsecutiveScansNumber_4time = 3U, /*!< 4 times consecutive scan */
AnnaBridge 145:64910690c574 79 kTSI_ConsecutiveScansNumber_5time = 4U, /*!< 5 times consecutive scan */
AnnaBridge 145:64910690c574 80 kTSI_ConsecutiveScansNumber_6time = 5U, /*!< 6 times consecutive scan */
AnnaBridge 145:64910690c574 81 kTSI_ConsecutiveScansNumber_7time = 6U, /*!< 7 times consecutive scan */
AnnaBridge 145:64910690c574 82 kTSI_ConsecutiveScansNumber_8time = 7U, /*!< 8 times consecutive scan */
AnnaBridge 145:64910690c574 83 kTSI_ConsecutiveScansNumber_9time = 8U, /*!< 9 times consecutive scan */
AnnaBridge 145:64910690c574 84 kTSI_ConsecutiveScansNumber_10time = 9U, /*!< 10 times consecutive scan */
AnnaBridge 145:64910690c574 85 kTSI_ConsecutiveScansNumber_11time = 10U, /*!< 11 times consecutive scan */
AnnaBridge 145:64910690c574 86 kTSI_ConsecutiveScansNumber_12time = 11U, /*!< 12 times consecutive scan */
AnnaBridge 145:64910690c574 87 kTSI_ConsecutiveScansNumber_13time = 12U, /*!< 13 times consecutive scan */
AnnaBridge 145:64910690c574 88 kTSI_ConsecutiveScansNumber_14time = 13U, /*!< 14 times consecutive scan */
AnnaBridge 145:64910690c574 89 kTSI_ConsecutiveScansNumber_15time = 14U, /*!< 15 times consecutive scan */
AnnaBridge 145:64910690c574 90 kTSI_ConsecutiveScansNumber_16time = 15U, /*!< 16 times consecutive scan */
AnnaBridge 145:64910690c574 91 kTSI_ConsecutiveScansNumber_17time = 16U, /*!< 17 times consecutive scan */
AnnaBridge 145:64910690c574 92 kTSI_ConsecutiveScansNumber_18time = 17U, /*!< 18 times consecutive scan */
AnnaBridge 145:64910690c574 93 kTSI_ConsecutiveScansNumber_19time = 18U, /*!< 19 times consecutive scan */
AnnaBridge 145:64910690c574 94 kTSI_ConsecutiveScansNumber_20time = 19U, /*!< 20 times consecutive scan */
AnnaBridge 145:64910690c574 95 kTSI_ConsecutiveScansNumber_21time = 20U, /*!< 21 times consecutive scan */
AnnaBridge 145:64910690c574 96 kTSI_ConsecutiveScansNumber_22time = 21U, /*!< 22 times consecutive scan */
AnnaBridge 145:64910690c574 97 kTSI_ConsecutiveScansNumber_23time = 22U, /*!< 23 times consecutive scan */
AnnaBridge 145:64910690c574 98 kTSI_ConsecutiveScansNumber_24time = 23U, /*!< 24 times consecutive scan */
AnnaBridge 145:64910690c574 99 kTSI_ConsecutiveScansNumber_25time = 24U, /*!< 25 times consecutive scan */
AnnaBridge 145:64910690c574 100 kTSI_ConsecutiveScansNumber_26time = 25U, /*!< 26 times consecutive scan */
AnnaBridge 145:64910690c574 101 kTSI_ConsecutiveScansNumber_27time = 26U, /*!< 27 times consecutive scan */
AnnaBridge 145:64910690c574 102 kTSI_ConsecutiveScansNumber_28time = 27U, /*!< 28 times consecutive scan */
AnnaBridge 145:64910690c574 103 kTSI_ConsecutiveScansNumber_29time = 28U, /*!< 29 times consecutive scan */
AnnaBridge 145:64910690c574 104 kTSI_ConsecutiveScansNumber_30time = 29U, /*!< 30 times consecutive scan */
AnnaBridge 145:64910690c574 105 kTSI_ConsecutiveScansNumber_31time = 30U, /*!< 31 times consecutive scan */
AnnaBridge 145:64910690c574 106 kTSI_ConsecutiveScansNumber_32time = 31U /*!< 32 times consecutive scan */
AnnaBridge 145:64910690c574 107 } tsi_n_consecutive_scans_t;
AnnaBridge 145:64910690c574 108
AnnaBridge 145:64910690c574 109 /*!
AnnaBridge 145:64910690c574 110 * @brief TSI electrode oscillator prescaler.
AnnaBridge 145:64910690c574 111 *
AnnaBridge 145:64910690c574 112 * These constants define the TSI electrode oscillator prescaler in a TSI instance.
AnnaBridge 145:64910690c574 113 */
AnnaBridge 145:64910690c574 114 typedef enum _tsi_electrode_osc_prescaler
AnnaBridge 145:64910690c574 115 {
AnnaBridge 145:64910690c574 116 kTSI_ElecOscPrescaler_1div = 0U, /*!< Electrode oscillator frequency divided by 1 */
AnnaBridge 145:64910690c574 117 kTSI_ElecOscPrescaler_2div = 1U, /*!< Electrode oscillator frequency divided by 2 */
AnnaBridge 145:64910690c574 118 kTSI_ElecOscPrescaler_4div = 2U, /*!< Electrode oscillator frequency divided by 4 */
AnnaBridge 145:64910690c574 119 kTSI_ElecOscPrescaler_8div = 3U, /*!< Electrode oscillator frequency divided by 8 */
AnnaBridge 145:64910690c574 120 kTSI_ElecOscPrescaler_16div = 4U, /*!< Electrode oscillator frequency divided by 16 */
AnnaBridge 145:64910690c574 121 kTSI_ElecOscPrescaler_32div = 5U, /*!< Electrode oscillator frequency divided by 32 */
AnnaBridge 145:64910690c574 122 kTSI_ElecOscPrescaler_64div = 6U, /*!< Electrode oscillator frequency divided by 64 */
AnnaBridge 145:64910690c574 123 kTSI_ElecOscPrescaler_128div = 7U /*!< Electrode oscillator frequency divided by 128 */
AnnaBridge 145:64910690c574 124 } tsi_electrode_osc_prescaler_t;
AnnaBridge 145:64910690c574 125
AnnaBridge 145:64910690c574 126 /*!
AnnaBridge 145:64910690c574 127 * @brief TSI analog mode select.
AnnaBridge 145:64910690c574 128 *
AnnaBridge 145:64910690c574 129 * Set up TSI analog modes in a TSI instance.
AnnaBridge 145:64910690c574 130 */
AnnaBridge 145:64910690c574 131 typedef enum _tsi_analog_mode
AnnaBridge 145:64910690c574 132 {
AnnaBridge 145:64910690c574 133 kTSI_AnalogModeSel_Capacitive = 0U, /*!< Active TSI capacitive sensing mode */
AnnaBridge 145:64910690c574 134 kTSI_AnalogModeSel_NoiseNoFreqLim = 4U, /*!< Single threshold noise detection mode with no freq. limitation. */
AnnaBridge 145:64910690c574 135 kTSI_AnalogModeSel_NoiseFreqLim = 8U, /*!< Single threshold noise detection mode with freq. limitation. */
AnnaBridge 145:64910690c574 136 kTSI_AnalogModeSel_AutoNoise = 12U /*!< Active TSI analog in automatic noise detection mode */
AnnaBridge 145:64910690c574 137 } tsi_analog_mode_t;
AnnaBridge 145:64910690c574 138
AnnaBridge 145:64910690c574 139 /*!
AnnaBridge 145:64910690c574 140 * @brief TSI Reference oscillator charge and discharge current select.
AnnaBridge 145:64910690c574 141 *
AnnaBridge 145:64910690c574 142 * These constants define the TSI Reference oscillator charge current select in a TSI (REFCHRG) instance.
AnnaBridge 145:64910690c574 143 */
AnnaBridge 145:64910690c574 144 typedef enum _tsi_reference_osc_charge_current
AnnaBridge 145:64910690c574 145 {
AnnaBridge 145:64910690c574 146 kTSI_RefOscChargeCurrent_500nA = 0U, /*!< Reference oscillator charge current is 500 µA */
AnnaBridge 145:64910690c574 147 kTSI_RefOscChargeCurrent_1uA = 1U, /*!< Reference oscillator charge current is 1 µA */
AnnaBridge 145:64910690c574 148 kTSI_RefOscChargeCurrent_2uA = 2U, /*!< Reference oscillator charge current is 2 µA */
AnnaBridge 145:64910690c574 149 kTSI_RefOscChargeCurrent_4uA = 3U, /*!< Reference oscillator charge current is 4 µA */
AnnaBridge 145:64910690c574 150 kTSI_RefOscChargeCurrent_8uA = 4U, /*!< Reference oscillator charge current is 8 µA */
AnnaBridge 145:64910690c574 151 kTSI_RefOscChargeCurrent_16uA = 5U, /*!< Reference oscillator charge current is 16 µA */
AnnaBridge 145:64910690c574 152 kTSI_RefOscChargeCurrent_32uA = 6U, /*!< Reference oscillator charge current is 32 µA */
AnnaBridge 145:64910690c574 153 kTSI_RefOscChargeCurrent_64uA = 7U /*!< Reference oscillator charge current is 64 µA */
AnnaBridge 145:64910690c574 154 } tsi_reference_osc_charge_current_t;
AnnaBridge 145:64910690c574 155
AnnaBridge 145:64910690c574 156 /*!
AnnaBridge 145:64910690c574 157 * @brief TSI oscilator's voltage rails.
AnnaBridge 145:64910690c574 158 *
AnnaBridge 145:64910690c574 159 * These bits indicate the oscillator's voltage rails.
AnnaBridge 145:64910690c574 160 */
AnnaBridge 145:64910690c574 161 typedef enum _tsi_osc_voltage_rails
AnnaBridge 145:64910690c574 162 {
AnnaBridge 145:64910690c574 163 kTSI_OscVolRailsOption_0 = 0U, /*!< DVOLT value option 0, the value may differ on different platforms */
AnnaBridge 145:64910690c574 164 kTSI_OscVolRailsOption_1 = 1U, /*!< DVOLT value option 1, the value may differ on different platforms */
AnnaBridge 145:64910690c574 165 kTSI_OscVolRailsOption_2 = 2U, /*!< DVOLT value option 2, the value may differ on different platforms */
AnnaBridge 145:64910690c574 166 kTSI_OscVolRailsOption_3 = 3U /*!< DVOLT value option 3, the value may differ on different platforms */
AnnaBridge 145:64910690c574 167 } tsi_osc_voltage_rails_t;
AnnaBridge 145:64910690c574 168
AnnaBridge 145:64910690c574 169 /*!
AnnaBridge 145:64910690c574 170 * @brief TSI External oscillator charge and discharge current select.
AnnaBridge 145:64910690c574 171 *
AnnaBridge 145:64910690c574 172 * These bits indicate the electrode oscillator charge and discharge current value
AnnaBridge 145:64910690c574 173 * in TSI (EXTCHRG) instance.
AnnaBridge 145:64910690c574 174 */
AnnaBridge 145:64910690c574 175 typedef enum _tsi_external_osc_charge_current
AnnaBridge 145:64910690c574 176 {
AnnaBridge 145:64910690c574 177 kTSI_ExtOscChargeCurrent_500nA = 0U, /*!< External oscillator charge current is 500 µA */
AnnaBridge 145:64910690c574 178 kTSI_ExtOscChargeCurrent_1uA = 1U, /*!< External oscillator charge current is 1 µA */
AnnaBridge 145:64910690c574 179 kTSI_ExtOscChargeCurrent_2uA = 2U, /*!< External oscillator charge current is 2 µA */
AnnaBridge 145:64910690c574 180 kTSI_ExtOscChargeCurrent_4uA = 3U, /*!< External oscillator charge current is 4 µA */
AnnaBridge 145:64910690c574 181 kTSI_ExtOscChargeCurrent_8uA = 4U, /*!< External oscillator charge current is 8 µA */
AnnaBridge 145:64910690c574 182 kTSI_ExtOscChargeCurrent_16uA = 5U, /*!< External oscillator charge current is 16 µA */
AnnaBridge 145:64910690c574 183 kTSI_ExtOscChargeCurrent_32uA = 6U, /*!< External oscillator charge current is 32 µA */
AnnaBridge 145:64910690c574 184 kTSI_ExtOscChargeCurrent_64uA = 7U /*!< External oscillator charge current is 64 µA */
AnnaBridge 145:64910690c574 185 } tsi_external_osc_charge_current_t;
AnnaBridge 145:64910690c574 186
AnnaBridge 145:64910690c574 187 /*!
AnnaBridge 145:64910690c574 188 * @brief TSI series resistance RS value select.
AnnaBridge 145:64910690c574 189 *
AnnaBridge 145:64910690c574 190 * These bits indicate the electrode RS series resistance for the noise mode
AnnaBridge 145:64910690c574 191 * in TSI (EXTCHRG) instance.
AnnaBridge 145:64910690c574 192 */
AnnaBridge 145:64910690c574 193 typedef enum _tsi_series_resistance
AnnaBridge 145:64910690c574 194 {
AnnaBridge 145:64910690c574 195 kTSI_SeriesResistance_32k = 0U, /*!< Series Resistance is 32 kilo ohms */
AnnaBridge 145:64910690c574 196 kTSI_SeriesResistance_187k = 1U /*!< Series Resistance is 18 7 kilo ohms */
AnnaBridge 145:64910690c574 197 } tsi_series_resistor_t;
AnnaBridge 145:64910690c574 198
AnnaBridge 145:64910690c574 199 /*!
AnnaBridge 145:64910690c574 200 * @brief TSI series filter bits select.
AnnaBridge 145:64910690c574 201 *
AnnaBridge 145:64910690c574 202 * These bits indicate the count of the filter bits
AnnaBridge 145:64910690c574 203 * in TSI noise mode EXTCHRG[2:1] bits
AnnaBridge 145:64910690c574 204 */
AnnaBridge 145:64910690c574 205 typedef enum _tsi_filter_bits
AnnaBridge 145:64910690c574 206 {
AnnaBridge 145:64910690c574 207 kTSI_FilterBits_3 = 0U, /*!< 3 filter bits, 8 peaks increments the cnt+1 */
AnnaBridge 145:64910690c574 208 kTSI_FilterBits_2 = 1U, /*!< 2 filter bits, 4 peaks increments the cnt+1 */
AnnaBridge 145:64910690c574 209 kTSI_FilterBits_1 = 2U, /*!< 1 filter bits, 2 peaks increments the cnt+1 */
AnnaBridge 145:64910690c574 210 kTSI_FilterBits_0 = 3U /*!< no filter bits,1 peak increments the cnt+1 */
AnnaBridge 145:64910690c574 211 } tsi_filter_bits_t;
AnnaBridge 145:64910690c574 212
AnnaBridge 145:64910690c574 213 /*! @brief TSI status flags. */
AnnaBridge 145:64910690c574 214 typedef enum _tsi_status_flags
AnnaBridge 145:64910690c574 215 {
AnnaBridge 145:64910690c574 216 kTSI_EndOfScanFlag = TSI_GENCS_EOSF_MASK, /*!< End-Of-Scan flag */
AnnaBridge 145:64910690c574 217 kTSI_OutOfRangeFlag = TSI_GENCS_OUTRGF_MASK /*!< Out-Of-Range flag */
AnnaBridge 145:64910690c574 218 } tsi_status_flags_t;
AnnaBridge 145:64910690c574 219
AnnaBridge 145:64910690c574 220 /*! @brief TSI feature interrupt source.*/
AnnaBridge 145:64910690c574 221 typedef enum _tsi_interrupt_enable
AnnaBridge 145:64910690c574 222 {
AnnaBridge 145:64910690c574 223 kTSI_GlobalInterruptEnable = 1U, /*!< TSI module global interrupt */
AnnaBridge 145:64910690c574 224 kTSI_OutOfRangeInterruptEnable = 2U, /*!< Out-Of-Range interrupt */
AnnaBridge 145:64910690c574 225 kTSI_EndOfScanInterruptEnable = 4U /*!< End-Of-Scan interrupt */
AnnaBridge 145:64910690c574 226 } tsi_interrupt_enable_t;
AnnaBridge 145:64910690c574 227
AnnaBridge 145:64910690c574 228 /*! @brief TSI calibration data storage. */
AnnaBridge 145:64910690c574 229 typedef struct _tsi_calibration_data
AnnaBridge 145:64910690c574 230 {
AnnaBridge 145:64910690c574 231 uint16_t calibratedData[FSL_FEATURE_TSI_CHANNEL_COUNT]; /*!< TSI calibration data storage buffer */
AnnaBridge 145:64910690c574 232 } tsi_calibration_data_t;
AnnaBridge 145:64910690c574 233
AnnaBridge 145:64910690c574 234 /*!
AnnaBridge 145:64910690c574 235 * @brief TSI configuration structure.
AnnaBridge 145:64910690c574 236 *
AnnaBridge 145:64910690c574 237 * This structure contains the settings for the most common TSI configurations including
AnnaBridge 145:64910690c574 238 * the TSI module charge currents, number of scans, thresholds, and so on.
AnnaBridge 145:64910690c574 239 */
AnnaBridge 145:64910690c574 240 typedef struct _tsi_config
AnnaBridge 145:64910690c574 241 {
AnnaBridge 145:64910690c574 242 uint16_t thresh; /*!< High threshold. */
AnnaBridge 145:64910690c574 243 uint16_t thresl; /*!< Low threshold. */
AnnaBridge 145:64910690c574 244 tsi_electrode_osc_prescaler_t prescaler; /*!< Prescaler */
AnnaBridge 145:64910690c574 245 tsi_external_osc_charge_current_t extchrg; /*!< Electrode charge current */
AnnaBridge 145:64910690c574 246 tsi_reference_osc_charge_current_t refchrg; /*!< Reference charge current */
AnnaBridge 145:64910690c574 247 tsi_n_consecutive_scans_t nscn; /*!< Number of scans. */
AnnaBridge 145:64910690c574 248 tsi_analog_mode_t mode; /*!< TSI mode of operation. */
AnnaBridge 145:64910690c574 249 tsi_osc_voltage_rails_t dvolt; /*!< Oscillator's voltage rails. */
AnnaBridge 145:64910690c574 250 tsi_series_resistor_t resistor; /*!< Series resistance value */
AnnaBridge 145:64910690c574 251 tsi_filter_bits_t filter; /*!< Noise mode filter bits */
AnnaBridge 145:64910690c574 252 } tsi_config_t;
AnnaBridge 145:64910690c574 253
AnnaBridge 145:64910690c574 254 /*******************************************************************************
AnnaBridge 145:64910690c574 255 * API
AnnaBridge 145:64910690c574 256 ******************************************************************************/
AnnaBridge 145:64910690c574 257
AnnaBridge 145:64910690c574 258 #ifdef __cplusplus
AnnaBridge 145:64910690c574 259 extern "C" {
AnnaBridge 145:64910690c574 260 #endif
AnnaBridge 145:64910690c574 261
AnnaBridge 145:64910690c574 262 /*!
AnnaBridge 145:64910690c574 263 * @brief Initializes hardware.
AnnaBridge 145:64910690c574 264 *
AnnaBridge 145:64910690c574 265 * @details Initializes the peripheral to the targeted state specified by parameter configuration,
AnnaBridge 145:64910690c574 266 * such as sets prescalers, number of scans, clocks, delta voltage
AnnaBridge 145:64910690c574 267 * series resistor, filter bits, reference, and electrode charge current and threshold.
AnnaBridge 145:64910690c574 268 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 269 * @param config Pointer to TSI module configuration structure.
AnnaBridge 145:64910690c574 270 * @return none
AnnaBridge 145:64910690c574 271 */
AnnaBridge 145:64910690c574 272 void TSI_Init(TSI_Type *base, const tsi_config_t *config);
AnnaBridge 145:64910690c574 273
AnnaBridge 145:64910690c574 274 /*!
AnnaBridge 145:64910690c574 275 * @brief De-initializes hardware.
AnnaBridge 145:64910690c574 276 *
AnnaBridge 145:64910690c574 277 * @details De-initializes the peripheral to default state.
AnnaBridge 145:64910690c574 278 *
AnnaBridge 145:64910690c574 279 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 280 * @return none
AnnaBridge 145:64910690c574 281 */
AnnaBridge 145:64910690c574 282 void TSI_Deinit(TSI_Type *base);
AnnaBridge 145:64910690c574 283
AnnaBridge 145:64910690c574 284 /*!
AnnaBridge 145:64910690c574 285 * @brief Gets the TSI normal mode user configuration structure.
AnnaBridge 145:64910690c574 286 * This interface sets userConfig structure to a default value. The configuration structure only
AnnaBridge 145:64910690c574 287 * includes the settings for the whole TSI.
AnnaBridge 145:64910690c574 288 * The user configure is set to these values:
AnnaBridge 145:64910690c574 289 * @code
AnnaBridge 145:64910690c574 290 userConfig->prescaler = kTSI_ElecOscPrescaler_2div;
AnnaBridge 145:64910690c574 291 userConfig->extchrg = kTSI_ExtOscChargeCurrent_500nA;
AnnaBridge 145:64910690c574 292 userConfig->refchrg = kTSI_RefOscChargeCurrent_4uA;
AnnaBridge 145:64910690c574 293 userConfig->nscn = kTSI_ConsecutiveScansNumber_10time;
AnnaBridge 145:64910690c574 294 userConfig->mode = kTSI_AnalogModeSel_Capacitive;
AnnaBridge 145:64910690c574 295 userConfig->dvolt = kTSI_OscVolRailsOption_0;
AnnaBridge 145:64910690c574 296 userConfig->thresh = 0U;
AnnaBridge 145:64910690c574 297 userConfig->thresl = 0U;
AnnaBridge 145:64910690c574 298 @endcode
AnnaBridge 145:64910690c574 299 *
AnnaBridge 145:64910690c574 300 * @param userConfig Pointer to the TSI user configuration structure.
AnnaBridge 145:64910690c574 301 */
AnnaBridge 145:64910690c574 302 void TSI_GetNormalModeDefaultConfig(tsi_config_t *userConfig);
AnnaBridge 145:64910690c574 303
AnnaBridge 145:64910690c574 304 /*!
AnnaBridge 145:64910690c574 305 * @brief Gets the TSI low power mode default user configuration structure.
AnnaBridge 145:64910690c574 306 * This interface sets userConfig structure to a default value. The configuration structure only
AnnaBridge 145:64910690c574 307 * includes the settings for the whole TSI.
AnnaBridge 145:64910690c574 308 * The user configure is set to these values:
AnnaBridge 145:64910690c574 309 * @code
AnnaBridge 145:64910690c574 310 userConfig->prescaler = kTSI_ElecOscPrescaler_2div;
AnnaBridge 145:64910690c574 311 userConfig->extchrg = kTSI_ExtOscChargeCurrent_500nA;
AnnaBridge 145:64910690c574 312 userConfig->refchrg = kTSI_RefOscChargeCurrent_4uA;
AnnaBridge 145:64910690c574 313 userConfig->nscn = kTSI_ConsecutiveScansNumber_10time;
AnnaBridge 145:64910690c574 314 userConfig->mode = kTSI_AnalogModeSel_Capacitive;
AnnaBridge 145:64910690c574 315 userConfig->dvolt = kTSI_OscVolRailsOption_0;
AnnaBridge 145:64910690c574 316 userConfig->thresh = 400U;
AnnaBridge 145:64910690c574 317 userConfig->thresl = 0U;
AnnaBridge 145:64910690c574 318 @endcode
AnnaBridge 145:64910690c574 319 *
AnnaBridge 145:64910690c574 320 * @param userConfig Pointer to the TSI user configuration structure.
AnnaBridge 145:64910690c574 321 */
AnnaBridge 145:64910690c574 322 void TSI_GetLowPowerModeDefaultConfig(tsi_config_t *userConfig);
AnnaBridge 145:64910690c574 323
AnnaBridge 145:64910690c574 324 /*!
AnnaBridge 145:64910690c574 325 * @brief Hardware calibration.
AnnaBridge 145:64910690c574 326 *
AnnaBridge 145:64910690c574 327 * @details Calibrates the peripheral to fetch the initial counter value of
AnnaBridge 145:64910690c574 328 * the enabled electrodes.
AnnaBridge 145:64910690c574 329 * This API is mostly used at initial application setup. Call
AnnaBridge 145:64910690c574 330 * this function after the \ref TSI_Init API and use the calibrated
AnnaBridge 145:64910690c574 331 * counter values to set up applications (such as to determine
AnnaBridge 145:64910690c574 332 * under which counter value we can confirm a touch event occurs).
AnnaBridge 145:64910690c574 333 *
AnnaBridge 145:64910690c574 334 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 335 * @param calBuff Data buffer that store the calibrated counter value.
AnnaBridge 145:64910690c574 336 * @return none
AnnaBridge 145:64910690c574 337 *
AnnaBridge 145:64910690c574 338 */
AnnaBridge 145:64910690c574 339 void TSI_Calibrate(TSI_Type *base, tsi_calibration_data_t *calBuff);
AnnaBridge 145:64910690c574 340
AnnaBridge 145:64910690c574 341 /*!
AnnaBridge 145:64910690c574 342 * @brief Enables the TSI interrupt requests.
AnnaBridge 145:64910690c574 343 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 344 * @param mask interrupt source
AnnaBridge 145:64910690c574 345 * The parameter can be combination of the following source if defined:
AnnaBridge 145:64910690c574 346 * @arg kTSI_GlobalInterruptEnable
AnnaBridge 145:64910690c574 347 * @arg kTSI_EndOfScanInterruptEnable
AnnaBridge 145:64910690c574 348 * @arg kTSI_OutOfRangeInterruptEnable
AnnaBridge 145:64910690c574 349 */
AnnaBridge 145:64910690c574 350 void TSI_EnableInterrupts(TSI_Type *base, uint32_t mask);
AnnaBridge 145:64910690c574 351
AnnaBridge 145:64910690c574 352 /*!
AnnaBridge 145:64910690c574 353 * @brief Disables the TSI interrupt requests.
AnnaBridge 145:64910690c574 354 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 355 * @param mask interrupt source
AnnaBridge 145:64910690c574 356 * The parameter can be combination of the following source if defined:
AnnaBridge 145:64910690c574 357 * @arg kTSI_GlobalInterruptEnable
AnnaBridge 145:64910690c574 358 * @arg kTSI_EndOfScanInterruptEnable
AnnaBridge 145:64910690c574 359 * @arg kTSI_OutOfRangeInterruptEnable
AnnaBridge 145:64910690c574 360 */
AnnaBridge 145:64910690c574 361 void TSI_DisableInterrupts(TSI_Type *base, uint32_t mask);
AnnaBridge 145:64910690c574 362
AnnaBridge 145:64910690c574 363 /*!
AnnaBridge 145:64910690c574 364 * @brief Gets an interrupt flag.
AnnaBridge 145:64910690c574 365 * This function gets the TSI interrupt flags.
AnnaBridge 145:64910690c574 366 *
AnnaBridge 145:64910690c574 367 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 368 * @return The mask of these status flags combination.
AnnaBridge 145:64910690c574 369 */
AnnaBridge 145:64910690c574 370 static inline uint32_t TSI_GetStatusFlags(TSI_Type *base)
AnnaBridge 145:64910690c574 371 {
AnnaBridge 145:64910690c574 372 return (base->GENCS & (kTSI_EndOfScanFlag | kTSI_OutOfRangeFlag));
AnnaBridge 145:64910690c574 373 }
AnnaBridge 145:64910690c574 374
AnnaBridge 145:64910690c574 375 /*!
AnnaBridge 145:64910690c574 376 * @brief Clears the interrupt flag.
AnnaBridge 145:64910690c574 377 *
AnnaBridge 145:64910690c574 378 * This function clears the TSI interrupt flag,
AnnaBridge 145:64910690c574 379 * automatically cleared flags can't be cleared by this function.
AnnaBridge 145:64910690c574 380 *
AnnaBridge 145:64910690c574 381 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 382 * @param mask The status flags to clear.
AnnaBridge 145:64910690c574 383 */
AnnaBridge 145:64910690c574 384 void TSI_ClearStatusFlags(TSI_Type *base, uint32_t mask);
AnnaBridge 145:64910690c574 385
AnnaBridge 145:64910690c574 386 /*!
AnnaBridge 145:64910690c574 387 * @brief Gets the TSI scan trigger mode.
AnnaBridge 145:64910690c574 388 *
AnnaBridge 145:64910690c574 389 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 390 * @return Scan trigger mode.
AnnaBridge 145:64910690c574 391 */
AnnaBridge 145:64910690c574 392 static inline uint32_t TSI_GetScanTriggerMode(TSI_Type *base)
AnnaBridge 145:64910690c574 393 {
AnnaBridge 145:64910690c574 394 return (base->GENCS & TSI_GENCS_STM_MASK);
AnnaBridge 145:64910690c574 395 }
AnnaBridge 145:64910690c574 396
AnnaBridge 145:64910690c574 397 /*!
AnnaBridge 145:64910690c574 398 * @brief Gets the scan in progress flag.
AnnaBridge 145:64910690c574 399 *
AnnaBridge 145:64910690c574 400 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 401 * @return True - scan is in progress.
AnnaBridge 145:64910690c574 402 * False - scan is not in progress.
AnnaBridge 145:64910690c574 403 */
AnnaBridge 145:64910690c574 404 static inline bool TSI_IsScanInProgress(TSI_Type *base)
AnnaBridge 145:64910690c574 405 {
AnnaBridge 145:64910690c574 406 return (base->GENCS & TSI_GENCS_SCNIP_MASK);
AnnaBridge 145:64910690c574 407 }
AnnaBridge 145:64910690c574 408
AnnaBridge 145:64910690c574 409 /*!
AnnaBridge 145:64910690c574 410 * @brief Sets the prescaler.
AnnaBridge 145:64910690c574 411 *
AnnaBridge 145:64910690c574 412 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 413 * @param prescaler Prescaler value.
AnnaBridge 145:64910690c574 414 * @return none.
AnnaBridge 145:64910690c574 415 */
AnnaBridge 145:64910690c574 416 static inline void TSI_SetElectrodeOSCPrescaler(TSI_Type *base, tsi_electrode_osc_prescaler_t prescaler)
AnnaBridge 145:64910690c574 417 {
AnnaBridge 145:64910690c574 418 base->GENCS = (base->GENCS & ~(TSI_GENCS_PS_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_PS(prescaler));
AnnaBridge 145:64910690c574 419 }
AnnaBridge 145:64910690c574 420
AnnaBridge 145:64910690c574 421 /*!
AnnaBridge 145:64910690c574 422 * @brief Sets the number of scans (NSCN).
AnnaBridge 145:64910690c574 423 *
AnnaBridge 145:64910690c574 424 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 425 * @param number Number of scans.
AnnaBridge 145:64910690c574 426 * @return none.
AnnaBridge 145:64910690c574 427 */
AnnaBridge 145:64910690c574 428 static inline void TSI_SetNumberOfScans(TSI_Type *base, tsi_n_consecutive_scans_t number)
AnnaBridge 145:64910690c574 429 {
AnnaBridge 145:64910690c574 430 base->GENCS = (base->GENCS & ~(TSI_GENCS_NSCN_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_NSCN(number));
AnnaBridge 145:64910690c574 431 }
AnnaBridge 145:64910690c574 432
AnnaBridge 145:64910690c574 433 /*!
AnnaBridge 145:64910690c574 434 * @brief Enables/disables the TSI module.
AnnaBridge 145:64910690c574 435 *
AnnaBridge 145:64910690c574 436 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 437 * @param enable Choose whether to enable or disable module;
AnnaBridge 145:64910690c574 438 * - true Enable TSI module;
AnnaBridge 145:64910690c574 439 * - false Disable TSI module;
AnnaBridge 145:64910690c574 440 * @return none.
AnnaBridge 145:64910690c574 441 */
AnnaBridge 145:64910690c574 442 static inline void TSI_EnableModule(TSI_Type *base, bool enable)
AnnaBridge 145:64910690c574 443 {
AnnaBridge 145:64910690c574 444 if (enable)
AnnaBridge 145:64910690c574 445 {
AnnaBridge 145:64910690c574 446 base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) | TSI_GENCS_TSIEN_MASK; /* Enable module */
AnnaBridge 145:64910690c574 447 }
AnnaBridge 145:64910690c574 448 else
AnnaBridge 145:64910690c574 449 {
AnnaBridge 145:64910690c574 450 base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) & (~TSI_GENCS_TSIEN_MASK); /* Disable module */
AnnaBridge 145:64910690c574 451 }
AnnaBridge 145:64910690c574 452 }
AnnaBridge 145:64910690c574 453
AnnaBridge 145:64910690c574 454 /*!
AnnaBridge 145:64910690c574 455 * @brief Sets the TSI low power STOP mode as enabled or disabled.
AnnaBridge 145:64910690c574 456 * This enables the TSI module function in low power modes.
AnnaBridge 145:64910690c574 457 *
AnnaBridge 145:64910690c574 458 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 459 * @param enable Choose to enable or disable STOP mode.
AnnaBridge 145:64910690c574 460 * - true Enable module in STOP mode;
AnnaBridge 145:64910690c574 461 * - false Disable module in STOP mode;
AnnaBridge 145:64910690c574 462 * @return none.
AnnaBridge 145:64910690c574 463 */
AnnaBridge 145:64910690c574 464 static inline void TSI_EnableLowPower(TSI_Type *base, bool enable)
AnnaBridge 145:64910690c574 465 {
AnnaBridge 145:64910690c574 466 if (enable)
AnnaBridge 145:64910690c574 467 {
AnnaBridge 145:64910690c574 468 base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) | TSI_GENCS_STPE_MASK; /* Module enabled in low power stop modes */
AnnaBridge 145:64910690c574 469 }
AnnaBridge 145:64910690c574 470 else
AnnaBridge 145:64910690c574 471 {
AnnaBridge 145:64910690c574 472 base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) & (~TSI_GENCS_STPE_MASK); /* Module disabled in low power stop modes */
AnnaBridge 145:64910690c574 473 }
AnnaBridge 145:64910690c574 474 }
AnnaBridge 145:64910690c574 475
AnnaBridge 145:64910690c574 476 /*!
AnnaBridge 145:64910690c574 477 * @brief Enables/disables the hardware trigger scan.
AnnaBridge 145:64910690c574 478 *
AnnaBridge 145:64910690c574 479 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 480 * @param enable Choose to enable hardware trigger or software trigger scan.
AnnaBridge 145:64910690c574 481 * - true Enable hardware trigger scan;
AnnaBridge 145:64910690c574 482 * - false Enable software trigger scan;
AnnaBridge 145:64910690c574 483 * @return none.
AnnaBridge 145:64910690c574 484 */
AnnaBridge 145:64910690c574 485 static inline void TSI_EnableHardwareTriggerScan(TSI_Type *base, bool enable)
AnnaBridge 145:64910690c574 486 {
AnnaBridge 145:64910690c574 487 if (enable)
AnnaBridge 145:64910690c574 488 {
AnnaBridge 145:64910690c574 489 base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) | TSI_GENCS_STM_MASK; /* Enable hardware trigger scan */
AnnaBridge 145:64910690c574 490 }
AnnaBridge 145:64910690c574 491 else
AnnaBridge 145:64910690c574 492 {
AnnaBridge 145:64910690c574 493 base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) & (~TSI_GENCS_STM_MASK); /* Enable software trigger scan */
AnnaBridge 145:64910690c574 494 }
AnnaBridge 145:64910690c574 495 }
AnnaBridge 145:64910690c574 496
AnnaBridge 145:64910690c574 497 /*!
AnnaBridge 145:64910690c574 498 * @brief Starts a software trigger measurement (triggers a new measurement).
AnnaBridge 145:64910690c574 499 *
AnnaBridge 145:64910690c574 500 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 501 * @return none.
AnnaBridge 145:64910690c574 502 */
AnnaBridge 145:64910690c574 503 static inline void TSI_StartSoftwareTrigger(TSI_Type *base)
AnnaBridge 145:64910690c574 504 {
AnnaBridge 145:64910690c574 505 base->DATA |= TSI_DATA_SWTS_MASK;
AnnaBridge 145:64910690c574 506 }
AnnaBridge 145:64910690c574 507
AnnaBridge 145:64910690c574 508 /*!
AnnaBridge 145:64910690c574 509 * @brief Sets the the measured channel number.
AnnaBridge 145:64910690c574 510 *
AnnaBridge 145:64910690c574 511 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 512 * @param channel Channel number 0 ... 15.
AnnaBridge 145:64910690c574 513 * @return none.
AnnaBridge 145:64910690c574 514 */
AnnaBridge 145:64910690c574 515 static inline void TSI_SetMeasuredChannelNumber(TSI_Type *base, uint8_t channel)
AnnaBridge 145:64910690c574 516 {
AnnaBridge 145:64910690c574 517 assert(channel < FSL_FEATURE_TSI_CHANNEL_COUNT);
AnnaBridge 145:64910690c574 518
AnnaBridge 145:64910690c574 519 base->DATA = ((base->DATA) & ~TSI_DATA_TSICH_MASK) | (TSI_DATA_TSICH(channel));
AnnaBridge 145:64910690c574 520 }
AnnaBridge 145:64910690c574 521
AnnaBridge 145:64910690c574 522 /*!
AnnaBridge 145:64910690c574 523 * @brief Gets the current measured channel number.
AnnaBridge 145:64910690c574 524 *
AnnaBridge 145:64910690c574 525 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 526 * @return uint8_t Channel number 0 ... 15.
AnnaBridge 145:64910690c574 527 */
AnnaBridge 145:64910690c574 528 static inline uint8_t TSI_GetMeasuredChannelNumber(TSI_Type *base)
AnnaBridge 145:64910690c574 529 {
AnnaBridge 145:64910690c574 530 return (uint8_t)((base->DATA & TSI_DATA_TSICH_MASK) >> TSI_DATA_TSICH_SHIFT);
AnnaBridge 145:64910690c574 531 }
AnnaBridge 145:64910690c574 532
AnnaBridge 145:64910690c574 533 /*!
AnnaBridge 145:64910690c574 534 * @brief Enables/disables the DMA transfer.
AnnaBridge 145:64910690c574 535 *
AnnaBridge 145:64910690c574 536 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 537 * @param enable Choose to enable DMA transfer or not.
AnnaBridge 145:64910690c574 538 * - true Enable DMA transfer;
AnnaBridge 145:64910690c574 539 * - false Disable DMA transfer;
AnnaBridge 145:64910690c574 540 * @return none.
AnnaBridge 145:64910690c574 541 */
AnnaBridge 145:64910690c574 542 static inline void TSI_EnableDmaTransfer(TSI_Type *base, bool enable)
AnnaBridge 145:64910690c574 543 {
AnnaBridge 145:64910690c574 544 if (enable)
AnnaBridge 145:64910690c574 545 {
AnnaBridge 145:64910690c574 546 base->DATA |= TSI_DATA_DMAEN_MASK; /* Enable DMA transfer */
AnnaBridge 145:64910690c574 547 }
AnnaBridge 145:64910690c574 548 else
AnnaBridge 145:64910690c574 549 {
AnnaBridge 145:64910690c574 550 base->DATA &= ~TSI_DATA_DMAEN_MASK; /* Disable DMA transfer */
AnnaBridge 145:64910690c574 551 }
AnnaBridge 145:64910690c574 552 }
AnnaBridge 145:64910690c574 553
AnnaBridge 145:64910690c574 554 #if defined(FSL_FEATURE_TSI_HAS_END_OF_SCAN_DMA_ENABLE) && (FSL_FEATURE_TSI_HAS_END_OF_SCAN_DMA_ENABLE == 1)
AnnaBridge 145:64910690c574 555 /*!
AnnaBridge 145:64910690c574 556 * @brief Decides whether to enable end of scan DMA transfer request only.
AnnaBridge 145:64910690c574 557 *
AnnaBridge 145:64910690c574 558 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 559 * @param enable Choose whether to enable End of Scan DMA transfer request only.
AnnaBridge 145:64910690c574 560 * - true Enable End of Scan DMA transfer request only;
AnnaBridge 145:64910690c574 561 * - false Both End-of-Scan and Out-of-Range can generate DMA transfer request.
AnnaBridge 145:64910690c574 562 * @return none.
AnnaBridge 145:64910690c574 563 */
AnnaBridge 145:64910690c574 564 static inline void TSI_EnableEndOfScanDmaTransferOnly(TSI_Type *base, bool enable)
AnnaBridge 145:64910690c574 565 {
AnnaBridge 145:64910690c574 566 if (enable)
AnnaBridge 145:64910690c574 567 {
AnnaBridge 145:64910690c574 568 base->GENCS = (base->GENCS & ~ALL_FLAGS_MASK) | TSI_GENCS_EOSDMEO_MASK; /* Enable End of Scan DMA transfer request only; */
AnnaBridge 145:64910690c574 569 }
AnnaBridge 145:64910690c574 570 else
AnnaBridge 145:64910690c574 571 {
AnnaBridge 145:64910690c574 572 base->GENCS =
AnnaBridge 145:64910690c574 573 (base->GENCS & ~ALL_FLAGS_MASK) & (~TSI_GENCS_EOSDMEO_MASK); /* Both End-of-Scan and Out-of-Range can generate DMA transfer request. */
AnnaBridge 145:64910690c574 574 }
AnnaBridge 145:64910690c574 575 }
AnnaBridge 145:64910690c574 576 #endif /* End of (FSL_FEATURE_TSI_HAS_END_OF_SCAN_DMA_ENABLE == 1)*/
AnnaBridge 145:64910690c574 577
AnnaBridge 145:64910690c574 578 /*!
AnnaBridge 145:64910690c574 579 * @brief Gets the conversion counter value.
AnnaBridge 145:64910690c574 580 *
AnnaBridge 145:64910690c574 581 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 582 * @return Accumulated scan counter value ticked by the reference clock.
AnnaBridge 145:64910690c574 583 */
AnnaBridge 145:64910690c574 584 static inline uint16_t TSI_GetCounter(TSI_Type *base)
AnnaBridge 145:64910690c574 585 {
AnnaBridge 145:64910690c574 586 return (uint16_t)(base->DATA & TSI_DATA_TSICNT_MASK);
AnnaBridge 145:64910690c574 587 }
AnnaBridge 145:64910690c574 588
AnnaBridge 145:64910690c574 589 /*!
AnnaBridge 145:64910690c574 590 * @brief Sets the TSI wake-up channel low threshold.
AnnaBridge 145:64910690c574 591 *
AnnaBridge 145:64910690c574 592 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 593 * @param low_threshold Low counter threshold.
AnnaBridge 145:64910690c574 594 * @return none.
AnnaBridge 145:64910690c574 595 */
AnnaBridge 145:64910690c574 596 static inline void TSI_SetLowThreshold(TSI_Type *base, uint16_t low_threshold)
AnnaBridge 145:64910690c574 597 {
AnnaBridge 145:64910690c574 598 assert(low_threshold < 0xFFFFU);
AnnaBridge 145:64910690c574 599
AnnaBridge 145:64910690c574 600 base->TSHD = ((base->TSHD) & ~TSI_TSHD_THRESL_MASK) | (TSI_TSHD_THRESL(low_threshold));
AnnaBridge 145:64910690c574 601 }
AnnaBridge 145:64910690c574 602
AnnaBridge 145:64910690c574 603 /*!
AnnaBridge 145:64910690c574 604 * @brief Sets the TSI wake-up channel high threshold.
AnnaBridge 145:64910690c574 605 *
AnnaBridge 145:64910690c574 606 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 607 * @param high_threshold High counter threshold.
AnnaBridge 145:64910690c574 608 * @return none.
AnnaBridge 145:64910690c574 609 */
AnnaBridge 145:64910690c574 610 static inline void TSI_SetHighThreshold(TSI_Type *base, uint16_t high_threshold)
AnnaBridge 145:64910690c574 611 {
AnnaBridge 145:64910690c574 612 assert(high_threshold < 0xFFFFU);
AnnaBridge 145:64910690c574 613
AnnaBridge 145:64910690c574 614 base->TSHD = ((base->TSHD) & ~TSI_TSHD_THRESH_MASK) | (TSI_TSHD_THRESH(high_threshold));
AnnaBridge 145:64910690c574 615 }
AnnaBridge 145:64910690c574 616
AnnaBridge 145:64910690c574 617 /*!
AnnaBridge 145:64910690c574 618 * @brief Sets the analog mode of the TSI module.
AnnaBridge 145:64910690c574 619 *
AnnaBridge 145:64910690c574 620 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 621 * @param mode Mode value.
AnnaBridge 145:64910690c574 622 * @return none.
AnnaBridge 145:64910690c574 623 */
AnnaBridge 145:64910690c574 624 static inline void TSI_SetAnalogMode(TSI_Type *base, tsi_analog_mode_t mode)
AnnaBridge 145:64910690c574 625 {
AnnaBridge 145:64910690c574 626 base->GENCS = (base->GENCS & ~(TSI_GENCS_MODE_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_MODE(mode));
AnnaBridge 145:64910690c574 627 }
AnnaBridge 145:64910690c574 628
AnnaBridge 145:64910690c574 629 /*!
AnnaBridge 145:64910690c574 630 * @brief Gets the noise mode result of the TSI module.
AnnaBridge 145:64910690c574 631 *
AnnaBridge 145:64910690c574 632 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 633 * @return Value of the GENCS[MODE] bit-fields.
AnnaBridge 145:64910690c574 634 */
AnnaBridge 145:64910690c574 635 static inline uint8_t TSI_GetNoiseModeResult(TSI_Type *base)
AnnaBridge 145:64910690c574 636 {
AnnaBridge 145:64910690c574 637 return (base->GENCS & TSI_GENCS_MODE_MASK) >> TSI_GENCS_MODE_SHIFT;
AnnaBridge 145:64910690c574 638 }
AnnaBridge 145:64910690c574 639
AnnaBridge 145:64910690c574 640 /*!
AnnaBridge 145:64910690c574 641 * @brief Sets the reference oscillator charge current.
AnnaBridge 145:64910690c574 642 *
AnnaBridge 145:64910690c574 643 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 644 * @param current The reference oscillator charge current.
AnnaBridge 145:64910690c574 645 * @return none.
AnnaBridge 145:64910690c574 646 */
AnnaBridge 145:64910690c574 647 static inline void TSI_SetReferenceChargeCurrent(TSI_Type *base, tsi_reference_osc_charge_current_t current)
AnnaBridge 145:64910690c574 648 {
AnnaBridge 145:64910690c574 649 base->GENCS = (base->GENCS & ~(TSI_GENCS_REFCHRG_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_REFCHRG(current));
AnnaBridge 145:64910690c574 650 }
AnnaBridge 145:64910690c574 651
AnnaBridge 145:64910690c574 652 /*!
AnnaBridge 145:64910690c574 653 * @brief Sets the external electrode charge current.
AnnaBridge 145:64910690c574 654 *
AnnaBridge 145:64910690c574 655 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 656 * @param current External electrode charge current.
AnnaBridge 145:64910690c574 657 * @return none.
AnnaBridge 145:64910690c574 658 */
AnnaBridge 145:64910690c574 659 static inline void TSI_SetElectrodeChargeCurrent(TSI_Type *base, tsi_external_osc_charge_current_t current)
AnnaBridge 145:64910690c574 660 {
AnnaBridge 145:64910690c574 661 base->GENCS = (base->GENCS & ~(TSI_GENCS_EXTCHRG_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_EXTCHRG(current));
AnnaBridge 145:64910690c574 662 }
AnnaBridge 145:64910690c574 663
AnnaBridge 145:64910690c574 664 /*!
AnnaBridge 145:64910690c574 665 * @brief Sets the oscillator's voltage rails.
AnnaBridge 145:64910690c574 666 *
AnnaBridge 145:64910690c574 667 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 668 * @param dvolt The voltage rails.
AnnaBridge 145:64910690c574 669 * @return none.
AnnaBridge 145:64910690c574 670 */
AnnaBridge 145:64910690c574 671 static inline void TSI_SetOscVoltageRails(TSI_Type *base, tsi_osc_voltage_rails_t dvolt)
AnnaBridge 145:64910690c574 672 {
AnnaBridge 145:64910690c574 673 base->GENCS = (base->GENCS & ~(TSI_GENCS_DVOLT_MASK | ALL_FLAGS_MASK)) | (TSI_GENCS_DVOLT(dvolt));
AnnaBridge 145:64910690c574 674 }
AnnaBridge 145:64910690c574 675
AnnaBridge 145:64910690c574 676 /*!
AnnaBridge 145:64910690c574 677 * @brief Sets the electrode series resistance value in EXTCHRG[0] bit.
AnnaBridge 145:64910690c574 678 *
AnnaBridge 145:64910690c574 679 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 680 * @param resistor Series resistance.
AnnaBridge 145:64910690c574 681 * @return none.
AnnaBridge 145:64910690c574 682 */
AnnaBridge 145:64910690c574 683 static inline void TSI_SetElectrodeSeriesResistor(TSI_Type *base, tsi_series_resistor_t resistor)
AnnaBridge 145:64910690c574 684 {
AnnaBridge 145:64910690c574 685 base->GENCS = (base->GENCS & TSI_V4_EXTCHRG_RESISTOR_BIT_CLEAR) | TSI_GENCS_EXTCHRG(resistor);
AnnaBridge 145:64910690c574 686 }
AnnaBridge 145:64910690c574 687
AnnaBridge 145:64910690c574 688 /*!
AnnaBridge 145:64910690c574 689 * @brief Sets the electrode filter bits value in EXTCHRG[2:1] bits.
AnnaBridge 145:64910690c574 690 *
AnnaBridge 145:64910690c574 691 * @param base TSI peripheral base address.
AnnaBridge 145:64910690c574 692 * @param filter Series resistance.
AnnaBridge 145:64910690c574 693 * @return none.
AnnaBridge 145:64910690c574 694 */
AnnaBridge 145:64910690c574 695 static inline void TSI_SetFilterBits(TSI_Type *base, tsi_filter_bits_t filter)
AnnaBridge 145:64910690c574 696 {
AnnaBridge 145:64910690c574 697 base->GENCS = (base->GENCS & TSI_V4_EXTCHRG_FILTER_BITS_CLEAR) | (filter << TSI_V4_EXTCHRG_FILTER_BITS_SHIFT);
AnnaBridge 145:64910690c574 698 }
AnnaBridge 145:64910690c574 699
AnnaBridge 145:64910690c574 700 #ifdef __cplusplus
AnnaBridge 145:64910690c574 701 }
AnnaBridge 145:64910690c574 702 #endif /* __cplusplus */
AnnaBridge 145:64910690c574 703
AnnaBridge 145:64910690c574 704 /*! @}*/
AnnaBridge 145:64910690c574 705
AnnaBridge 145:64910690c574 706 #endif /* _FSL_TSI_V4_H_ */