rik te winkel / mbed-dev

Dependents:   Numitron_clock

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Fri Oct 28 11:17:30 2016 +0100
Revision:
149:156823d33999
Parent:
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_KL27Z/drivers/fsl_adc16.h@121:7f86b4238bec
This updates the lib to the mbed lib v128

NOTE: This release includes a restructuring of the file and directory locations and thus some
include paths in your code may need updating accordingly.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 121:7f86b4238bec 1 /*
mbed_official 121:7f86b4238bec 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
mbed_official 121:7f86b4238bec 3 * All rights reserved.
mbed_official 121:7f86b4238bec 4 *
mbed_official 121:7f86b4238bec 5 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 121:7f86b4238bec 6 * are permitted provided that the following conditions are met:
mbed_official 121:7f86b4238bec 7 *
mbed_official 121:7f86b4238bec 8 * o Redistributions of source code must retain the above copyright notice, this list
mbed_official 121:7f86b4238bec 9 * of conditions and the following disclaimer.
mbed_official 121:7f86b4238bec 10 *
mbed_official 121:7f86b4238bec 11 * o Redistributions in binary form must reproduce the above copyright notice, this
mbed_official 121:7f86b4238bec 12 * list of conditions and the following disclaimer in the documentation and/or
mbed_official 121:7f86b4238bec 13 * other materials provided with the distribution.
mbed_official 121:7f86b4238bec 14 *
mbed_official 121:7f86b4238bec 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
mbed_official 121:7f86b4238bec 16 * contributors may be used to endorse or promote products derived from this
mbed_official 121:7f86b4238bec 17 * software without specific prior written permission.
mbed_official 121:7f86b4238bec 18 *
mbed_official 121:7f86b4238bec 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
mbed_official 121:7f86b4238bec 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
mbed_official 121:7f86b4238bec 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 121:7f86b4238bec 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
mbed_official 121:7f86b4238bec 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
mbed_official 121:7f86b4238bec 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
mbed_official 121:7f86b4238bec 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
mbed_official 121:7f86b4238bec 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
mbed_official 121:7f86b4238bec 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
mbed_official 121:7f86b4238bec 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 121:7f86b4238bec 29 */
mbed_official 121:7f86b4238bec 30
mbed_official 121:7f86b4238bec 31 #ifndef _FSL_ADC16_H_
mbed_official 121:7f86b4238bec 32 #define _FSL_ADC16_H_
mbed_official 121:7f86b4238bec 33
mbed_official 121:7f86b4238bec 34 #include "fsl_common.h"
mbed_official 121:7f86b4238bec 35
mbed_official 121:7f86b4238bec 36 /*!
mbed_official 121:7f86b4238bec 37 * @addtogroup adc16
mbed_official 121:7f86b4238bec 38 * @{
mbed_official 121:7f86b4238bec 39 */
mbed_official 121:7f86b4238bec 40
mbed_official 121:7f86b4238bec 41 /*! @file */
mbed_official 121:7f86b4238bec 42
mbed_official 121:7f86b4238bec 43 /*******************************************************************************
mbed_official 121:7f86b4238bec 44 * Definitions
mbed_official 121:7f86b4238bec 45 ******************************************************************************/
mbed_official 121:7f86b4238bec 46
mbed_official 121:7f86b4238bec 47 /*! @name Driver version */
mbed_official 121:7f86b4238bec 48 /*@{*/
mbed_official 121:7f86b4238bec 49 /*! @brief ADC16 driver version 2.0.0. */
mbed_official 121:7f86b4238bec 50 #define FSL_ADC16_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
mbed_official 121:7f86b4238bec 51 /*@}*/
mbed_official 121:7f86b4238bec 52
mbed_official 121:7f86b4238bec 53 /*!
mbed_official 121:7f86b4238bec 54 * @brief Channel status flags.
mbed_official 121:7f86b4238bec 55 */
mbed_official 121:7f86b4238bec 56 enum _adc16_channel_status_flags
mbed_official 121:7f86b4238bec 57 {
mbed_official 121:7f86b4238bec 58 kADC16_ChannelConversionDoneFlag = ADC_SC1_COCO_MASK, /*!< Conversion done. */
mbed_official 121:7f86b4238bec 59 };
mbed_official 121:7f86b4238bec 60
mbed_official 121:7f86b4238bec 61 /*!
mbed_official 121:7f86b4238bec 62 * @brief Converter status flags.
mbed_official 121:7f86b4238bec 63 */
mbed_official 121:7f86b4238bec 64 enum _adc16_status_flags
mbed_official 121:7f86b4238bec 65 {
mbed_official 121:7f86b4238bec 66 kADC16_ActiveFlag = ADC_SC2_ADACT_MASK, /*!< Converter is active. */
mbed_official 121:7f86b4238bec 67 #if defined(FSL_FEATURE_ADC16_HAS_CALIBRATION) && FSL_FEATURE_ADC16_HAS_CALIBRATION
mbed_official 121:7f86b4238bec 68 kADC16_CalibrationFailedFlag = ADC_SC3_CALF_MASK, /*!< Calibration is failed. */
mbed_official 121:7f86b4238bec 69 #endif /* FSL_FEATURE_ADC16_HAS_CALIBRATION */
mbed_official 121:7f86b4238bec 70 };
mbed_official 121:7f86b4238bec 71
mbed_official 121:7f86b4238bec 72 #if defined(FSL_FEATURE_ADC16_HAS_MUX_SELECT) && FSL_FEATURE_ADC16_HAS_MUX_SELECT
mbed_official 121:7f86b4238bec 73 /*!
mbed_official 121:7f86b4238bec 74 * @brief Channel multiplexer mode for each channel.
mbed_official 121:7f86b4238bec 75 *
mbed_official 121:7f86b4238bec 76 * For some ADC16 channels, there are two pin selections in channel multiplexer. For example, ADC0_SE4a and ADC0_SE4b
mbed_official 121:7f86b4238bec 77 * are the different channels but share the same channel number.
mbed_official 121:7f86b4238bec 78 */
mbed_official 121:7f86b4238bec 79 typedef enum _adc_channel_mux_mode
mbed_official 121:7f86b4238bec 80 {
mbed_official 121:7f86b4238bec 81 kADC16_ChannelMuxA = 0U, /*!< For channel with channel mux a. */
mbed_official 121:7f86b4238bec 82 kADC16_ChannelMuxB = 1U, /*!< For channel with channel mux b. */
mbed_official 121:7f86b4238bec 83 } adc16_channel_mux_mode_t;
mbed_official 121:7f86b4238bec 84 #endif /* FSL_FEATURE_ADC16_HAS_MUX_SELECT */
mbed_official 121:7f86b4238bec 85
mbed_official 121:7f86b4238bec 86 /*!
mbed_official 121:7f86b4238bec 87 * @brief Clock divider for the converter.
mbed_official 121:7f86b4238bec 88 */
mbed_official 121:7f86b4238bec 89 typedef enum _adc16_clock_divider
mbed_official 121:7f86b4238bec 90 {
mbed_official 121:7f86b4238bec 91 kADC16_ClockDivider1 = 0U, /*!< For divider 1 from the input clock to the module. */
mbed_official 121:7f86b4238bec 92 kADC16_ClockDivider2 = 1U, /*!< For divider 2 from the input clock to the module. */
mbed_official 121:7f86b4238bec 93 kADC16_ClockDivider4 = 2U, /*!< For divider 4 from the input clock to the module. */
mbed_official 121:7f86b4238bec 94 kADC16_ClockDivider8 = 3U, /*!< For divider 8 from the input clock to the module. */
mbed_official 121:7f86b4238bec 95 } adc16_clock_divider_t;
mbed_official 121:7f86b4238bec 96
mbed_official 121:7f86b4238bec 97 /*!
mbed_official 121:7f86b4238bec 98 *@brief Converter's resolution.
mbed_official 121:7f86b4238bec 99 */
mbed_official 121:7f86b4238bec 100 typedef enum _adc16_resolution
mbed_official 121:7f86b4238bec 101 {
mbed_official 121:7f86b4238bec 102 /* This group of enumeration is for internal use which is related to register setting. */
mbed_official 121:7f86b4238bec 103 kADC16_Resolution8or9Bit = 0U, /*!< Single End 8-bit or Differential Sample 9-bit. */
mbed_official 121:7f86b4238bec 104 kADC16_Resolution12or13Bit = 1U, /*!< Single End 12-bit or Differential Sample 13-bit. */
mbed_official 121:7f86b4238bec 105 kADC16_Resolution10or11Bit = 2U, /*!< Single End 10-bit or Differential Sample 11-bit. */
mbed_official 121:7f86b4238bec 106
mbed_official 121:7f86b4238bec 107 /* This group of enumeration is for public user. */
mbed_official 121:7f86b4238bec 108 kADC16_ResolutionSE8Bit = kADC16_Resolution8or9Bit, /*!< Single End 8-bit. */
mbed_official 121:7f86b4238bec 109 kADC16_ResolutionSE12Bit = kADC16_Resolution12or13Bit, /*!< Single End 12-bit. */
mbed_official 121:7f86b4238bec 110 kADC16_ResolutionSE10Bit = kADC16_Resolution10or11Bit, /*!< Single End 10-bit. */
mbed_official 121:7f86b4238bec 111 #if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
mbed_official 121:7f86b4238bec 112 kADC16_ResolutionDF9Bit = kADC16_Resolution8or9Bit, /*!< Differential Sample 9-bit. */
mbed_official 121:7f86b4238bec 113 kADC16_ResolutionDF13Bit = kADC16_Resolution12or13Bit, /*!< Differential Sample 13-bit. */
mbed_official 121:7f86b4238bec 114 kADC16_ResolutionDF11Bit = kADC16_Resolution10or11Bit, /*!< Differential Sample 11-bit. */
mbed_official 121:7f86b4238bec 115 #endif /* FSL_FEATURE_ADC16_HAS_DIFF_MODE */
mbed_official 121:7f86b4238bec 116
mbed_official 121:7f86b4238bec 117 #if defined(FSL_FEATURE_ADC16_MAX_RESOLUTION) && (FSL_FEATURE_ADC16_MAX_RESOLUTION >= 16U)
mbed_official 121:7f86b4238bec 118 /* 16-bit is supported by default. */
mbed_official 121:7f86b4238bec 119 kADC16_Resolution16Bit = 3U, /*!< Single End 16-bit or Differential Sample 16-bit. */
mbed_official 121:7f86b4238bec 120 kADC16_ResolutionSE16Bit = kADC16_Resolution16Bit, /*!< Single End 16-bit. */
mbed_official 121:7f86b4238bec 121 #if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
mbed_official 121:7f86b4238bec 122 kADC16_ResolutionDF16Bit = kADC16_Resolution16Bit, /*!< Differential Sample 16-bit. */
mbed_official 121:7f86b4238bec 123 #endif /* FSL_FEATURE_ADC16_HAS_DIFF_MODE */
mbed_official 121:7f86b4238bec 124 #endif /* FSL_FEATURE_ADC16_MAX_RESOLUTION >= 16U */
mbed_official 121:7f86b4238bec 125 } adc16_resolution_t;
mbed_official 121:7f86b4238bec 126
mbed_official 121:7f86b4238bec 127 /*!
mbed_official 121:7f86b4238bec 128 * @brief Clock source.
mbed_official 121:7f86b4238bec 129 */
mbed_official 121:7f86b4238bec 130 typedef enum _adc16_clock_source
mbed_official 121:7f86b4238bec 131 {
mbed_official 121:7f86b4238bec 132 kADC16_ClockSourceAlt0 = 0U, /*!< Selection 0 of the clock source. */
mbed_official 121:7f86b4238bec 133 kADC16_ClockSourceAlt1 = 1U, /*!< Selection 1 of the clock source. */
mbed_official 121:7f86b4238bec 134 kADC16_ClockSourceAlt2 = 2U, /*!< Selection 2 of the clock source. */
mbed_official 121:7f86b4238bec 135 kADC16_ClockSourceAlt3 = 3U, /*!< Selection 3 of the clock source. */
mbed_official 121:7f86b4238bec 136
mbed_official 121:7f86b4238bec 137 /* Chip defined clock source */
mbed_official 121:7f86b4238bec 138 kADC16_ClockSourceAsynchronousClock = kADC16_ClockSourceAlt3, /*!< Using internal asynchronous clock. */
mbed_official 121:7f86b4238bec 139 } adc16_clock_source_t;
mbed_official 121:7f86b4238bec 140
mbed_official 121:7f86b4238bec 141 /*!
mbed_official 121:7f86b4238bec 142 * @brief Long sample mode.
mbed_official 121:7f86b4238bec 143 */
mbed_official 121:7f86b4238bec 144 typedef enum _adc16_long_sample_mode
mbed_official 121:7f86b4238bec 145 {
mbed_official 121:7f86b4238bec 146 kADC16_LongSampleCycle24 = 0U, /*!< 20 extra ADCK cycles, 24 ADCK cycles total. */
mbed_official 121:7f86b4238bec 147 kADC16_LongSampleCycle16 = 1U, /*!< 12 extra ADCK cycles, 16 ADCK cycles total. */
mbed_official 121:7f86b4238bec 148 kADC16_LongSampleCycle10 = 2U, /*!< 6 extra ADCK cycles, 10 ADCK cycles total. */
mbed_official 121:7f86b4238bec 149 kADC16_LongSampleCycle6 = 3U, /*!< 2 extra ADCK cycles, 6 ADCK cycles total. */
mbed_official 121:7f86b4238bec 150 kADC16_LongSampleDisabled = 4U, /*!< Disable the long sample feature. */
mbed_official 121:7f86b4238bec 151 } adc16_long_sample_mode_t;
mbed_official 121:7f86b4238bec 152
mbed_official 121:7f86b4238bec 153 /*!
mbed_official 121:7f86b4238bec 154 * @brief Reference voltage source.
mbed_official 121:7f86b4238bec 155 */
mbed_official 121:7f86b4238bec 156 typedef enum _adc16_reference_voltage_source
mbed_official 121:7f86b4238bec 157 {
mbed_official 121:7f86b4238bec 158 kADC16_ReferenceVoltageSourceVref = 0U, /*!< For external pins pair of VrefH and VrefL. */
mbed_official 121:7f86b4238bec 159 kADC16_ReferenceVoltageSourceValt = 1U, /*!< For alternate reference pair of ValtH and ValtL. */
mbed_official 121:7f86b4238bec 160 } adc16_reference_voltage_source_t;
mbed_official 121:7f86b4238bec 161
mbed_official 121:7f86b4238bec 162 #if defined(FSL_FEATURE_ADC16_HAS_HW_AVERAGE) && FSL_FEATURE_ADC16_HAS_HW_AVERAGE
mbed_official 121:7f86b4238bec 163 /*!
mbed_official 121:7f86b4238bec 164 * @brief Hardware average mode.
mbed_official 121:7f86b4238bec 165 */
mbed_official 121:7f86b4238bec 166 typedef enum _adc16_hardware_average_mode
mbed_official 121:7f86b4238bec 167 {
mbed_official 121:7f86b4238bec 168 kADC16_HardwareAverageCount4 = 0U, /*!< For hardware average with 4 samples. */
mbed_official 121:7f86b4238bec 169 kADC16_HardwareAverageCount8 = 1U, /*!< For hardware average with 8 samples. */
mbed_official 121:7f86b4238bec 170 kADC16_HardwareAverageCount16 = 2U, /*!< For hardware average with 16 samples. */
mbed_official 121:7f86b4238bec 171 kADC16_HardwareAverageCount32 = 3U, /*!< For hardware average with 32 samples. */
mbed_official 121:7f86b4238bec 172 kADC16_HardwareAverageDisabled = 4U, /*!< Disable the hardware average feature.*/
mbed_official 121:7f86b4238bec 173 } adc16_hardware_average_mode_t;
mbed_official 121:7f86b4238bec 174 #endif /* FSL_FEATURE_ADC16_HAS_HW_AVERAGE */
mbed_official 121:7f86b4238bec 175
mbed_official 121:7f86b4238bec 176 /*!
mbed_official 121:7f86b4238bec 177 * @brief Hardware compare mode.
mbed_official 121:7f86b4238bec 178 */
mbed_official 121:7f86b4238bec 179 typedef enum _adc16_hardware_compare_mode
mbed_official 121:7f86b4238bec 180 {
mbed_official 121:7f86b4238bec 181 kADC16_HardwareCompareMode0 = 0U, /*!< x < value1. */
mbed_official 121:7f86b4238bec 182 kADC16_HardwareCompareMode1 = 1U, /*!< x > value1. */
mbed_official 121:7f86b4238bec 183 kADC16_HardwareCompareMode2 = 2U, /*!< if value1 <= value2, then x < value1 || x > value2;
mbed_official 121:7f86b4238bec 184 else, value1 > x > value2. */
mbed_official 121:7f86b4238bec 185 kADC16_HardwareCompareMode3 = 3U, /*!< if value1 <= value2, then value1 <= x <= value2;
mbed_official 121:7f86b4238bec 186 else x >= value1 || x <= value2. */
mbed_official 121:7f86b4238bec 187 } adc16_hardware_compare_mode_t;
mbed_official 121:7f86b4238bec 188
mbed_official 121:7f86b4238bec 189 #if defined(FSL_FEATURE_ADC16_HAS_PGA) && FSL_FEATURE_ADC16_HAS_PGA
mbed_official 121:7f86b4238bec 190 /*!
mbed_official 121:7f86b4238bec 191 * @brief PGA's Gain mode.
mbed_official 121:7f86b4238bec 192 */
mbed_official 121:7f86b4238bec 193 typedef enum _adc16_pga_gain
mbed_official 121:7f86b4238bec 194 {
mbed_official 121:7f86b4238bec 195 kADC16_PGAGainValueOf1 = 0U, /*!< For amplifier gain of 1. */
mbed_official 121:7f86b4238bec 196 kADC16_PGAGainValueOf2 = 1U, /*!< For amplifier gain of 2. */
mbed_official 121:7f86b4238bec 197 kADC16_PGAGainValueOf4 = 2U, /*!< For amplifier gain of 4. */
mbed_official 121:7f86b4238bec 198 kADC16_PGAGainValueOf8 = 3U, /*!< For amplifier gain of 8. */
mbed_official 121:7f86b4238bec 199 kADC16_PGAGainValueOf16 = 4U, /*!< For amplifier gain of 16. */
mbed_official 121:7f86b4238bec 200 kADC16_PGAGainValueOf32 = 5U, /*!< For amplifier gain of 32. */
mbed_official 121:7f86b4238bec 201 kADC16_PGAGainValueOf64 = 6U, /*!< For amplifier gain of 64. */
mbed_official 121:7f86b4238bec 202 } adc16_pga_gain_t;
mbed_official 121:7f86b4238bec 203 #endif /* FSL_FEATURE_ADC16_HAS_PGA */
mbed_official 121:7f86b4238bec 204
mbed_official 121:7f86b4238bec 205 /*!
mbed_official 121:7f86b4238bec 206 * @brief ADC16 converter configuration .
mbed_official 121:7f86b4238bec 207 */
mbed_official 121:7f86b4238bec 208 typedef struct _adc16_config
mbed_official 121:7f86b4238bec 209 {
mbed_official 121:7f86b4238bec 210 adc16_reference_voltage_source_t referenceVoltageSource; /*!< Select the reference voltage source. */
mbed_official 121:7f86b4238bec 211 adc16_clock_source_t clockSource; /*!< Select the input clock source to converter. */
mbed_official 121:7f86b4238bec 212 bool enableAsynchronousClock; /*!< Enable the asynchronous clock output. */
mbed_official 121:7f86b4238bec 213 adc16_clock_divider_t clockDivider; /*!< Select the divider of input clock source. */
mbed_official 121:7f86b4238bec 214 adc16_resolution_t resolution; /*!< Select the sample resolution mode. */
mbed_official 121:7f86b4238bec 215 adc16_long_sample_mode_t longSampleMode; /*!< Select the long sample mode. */
mbed_official 121:7f86b4238bec 216 bool enableHighSpeed; /*!< Enable the high-speed mode. */
mbed_official 121:7f86b4238bec 217 bool enableLowPower; /*!< Enable low power. */
mbed_official 121:7f86b4238bec 218 bool enableContinuousConversion; /*!< Enable continuous conversion mode. */
mbed_official 121:7f86b4238bec 219 } adc16_config_t;
mbed_official 121:7f86b4238bec 220
mbed_official 121:7f86b4238bec 221 /*!
mbed_official 121:7f86b4238bec 222 * @brief ADC16 Hardware compare configuration.
mbed_official 121:7f86b4238bec 223 */
mbed_official 121:7f86b4238bec 224 typedef struct _adc16_hardware_compare_config
mbed_official 121:7f86b4238bec 225 {
mbed_official 121:7f86b4238bec 226 adc16_hardware_compare_mode_t hardwareCompareMode; /*!< Select the hardware compare mode.
mbed_official 121:7f86b4238bec 227 See "adc16_hardware_compare_mode_t". */
mbed_official 121:7f86b4238bec 228 int16_t value1; /*!< Setting value1 for hardware compare mode. */
mbed_official 121:7f86b4238bec 229 int16_t value2; /*!< Setting value2 for hardware compare mode. */
mbed_official 121:7f86b4238bec 230 } adc16_hardware_compare_config_t;
mbed_official 121:7f86b4238bec 231
mbed_official 121:7f86b4238bec 232 /*!
mbed_official 121:7f86b4238bec 233 * @brief ADC16 channel conversion configuration.
mbed_official 121:7f86b4238bec 234 */
mbed_official 121:7f86b4238bec 235 typedef struct _adc16_channel_config
mbed_official 121:7f86b4238bec 236 {
mbed_official 121:7f86b4238bec 237 uint32_t channelNumber; /*!< Setting the conversion channel number. The available range is 0-31.
mbed_official 121:7f86b4238bec 238 See channel connection information for each chip in Reference
mbed_official 121:7f86b4238bec 239 Manual document. */
mbed_official 121:7f86b4238bec 240 bool enableInterruptOnConversionCompleted; /*!< Generate a interrupt request once the conversion is completed. */
mbed_official 121:7f86b4238bec 241 #if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
mbed_official 121:7f86b4238bec 242 bool enableDifferentialConversion; /*!< Using Differential sample mode. */
mbed_official 121:7f86b4238bec 243 #endif /* FSL_FEATURE_ADC16_HAS_DIFF_MODE */
mbed_official 121:7f86b4238bec 244 } adc16_channel_config_t;
mbed_official 121:7f86b4238bec 245
mbed_official 121:7f86b4238bec 246 #if defined(FSL_FEATURE_ADC16_HAS_PGA) && FSL_FEATURE_ADC16_HAS_PGA
mbed_official 121:7f86b4238bec 247 /*!
mbed_official 121:7f86b4238bec 248 * @brief ADC16 programmable gain amplifier configuration.
mbed_official 121:7f86b4238bec 249 */
mbed_official 121:7f86b4238bec 250 typedef struct _adc16_pga_config
mbed_official 121:7f86b4238bec 251 {
mbed_official 121:7f86b4238bec 252 adc16_pga_gain_t pgaGain; /*!< Setting PGA gain. */
mbed_official 121:7f86b4238bec 253 bool enableRunInNormalMode; /*!< Enable PGA working in normal mode, or low power mode by default. */
mbed_official 121:7f86b4238bec 254 #if defined(FSL_FEATURE_ADC16_HAS_PGA_CHOPPING) && FSL_FEATURE_ADC16_HAS_PGA_CHOPPING
mbed_official 121:7f86b4238bec 255 bool disablePgaChopping; /*!< Disable the PGA chopping function.
mbed_official 121:7f86b4238bec 256 The PGA employs chopping to remove/reduce offset and 1/f noise and offers
mbed_official 121:7f86b4238bec 257 an offset measurement configuration that aids the offset calibration. */
mbed_official 121:7f86b4238bec 258 #endif /* FSL_FEATURE_ADC16_HAS_PGA_CHOPPING */
mbed_official 121:7f86b4238bec 259 #if defined(FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT) && FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT
mbed_official 121:7f86b4238bec 260 bool enableRunInOffsetMeasurement; /*!< Enable the PGA working in offset measurement mode.
mbed_official 121:7f86b4238bec 261 When this feature is enabled, the PGA disconnects itself from the external
mbed_official 121:7f86b4238bec 262 inputs and auto-configures into offset measurement mode. With this field
mbed_official 121:7f86b4238bec 263 set, run the ADC in the recommended settings and enable the maximum hardware
mbed_official 121:7f86b4238bec 264 averaging to get the PGA offset number. The output is the
mbed_official 121:7f86b4238bec 265 (PGA offset * (64+1)) for the given PGA setting. */
mbed_official 121:7f86b4238bec 266 #endif /* FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT */
mbed_official 121:7f86b4238bec 267 } adc16_pga_config_t;
mbed_official 121:7f86b4238bec 268 #endif /* FSL_FEATURE_ADC16_HAS_PGA */
mbed_official 121:7f86b4238bec 269
mbed_official 121:7f86b4238bec 270 #if defined(__cplusplus)
mbed_official 121:7f86b4238bec 271 extern "C" {
mbed_official 121:7f86b4238bec 272 #endif
mbed_official 121:7f86b4238bec 273
mbed_official 121:7f86b4238bec 274 /*******************************************************************************
mbed_official 121:7f86b4238bec 275 * API
mbed_official 121:7f86b4238bec 276 ******************************************************************************/
mbed_official 121:7f86b4238bec 277
mbed_official 121:7f86b4238bec 278 /*!
mbed_official 121:7f86b4238bec 279 * @name Initialization
mbed_official 121:7f86b4238bec 280 * @{
mbed_official 121:7f86b4238bec 281 */
mbed_official 121:7f86b4238bec 282
mbed_official 121:7f86b4238bec 283 /*!
mbed_official 121:7f86b4238bec 284 * @brief Initializes the ADC16 module.
mbed_official 121:7f86b4238bec 285 *
mbed_official 121:7f86b4238bec 286 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 287 * @param config Pointer to configuration structure. See "adc16_config_t".
mbed_official 121:7f86b4238bec 288 */
mbed_official 121:7f86b4238bec 289 void ADC16_Init(ADC_Type *base, const adc16_config_t *config);
mbed_official 121:7f86b4238bec 290
mbed_official 121:7f86b4238bec 291 /*!
mbed_official 121:7f86b4238bec 292 * @brief De-initializes the ADC16 module.
mbed_official 121:7f86b4238bec 293 *
mbed_official 121:7f86b4238bec 294 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 295 */
mbed_official 121:7f86b4238bec 296 void ADC16_Deinit(ADC_Type *base);
mbed_official 121:7f86b4238bec 297
mbed_official 121:7f86b4238bec 298 /*!
mbed_official 121:7f86b4238bec 299 * @brief Gets an available pre-defined settings for converter's configuration.
mbed_official 121:7f86b4238bec 300 *
mbed_official 121:7f86b4238bec 301 * This function initializes the converter configuration structure with an available settings. The default values are:
mbed_official 121:7f86b4238bec 302 * @code
mbed_official 121:7f86b4238bec 303 * config->referenceVoltageSource = kADC16_ReferenceVoltageSourceVref;
mbed_official 121:7f86b4238bec 304 * config->clockSource = kADC16_ClockSourceAsynchronousClock;
mbed_official 121:7f86b4238bec 305 * config->enableAsynchronousClock = true;
mbed_official 121:7f86b4238bec 306 * config->clockDivider = kADC16_ClockDivider8;
mbed_official 121:7f86b4238bec 307 * config->resolution = kADC16_ResolutionSE12Bit;
mbed_official 121:7f86b4238bec 308 * config->longSampleMode = kADC16_LongSampleDisabled;
mbed_official 121:7f86b4238bec 309 * config->enableHighSpeed = false;
mbed_official 121:7f86b4238bec 310 * config->enableLowPower = false;
mbed_official 121:7f86b4238bec 311 * config->enableContinuousConversion = false;
mbed_official 121:7f86b4238bec 312 * @endcode
mbed_official 121:7f86b4238bec 313 * @param config Pointer to configuration structure.
mbed_official 121:7f86b4238bec 314 */
mbed_official 121:7f86b4238bec 315 void ADC16_GetDefaultConfig(adc16_config_t *config);
mbed_official 121:7f86b4238bec 316
mbed_official 121:7f86b4238bec 317 #if defined(FSL_FEATURE_ADC16_HAS_CALIBRATION) && FSL_FEATURE_ADC16_HAS_CALIBRATION
mbed_official 121:7f86b4238bec 318 /*!
mbed_official 121:7f86b4238bec 319 * @brief Automates the hardware calibration.
mbed_official 121:7f86b4238bec 320 *
mbed_official 121:7f86b4238bec 321 * This auto calibration helps to adjust the plus/minus side gain automatically on the converter's working situation.
mbed_official 121:7f86b4238bec 322 * Execute the calibration before using the converter. Note that the hardware trigger should be used
mbed_official 121:7f86b4238bec 323 * during calibration.
mbed_official 121:7f86b4238bec 324 *
mbed_official 121:7f86b4238bec 325 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 326 *
mbed_official 121:7f86b4238bec 327 * @return Execution status.
mbed_official 121:7f86b4238bec 328 * @retval kStatus_Success Calibration is done successfully.
mbed_official 121:7f86b4238bec 329 * @retval kStatus_Fail Calibration is failed.
mbed_official 121:7f86b4238bec 330 */
mbed_official 121:7f86b4238bec 331 status_t ADC16_DoAutoCalibration(ADC_Type *base);
mbed_official 121:7f86b4238bec 332 #endif /* FSL_FEATURE_ADC16_HAS_CALIBRATION */
mbed_official 121:7f86b4238bec 333
mbed_official 121:7f86b4238bec 334 #if defined(FSL_FEATURE_ADC16_HAS_OFFSET_CORRECTION) && FSL_FEATURE_ADC16_HAS_OFFSET_CORRECTION
mbed_official 121:7f86b4238bec 335 /*!
mbed_official 121:7f86b4238bec 336 * @brief Sets the offset value for the conversion result.
mbed_official 121:7f86b4238bec 337 *
mbed_official 121:7f86b4238bec 338 * This offset value takes effect on the conversion result. If the offset value is not zero, the reading result
mbed_official 121:7f86b4238bec 339 * is subtracted by it. Note, the hardware calibration fills the offset value automatically.
mbed_official 121:7f86b4238bec 340 *
mbed_official 121:7f86b4238bec 341 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 342 * @param value Setting offset value.
mbed_official 121:7f86b4238bec 343 */
mbed_official 121:7f86b4238bec 344 static inline void ADC16_SetOffsetValue(ADC_Type *base, int16_t value)
mbed_official 121:7f86b4238bec 345 {
mbed_official 121:7f86b4238bec 346 base->OFS = (uint32_t)(value);
mbed_official 121:7f86b4238bec 347 }
mbed_official 121:7f86b4238bec 348 #endif /* FSL_FEATURE_ADC16_HAS_OFFSET_CORRECTION */
mbed_official 121:7f86b4238bec 349
mbed_official 121:7f86b4238bec 350 /* @} */
mbed_official 121:7f86b4238bec 351
mbed_official 121:7f86b4238bec 352 /*!
mbed_official 121:7f86b4238bec 353 * @name Advanced Feature
mbed_official 121:7f86b4238bec 354 * @{
mbed_official 121:7f86b4238bec 355 */
mbed_official 121:7f86b4238bec 356
mbed_official 121:7f86b4238bec 357 #if defined(FSL_FEATURE_ADC16_HAS_DMA) && FSL_FEATURE_ADC16_HAS_DMA
mbed_official 121:7f86b4238bec 358 /*!
mbed_official 121:7f86b4238bec 359 * @brief Enables generating the DMA trigger when conversion is completed.
mbed_official 121:7f86b4238bec 360 *
mbed_official 121:7f86b4238bec 361 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 362 * @param enable Switcher of DMA feature. "true" means to enable, "false" means not.
mbed_official 121:7f86b4238bec 363 */
mbed_official 121:7f86b4238bec 364 static inline void ADC16_EnableDMA(ADC_Type *base, bool enable)
mbed_official 121:7f86b4238bec 365 {
mbed_official 121:7f86b4238bec 366 if (enable)
mbed_official 121:7f86b4238bec 367 {
mbed_official 121:7f86b4238bec 368 base->SC2 |= ADC_SC2_DMAEN_MASK;
mbed_official 121:7f86b4238bec 369 }
mbed_official 121:7f86b4238bec 370 else
mbed_official 121:7f86b4238bec 371 {
mbed_official 121:7f86b4238bec 372 base->SC2 &= ~ADC_SC2_DMAEN_MASK;
mbed_official 121:7f86b4238bec 373 }
mbed_official 121:7f86b4238bec 374 }
mbed_official 121:7f86b4238bec 375 #endif /* FSL_FEATURE_ADC16_HAS_DMA */
mbed_official 121:7f86b4238bec 376
mbed_official 121:7f86b4238bec 377 /*!
mbed_official 121:7f86b4238bec 378 * @brief Enables the hardware trigger mode.
mbed_official 121:7f86b4238bec 379 *
mbed_official 121:7f86b4238bec 380 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 381 * @param enable Switcher of hardware trigger feature. "true" means to enable, "false" means not.
mbed_official 121:7f86b4238bec 382 */
mbed_official 121:7f86b4238bec 383 static inline void ADC16_EnableHardwareTrigger(ADC_Type *base, bool enable)
mbed_official 121:7f86b4238bec 384 {
mbed_official 121:7f86b4238bec 385 if (enable)
mbed_official 121:7f86b4238bec 386 {
mbed_official 121:7f86b4238bec 387 base->SC2 |= ADC_SC2_ADTRG_MASK;
mbed_official 121:7f86b4238bec 388 }
mbed_official 121:7f86b4238bec 389 else
mbed_official 121:7f86b4238bec 390 {
mbed_official 121:7f86b4238bec 391 base->SC2 &= ~ADC_SC2_ADTRG_MASK;
mbed_official 121:7f86b4238bec 392 }
mbed_official 121:7f86b4238bec 393 }
mbed_official 121:7f86b4238bec 394
mbed_official 121:7f86b4238bec 395 #if defined(FSL_FEATURE_ADC16_HAS_MUX_SELECT) && FSL_FEATURE_ADC16_HAS_MUX_SELECT
mbed_official 121:7f86b4238bec 396 /*!
mbed_official 121:7f86b4238bec 397 * @brief Sets the channel mux mode.
mbed_official 121:7f86b4238bec 398 *
mbed_official 121:7f86b4238bec 399 * Some sample pins share the same channel index. The channel mux mode decides which pin is used for an
mbed_official 121:7f86b4238bec 400 * indicated channel.
mbed_official 121:7f86b4238bec 401 *
mbed_official 121:7f86b4238bec 402 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 403 * @param mode Setting channel mux mode. See "adc16_channel_mux_mode_t".
mbed_official 121:7f86b4238bec 404 */
mbed_official 121:7f86b4238bec 405 void ADC16_SetChannelMuxMode(ADC_Type *base, adc16_channel_mux_mode_t mode);
mbed_official 121:7f86b4238bec 406 #endif /* FSL_FEATURE_ADC16_HAS_MUX_SELECT */
mbed_official 121:7f86b4238bec 407
mbed_official 121:7f86b4238bec 408 /*!
mbed_official 121:7f86b4238bec 409 * @brief Configures the hardware compare mode.
mbed_official 121:7f86b4238bec 410 *
mbed_official 121:7f86b4238bec 411 * The hardware compare mode provides a way to process the conversion result automatically by hardware. Only the result
mbed_official 121:7f86b4238bec 412 * in
mbed_official 121:7f86b4238bec 413 * compare range is available. To compare the range, see "adc16_hardware_compare_mode_t", or the reference
mbed_official 121:7f86b4238bec 414 * manual document for more detailed information.
mbed_official 121:7f86b4238bec 415 *
mbed_official 121:7f86b4238bec 416 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 417 * @param config Pointer to "adc16_hardware_compare_config_t" structure. Passing "NULL" is to disable the feature.
mbed_official 121:7f86b4238bec 418 */
mbed_official 121:7f86b4238bec 419 void ADC16_SetHardwareCompareConfig(ADC_Type *base, const adc16_hardware_compare_config_t *config);
mbed_official 121:7f86b4238bec 420
mbed_official 121:7f86b4238bec 421 #if defined(FSL_FEATURE_ADC16_HAS_HW_AVERAGE) && FSL_FEATURE_ADC16_HAS_HW_AVERAGE
mbed_official 121:7f86b4238bec 422 /*!
mbed_official 121:7f86b4238bec 423 * @brief Sets the hardware average mode.
mbed_official 121:7f86b4238bec 424 *
mbed_official 121:7f86b4238bec 425 * Hardware average mode provides a way to process the conversion result automatically by hardware. The multiple
mbed_official 121:7f86b4238bec 426 * conversion results are accumulated and averaged internally. This aids reading results.
mbed_official 121:7f86b4238bec 427 *
mbed_official 121:7f86b4238bec 428 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 429 * @param mode Setting hardware average mode. See "adc16_hardware_average_mode_t".
mbed_official 121:7f86b4238bec 430 */
mbed_official 121:7f86b4238bec 431 void ADC16_SetHardwareAverage(ADC_Type *base, adc16_hardware_average_mode_t mode);
mbed_official 121:7f86b4238bec 432 #endif /* FSL_FEATURE_ADC16_HAS_HW_AVERAGE */
mbed_official 121:7f86b4238bec 433
mbed_official 121:7f86b4238bec 434 #if defined(FSL_FEATURE_ADC16_HAS_PGA) && FSL_FEATURE_ADC16_HAS_PGA
mbed_official 121:7f86b4238bec 435 /*!
mbed_official 121:7f86b4238bec 436 * @brief Configures the PGA for converter's front end.
mbed_official 121:7f86b4238bec 437 *
mbed_official 121:7f86b4238bec 438 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 439 * @param config Pointer to "adc16_pga_config_t" structure. Passing "NULL" is to disable the feature.
mbed_official 121:7f86b4238bec 440 */
mbed_official 121:7f86b4238bec 441 void ADC16_SetPGAConfig(ADC_Type *base, const adc16_pga_config_t *config);
mbed_official 121:7f86b4238bec 442 #endif /* FSL_FEATURE_ADC16_HAS_PGA */
mbed_official 121:7f86b4238bec 443
mbed_official 121:7f86b4238bec 444 /*!
mbed_official 121:7f86b4238bec 445 * @brief Gets the status flags of the converter.
mbed_official 121:7f86b4238bec 446 *
mbed_official 121:7f86b4238bec 447 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 448 *
mbed_official 121:7f86b4238bec 449 * @return Flags' mask if indicated flags are asserted. See "_adc16_status_flags".
mbed_official 121:7f86b4238bec 450 */
mbed_official 121:7f86b4238bec 451 uint32_t ADC16_GetStatusFlags(ADC_Type *base);
mbed_official 121:7f86b4238bec 452
mbed_official 121:7f86b4238bec 453 /*!
mbed_official 121:7f86b4238bec 454 * @brief Clears the status flags of the converter.
mbed_official 121:7f86b4238bec 455 *
mbed_official 121:7f86b4238bec 456 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 457 * @param mask Mask value for the cleared flags. See "_adc16_status_flags".
mbed_official 121:7f86b4238bec 458 */
mbed_official 121:7f86b4238bec 459 void ADC16_ClearStatusFlags(ADC_Type *base, uint32_t mask);
mbed_official 121:7f86b4238bec 460
mbed_official 121:7f86b4238bec 461 /* @} */
mbed_official 121:7f86b4238bec 462
mbed_official 121:7f86b4238bec 463 /*!
mbed_official 121:7f86b4238bec 464 * @name Conversion Channel
mbed_official 121:7f86b4238bec 465 * @{
mbed_official 121:7f86b4238bec 466 */
mbed_official 121:7f86b4238bec 467
mbed_official 121:7f86b4238bec 468 /*!
mbed_official 121:7f86b4238bec 469 * @brief Configures the conversion channel.
mbed_official 121:7f86b4238bec 470 *
mbed_official 121:7f86b4238bec 471 * This operation triggers the conversion if in software trigger mode. When in hardware trigger mode, this API
mbed_official 121:7f86b4238bec 472 * configures the channel while the external trigger source helps to trigger the conversion.
mbed_official 121:7f86b4238bec 473 *
mbed_official 121:7f86b4238bec 474 * Note that the "Channel Group" has a detailed description.
mbed_official 121:7f86b4238bec 475 * To allow sequential conversions of the ADC to be triggered by internal peripherals, the ADC can have more than one
mbed_official 121:7f86b4238bec 476 * group of status and control register, one for each conversion. The channel group parameter indicates which group of
mbed_official 121:7f86b4238bec 477 * registers are used channel group 0 is for Group A registers and channel group 1 is for Group B registers. The
mbed_official 121:7f86b4238bec 478 * channel groups are used in a "ping-pong" approach to control the ADC operation. At any point, only one of
mbed_official 121:7f86b4238bec 479 * the channel groups is actively controlling ADC conversions. Channel group 0 is used for both software and hardware
mbed_official 121:7f86b4238bec 480 * trigger modes of operation. Channel groups 1 and greater indicate potentially multiple channel group registers for
mbed_official 121:7f86b4238bec 481 * use only in hardware trigger mode. See the chip configuration information in the MCU reference manual about the
mbed_official 121:7f86b4238bec 482 * number of SC1n registers (channel groups) specific to this device. None of the channel groups 1 or greater are used
mbed_official 121:7f86b4238bec 483 * for software trigger operation and therefore writes to these channel groups do not initiate a new conversion.
mbed_official 121:7f86b4238bec 484 * Updating channel group 0 while a different channel group is actively controlling a conversion is allowed and
mbed_official 121:7f86b4238bec 485 * vice versa. Writing any of the channel group registers while that specific channel group is actively controlling a
mbed_official 121:7f86b4238bec 486 * conversion aborts the current conversion.
mbed_official 121:7f86b4238bec 487 *
mbed_official 121:7f86b4238bec 488 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 489 * @param channelGroup Channel group index.
mbed_official 121:7f86b4238bec 490 * @param config Pointer to "adc16_channel_config_t" structure for conversion channel.
mbed_official 121:7f86b4238bec 491 */
mbed_official 121:7f86b4238bec 492 void ADC16_SetChannelConfig(ADC_Type *base, uint32_t channelGroup, const adc16_channel_config_t *config);
mbed_official 121:7f86b4238bec 493
mbed_official 121:7f86b4238bec 494 /*!
mbed_official 121:7f86b4238bec 495 * @brief Gets the conversion value.
mbed_official 121:7f86b4238bec 496 *
mbed_official 121:7f86b4238bec 497 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 498 * @param channelGroup Channel group index.
mbed_official 121:7f86b4238bec 499 *
mbed_official 121:7f86b4238bec 500 * @return Conversion value.
mbed_official 121:7f86b4238bec 501 */
mbed_official 121:7f86b4238bec 502 static inline uint32_t ADC16_GetChannelConversionValue(ADC_Type *base, uint32_t channelGroup)
mbed_official 121:7f86b4238bec 503 {
mbed_official 121:7f86b4238bec 504 assert(channelGroup < ADC_R_COUNT);
mbed_official 121:7f86b4238bec 505
mbed_official 121:7f86b4238bec 506 return base->R[channelGroup];
mbed_official 121:7f86b4238bec 507 }
mbed_official 121:7f86b4238bec 508
mbed_official 121:7f86b4238bec 509 /*!
mbed_official 121:7f86b4238bec 510 * @brief Gets the status flags of channel.
mbed_official 121:7f86b4238bec 511 *
mbed_official 121:7f86b4238bec 512 * @param base ADC16 peripheral base address.
mbed_official 121:7f86b4238bec 513 * @param channelGroup Channel group index.
mbed_official 121:7f86b4238bec 514 *
mbed_official 121:7f86b4238bec 515 * @return Flags' mask if indicated flags are asserted. See "_adc16_channel_status_flags".
mbed_official 121:7f86b4238bec 516 */
mbed_official 121:7f86b4238bec 517 uint32_t ADC16_GetChannelStatusFlags(ADC_Type *base, uint32_t channelGroup);
mbed_official 121:7f86b4238bec 518
mbed_official 121:7f86b4238bec 519 /* @} */
mbed_official 121:7f86b4238bec 520
mbed_official 121:7f86b4238bec 521 #if defined(__cplusplus)
mbed_official 121:7f86b4238bec 522 }
mbed_official 121:7f86b4238bec 523 #endif
mbed_official 121:7f86b4238bec 524 /*!
mbed_official 121:7f86b4238bec 525 * @}
mbed_official 121:7f86b4238bec 526 */
mbed_official 121:7f86b4238bec 527 #endif /* _FSL_ADC16_H_ */