added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
JojoS
Date:
Sat Sep 10 15:32:04 2016 +0000
Revision:
147:ba84b7dc41a7
Parent:
144:ef7eb2e8f9f7
added prescaler for 16 bit timers (solution as in LPC11xx), default prescaler 31 for max 28 ms period time

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /*
<> 144:ef7eb2e8f9f7 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
<> 144:ef7eb2e8f9f7 3 * All rights reserved.
<> 144:ef7eb2e8f9f7 4 *
<> 144:ef7eb2e8f9f7 5 * Redistribution and use in source and binary forms, with or without modification,
<> 144:ef7eb2e8f9f7 6 * are permitted provided that the following conditions are met:
<> 144:ef7eb2e8f9f7 7 *
<> 144:ef7eb2e8f9f7 8 * o Redistributions of source code must retain the above copyright notice, this list
<> 144:ef7eb2e8f9f7 9 * of conditions and the following disclaimer.
<> 144:ef7eb2e8f9f7 10 *
<> 144:ef7eb2e8f9f7 11 * o Redistributions in binary form must reproduce the above copyright notice, this
<> 144:ef7eb2e8f9f7 12 * list of conditions and the following disclaimer in the documentation and/or
<> 144:ef7eb2e8f9f7 13 * other materials provided with the distribution.
<> 144:ef7eb2e8f9f7 14 *
<> 144:ef7eb2e8f9f7 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
<> 144:ef7eb2e8f9f7 16 * contributors may be used to endorse or promote products derived from this
<> 144:ef7eb2e8f9f7 17 * software without specific prior written permission.
<> 144:ef7eb2e8f9f7 18 *
<> 144:ef7eb2e8f9f7 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
<> 144:ef7eb2e8f9f7 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
<> 144:ef7eb2e8f9f7 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
<> 144:ef7eb2e8f9f7 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
<> 144:ef7eb2e8f9f7 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
<> 144:ef7eb2e8f9f7 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
<> 144:ef7eb2e8f9f7 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
<> 144:ef7eb2e8f9f7 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
<> 144:ef7eb2e8f9f7 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
<> 144:ef7eb2e8f9f7 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<> 144:ef7eb2e8f9f7 29 */
<> 144:ef7eb2e8f9f7 30 #ifndef _FSL_PMC_H_
<> 144:ef7eb2e8f9f7 31 #define _FSL_PMC_H_
<> 144:ef7eb2e8f9f7 32
<> 144:ef7eb2e8f9f7 33 #include "fsl_common.h"
<> 144:ef7eb2e8f9f7 34
<> 144:ef7eb2e8f9f7 35 /*! @addtogroup pmc */
<> 144:ef7eb2e8f9f7 36 /*! @{ */
<> 144:ef7eb2e8f9f7 37
<> 144:ef7eb2e8f9f7 38 /*! @file */
<> 144:ef7eb2e8f9f7 39
<> 144:ef7eb2e8f9f7 40 /*******************************************************************************
<> 144:ef7eb2e8f9f7 41 * Definitions
<> 144:ef7eb2e8f9f7 42 ******************************************************************************/
<> 144:ef7eb2e8f9f7 43
<> 144:ef7eb2e8f9f7 44 /*! @name Driver version */
<> 144:ef7eb2e8f9f7 45 /*@{*/
<> 144:ef7eb2e8f9f7 46 /*! @brief PMC driver version */
<> 144:ef7eb2e8f9f7 47 #define FSL_PMC_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */
<> 144:ef7eb2e8f9f7 48 /*@}*/
<> 144:ef7eb2e8f9f7 49
<> 144:ef7eb2e8f9f7 50 #if (defined(FSL_FEATURE_PMC_HAS_LVDV) && FSL_FEATURE_PMC_HAS_LVDV)
<> 144:ef7eb2e8f9f7 51 /*!
<> 144:ef7eb2e8f9f7 52 * @brief Low-Voltage Detect Voltage Select
<> 144:ef7eb2e8f9f7 53 */
<> 144:ef7eb2e8f9f7 54 typedef enum _pmc_low_volt_detect_volt_select
<> 144:ef7eb2e8f9f7 55 {
<> 144:ef7eb2e8f9f7 56 kPMC_LowVoltDetectLowTrip = 0U, /*!< Low trip point selected (VLVD = VLVDL )*/
<> 144:ef7eb2e8f9f7 57 kPMC_LowVoltDetectHighTrip = 1U /*!< High trip point selected (VLVD = VLVDH )*/
<> 144:ef7eb2e8f9f7 58 } pmc_low_volt_detect_volt_select_t;
<> 144:ef7eb2e8f9f7 59 #endif
<> 144:ef7eb2e8f9f7 60
<> 144:ef7eb2e8f9f7 61 #if (defined(FSL_FEATURE_PMC_HAS_LVWV) && FSL_FEATURE_PMC_HAS_LVWV)
<> 144:ef7eb2e8f9f7 62 /*!
<> 144:ef7eb2e8f9f7 63 * @brief Low-Voltage Warning Voltage Select
<> 144:ef7eb2e8f9f7 64 */
<> 144:ef7eb2e8f9f7 65 typedef enum _pmc_low_volt_warning_volt_select
<> 144:ef7eb2e8f9f7 66 {
<> 144:ef7eb2e8f9f7 67 kPMC_LowVoltWarningLowTrip = 0U, /*!< Low trip point selected (VLVW = VLVW1)*/
<> 144:ef7eb2e8f9f7 68 kPMC_LowVoltWarningMid1Trip = 1U, /*!< Mid 1 trip point selected (VLVW = VLVW2)*/
<> 144:ef7eb2e8f9f7 69 kPMC_LowVoltWarningMid2Trip = 2U, /*!< Mid 2 trip point selected (VLVW = VLVW3)*/
<> 144:ef7eb2e8f9f7 70 kPMC_LowVoltWarningHighTrip = 3U /*!< High trip point selected (VLVW = VLVW4)*/
<> 144:ef7eb2e8f9f7 71 } pmc_low_volt_warning_volt_select_t;
<> 144:ef7eb2e8f9f7 72 #endif
<> 144:ef7eb2e8f9f7 73
<> 144:ef7eb2e8f9f7 74 #if (defined(FSL_FEATURE_PMC_HAS_HVDSC1) && FSL_FEATURE_PMC_HAS_HVDSC1)
<> 144:ef7eb2e8f9f7 75 /*!
<> 144:ef7eb2e8f9f7 76 * @brief High-Voltage Detect Voltage Select
<> 144:ef7eb2e8f9f7 77 */
<> 144:ef7eb2e8f9f7 78 typedef enum _pmc_high_volt_detect_volt_select
<> 144:ef7eb2e8f9f7 79 {
<> 144:ef7eb2e8f9f7 80 kPMC_HighVoltDetectLowTrip = 0U, /*!< Low trip point selected (VHVD = VHVDL )*/
<> 144:ef7eb2e8f9f7 81 kPMC_HighVoltDetectHighTrip = 1U /*!< High trip point selected (VHVD = VHVDH )*/
<> 144:ef7eb2e8f9f7 82 } pmc_high_volt_detect_volt_select_t;
<> 144:ef7eb2e8f9f7 83 #endif /* FSL_FEATURE_PMC_HAS_HVDSC1 */
<> 144:ef7eb2e8f9f7 84
<> 144:ef7eb2e8f9f7 85 #if (defined(FSL_FEATURE_PMC_HAS_BGBDS) && FSL_FEATURE_PMC_HAS_BGBDS)
<> 144:ef7eb2e8f9f7 86 /*!
<> 144:ef7eb2e8f9f7 87 * @brief Bandgap Buffer Drive Select.
<> 144:ef7eb2e8f9f7 88 */
<> 144:ef7eb2e8f9f7 89 typedef enum _pmc_bandgap_buffer_drive_select
<> 144:ef7eb2e8f9f7 90 {
<> 144:ef7eb2e8f9f7 91 kPMC_BandgapBufferDriveLow = 0U, /*!< Low drive. */
<> 144:ef7eb2e8f9f7 92 kPMC_BandgapBufferDriveHigh = 1U /*!< High drive. */
<> 144:ef7eb2e8f9f7 93 } pmc_bandgap_buffer_drive_select_t;
<> 144:ef7eb2e8f9f7 94 #endif /* FSL_FEATURE_PMC_HAS_BGBDS */
<> 144:ef7eb2e8f9f7 95
<> 144:ef7eb2e8f9f7 96 #if (defined(FSL_FEATURE_PMC_HAS_VLPO) && FSL_FEATURE_PMC_HAS_VLPO)
<> 144:ef7eb2e8f9f7 97 /*!
<> 144:ef7eb2e8f9f7 98 * @brief VLPx Option
<> 144:ef7eb2e8f9f7 99 */
<> 144:ef7eb2e8f9f7 100 typedef enum _pmc_vlp_freq_option
<> 144:ef7eb2e8f9f7 101 {
<> 144:ef7eb2e8f9f7 102 kPMC_FreqRestrict = 0U, /*!< Frequency is restricted in VLPx mode. */
<> 144:ef7eb2e8f9f7 103 kPMC_FreqUnrestrict = 1U /*!< Frequency is unrestricted in VLPx mode. */
<> 144:ef7eb2e8f9f7 104 } pmc_vlp_freq_mode_t;
<> 144:ef7eb2e8f9f7 105 #endif /* FSL_FEATURE_PMC_HAS_VLPO */
<> 144:ef7eb2e8f9f7 106
<> 144:ef7eb2e8f9f7 107 #if (defined(FSL_FEATURE_PMC_HAS_VERID) && FSL_FEATURE_PMC_HAS_VERID)
<> 144:ef7eb2e8f9f7 108 /*!
<> 144:ef7eb2e8f9f7 109 @brief IP version ID definition.
<> 144:ef7eb2e8f9f7 110 */
<> 144:ef7eb2e8f9f7 111 typedef struct _pmc_version_id
<> 144:ef7eb2e8f9f7 112 {
<> 144:ef7eb2e8f9f7 113 uint16_t feature; /*!< Feature Specification Number. */
<> 144:ef7eb2e8f9f7 114 uint8_t minor; /*!< Minor version number. */
<> 144:ef7eb2e8f9f7 115 uint8_t major; /*!< Major version number. */
<> 144:ef7eb2e8f9f7 116 } pmc_version_id_t;
<> 144:ef7eb2e8f9f7 117 #endif /* FSL_FEATURE_PMC_HAS_VERID */
<> 144:ef7eb2e8f9f7 118
<> 144:ef7eb2e8f9f7 119 #if (defined(FSL_FEATURE_PMC_HAS_PARAM) && FSL_FEATURE_PMC_HAS_PARAM)
<> 144:ef7eb2e8f9f7 120 /*! @brief IP parameter definition. */
<> 144:ef7eb2e8f9f7 121 typedef struct _pmc_param
<> 144:ef7eb2e8f9f7 122 {
<> 144:ef7eb2e8f9f7 123 bool vlpoEnable; /*!< VLPO enable. */
<> 144:ef7eb2e8f9f7 124 bool hvdEnable; /*!< HVD enable. */
<> 144:ef7eb2e8f9f7 125 } pmc_param_t;
<> 144:ef7eb2e8f9f7 126 #endif /* FSL_FEATURE_PMC_HAS_PARAM */
<> 144:ef7eb2e8f9f7 127
<> 144:ef7eb2e8f9f7 128 /*!
<> 144:ef7eb2e8f9f7 129 * @brief Low-Voltage Detect Configuration Structure
<> 144:ef7eb2e8f9f7 130 */
<> 144:ef7eb2e8f9f7 131 typedef struct _pmc_low_volt_detect_config
<> 144:ef7eb2e8f9f7 132 {
<> 144:ef7eb2e8f9f7 133 bool enableInt; /*!< Enable interrupt when low voltage detect*/
<> 144:ef7eb2e8f9f7 134 bool enableReset; /*!< Enable system reset when low voltage detect*/
<> 144:ef7eb2e8f9f7 135 #if (defined(FSL_FEATURE_PMC_HAS_LVDV) && FSL_FEATURE_PMC_HAS_LVDV)
<> 144:ef7eb2e8f9f7 136 pmc_low_volt_detect_volt_select_t voltSelect; /*!< Low voltage detect trip point voltage selection*/
<> 144:ef7eb2e8f9f7 137 #endif
<> 144:ef7eb2e8f9f7 138 } pmc_low_volt_detect_config_t;
<> 144:ef7eb2e8f9f7 139
<> 144:ef7eb2e8f9f7 140 /*!
<> 144:ef7eb2e8f9f7 141 * @brief Low-Voltage Warning Configuration Structure
<> 144:ef7eb2e8f9f7 142 */
<> 144:ef7eb2e8f9f7 143 typedef struct _pmc_low_volt_warning_config
<> 144:ef7eb2e8f9f7 144 {
<> 144:ef7eb2e8f9f7 145 bool enableInt; /*!< Enable interrupt when low voltage warning*/
<> 144:ef7eb2e8f9f7 146 #if (defined(FSL_FEATURE_PMC_HAS_LVWV) && FSL_FEATURE_PMC_HAS_LVWV)
<> 144:ef7eb2e8f9f7 147 pmc_low_volt_warning_volt_select_t voltSelect; /*!< Low voltage warning trip point voltage selection*/
<> 144:ef7eb2e8f9f7 148 #endif
<> 144:ef7eb2e8f9f7 149 } pmc_low_volt_warning_config_t;
<> 144:ef7eb2e8f9f7 150
<> 144:ef7eb2e8f9f7 151 #if (defined(FSL_FEATURE_PMC_HAS_HVDSC1) && FSL_FEATURE_PMC_HAS_HVDSC1)
<> 144:ef7eb2e8f9f7 152 /*!
<> 144:ef7eb2e8f9f7 153 * @brief High-Voltage Detect Configuration Structure
<> 144:ef7eb2e8f9f7 154 */
<> 144:ef7eb2e8f9f7 155 typedef struct _pmc_high_volt_detect_config
<> 144:ef7eb2e8f9f7 156 {
<> 144:ef7eb2e8f9f7 157 bool enableInt; /*!< Enable interrupt when high voltage detect*/
<> 144:ef7eb2e8f9f7 158 bool enableReset; /*!< Enable system reset when high voltage detect*/
<> 144:ef7eb2e8f9f7 159 pmc_high_volt_detect_volt_select_t voltSelect; /*!< High voltage detect trip point voltage selection*/
<> 144:ef7eb2e8f9f7 160 } pmc_high_volt_detect_config_t;
<> 144:ef7eb2e8f9f7 161 #endif /* FSL_FEATURE_PMC_HAS_HVDSC1 */
<> 144:ef7eb2e8f9f7 162
<> 144:ef7eb2e8f9f7 163 #if ((defined(FSL_FEATURE_PMC_HAS_BGBE) && FSL_FEATURE_PMC_HAS_BGBE) || \
<> 144:ef7eb2e8f9f7 164 (defined(FSL_FEATURE_PMC_HAS_BGEN) && FSL_FEATURE_PMC_HAS_BGEN) || \
<> 144:ef7eb2e8f9f7 165 (defined(FSL_FEATURE_PMC_HAS_BGBDS) && FSL_FEATURE_PMC_HAS_BGBDS))
<> 144:ef7eb2e8f9f7 166 /*!
<> 144:ef7eb2e8f9f7 167 * @brief Bandgap Buffer configuration.
<> 144:ef7eb2e8f9f7 168 */
<> 144:ef7eb2e8f9f7 169 typedef struct _pmc_bandgap_buffer_config
<> 144:ef7eb2e8f9f7 170 {
<> 144:ef7eb2e8f9f7 171 #if (defined(FSL_FEATURE_PMC_HAS_BGBE) && FSL_FEATURE_PMC_HAS_BGBE)
<> 144:ef7eb2e8f9f7 172 bool enable; /*!< Enable bandgap buffer. */
<> 144:ef7eb2e8f9f7 173 #endif
<> 144:ef7eb2e8f9f7 174 #if (defined(FSL_FEATURE_PMC_HAS_BGEN) && FSL_FEATURE_PMC_HAS_BGEN)
<> 144:ef7eb2e8f9f7 175 bool enableInLowPowerMode; /*!< Enable bandgap buffer in low power mode. */
<> 144:ef7eb2e8f9f7 176 #endif /* FSL_FEATURE_PMC_HAS_BGEN */
<> 144:ef7eb2e8f9f7 177 #if (defined(FSL_FEATURE_PMC_HAS_BGBDS) && FSL_FEATURE_PMC_HAS_BGBDS)
<> 144:ef7eb2e8f9f7 178 pmc_bandgap_buffer_drive_select_t drive; /*!< Bandgap buffer drive select. */
<> 144:ef7eb2e8f9f7 179 #endif /* FSL_FEATURE_PMC_HAS_BGBDS */
<> 144:ef7eb2e8f9f7 180 } pmc_bandgap_buffer_config_t;
<> 144:ef7eb2e8f9f7 181 #endif
<> 144:ef7eb2e8f9f7 182
<> 144:ef7eb2e8f9f7 183 /*******************************************************************************
<> 144:ef7eb2e8f9f7 184 * API
<> 144:ef7eb2e8f9f7 185 ******************************************************************************/
<> 144:ef7eb2e8f9f7 186
<> 144:ef7eb2e8f9f7 187 #if defined(__cplusplus)
<> 144:ef7eb2e8f9f7 188 extern "C" {
<> 144:ef7eb2e8f9f7 189 #endif /* __cplusplus*/
<> 144:ef7eb2e8f9f7 190
<> 144:ef7eb2e8f9f7 191 /*! @name Power Management Controller Control APIs*/
<> 144:ef7eb2e8f9f7 192 /*@{*/
<> 144:ef7eb2e8f9f7 193
<> 144:ef7eb2e8f9f7 194 #if (defined(FSL_FEATURE_PMC_HAS_VERID) && FSL_FEATURE_PMC_HAS_VERID)
<> 144:ef7eb2e8f9f7 195 /*!
<> 144:ef7eb2e8f9f7 196 * @brief Gets the PMC version ID.
<> 144:ef7eb2e8f9f7 197 *
<> 144:ef7eb2e8f9f7 198 * This function gets the PMC version ID, including major version number,
<> 144:ef7eb2e8f9f7 199 * minor version number and feature specification number.
<> 144:ef7eb2e8f9f7 200 *
<> 144:ef7eb2e8f9f7 201 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 202 * @param versionId Pointer to version ID structure.
<> 144:ef7eb2e8f9f7 203 */
<> 144:ef7eb2e8f9f7 204 static inline void PMC_GetVersionId(PMC_Type *base, pmc_version_id_t *versionId)
<> 144:ef7eb2e8f9f7 205 {
<> 144:ef7eb2e8f9f7 206 *((uint32_t *)versionId) = base->VERID;
<> 144:ef7eb2e8f9f7 207 }
<> 144:ef7eb2e8f9f7 208 #endif /* FSL_FEATURE_PMC_HAS_VERID */
<> 144:ef7eb2e8f9f7 209
<> 144:ef7eb2e8f9f7 210 #if (defined(FSL_FEATURE_PMC_HAS_PARAM) && FSL_FEATURE_PMC_HAS_PARAM)
<> 144:ef7eb2e8f9f7 211 /*!
<> 144:ef7eb2e8f9f7 212 * @brief Gets the PMC parameter.
<> 144:ef7eb2e8f9f7 213 *
<> 144:ef7eb2e8f9f7 214 * This function gets the PMC parameter, including VLPO enable and HVD enable.
<> 144:ef7eb2e8f9f7 215 *
<> 144:ef7eb2e8f9f7 216 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 217 * @param param Pointer to PMC param structure.
<> 144:ef7eb2e8f9f7 218 */
<> 144:ef7eb2e8f9f7 219 void PMC_GetParam(PMC_Type *base, pmc_param_t *param);
<> 144:ef7eb2e8f9f7 220 #endif
<> 144:ef7eb2e8f9f7 221
<> 144:ef7eb2e8f9f7 222 /*!
<> 144:ef7eb2e8f9f7 223 * @brief Configure the low voltage detect setting.
<> 144:ef7eb2e8f9f7 224 *
<> 144:ef7eb2e8f9f7 225 * This function configures the low voltage detect setting, including the trip
<> 144:ef7eb2e8f9f7 226 * point voltage setting, enable interrupt or not, enable system reset or not.
<> 144:ef7eb2e8f9f7 227 *
<> 144:ef7eb2e8f9f7 228 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 229 * @param config Low-Voltage detect configuration structure.
<> 144:ef7eb2e8f9f7 230 */
<> 144:ef7eb2e8f9f7 231 void PMC_ConfigureLowVoltDetect(PMC_Type *base, const pmc_low_volt_detect_config_t *config);
<> 144:ef7eb2e8f9f7 232
<> 144:ef7eb2e8f9f7 233 /*!
<> 144:ef7eb2e8f9f7 234 * @brief Get Low-Voltage Detect Flag status
<> 144:ef7eb2e8f9f7 235 *
<> 144:ef7eb2e8f9f7 236 * This function reads the current LVDF status. If it returns 1, a low
<> 144:ef7eb2e8f9f7 237 * voltage event is detected.
<> 144:ef7eb2e8f9f7 238 *
<> 144:ef7eb2e8f9f7 239 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 240 * @return Current low voltage detect flag
<> 144:ef7eb2e8f9f7 241 * - true: Low-Voltage detected
<> 144:ef7eb2e8f9f7 242 * - false: Low-Voltage not detected
<> 144:ef7eb2e8f9f7 243 */
<> 144:ef7eb2e8f9f7 244 static inline bool PMC_GetLowVoltDetectFlag(PMC_Type *base)
<> 144:ef7eb2e8f9f7 245 {
<> 144:ef7eb2e8f9f7 246 return (bool)(base->LVDSC1 & PMC_LVDSC1_LVDF_MASK);
<> 144:ef7eb2e8f9f7 247 }
<> 144:ef7eb2e8f9f7 248
<> 144:ef7eb2e8f9f7 249 /*!
<> 144:ef7eb2e8f9f7 250 * @brief Acknowledge to clear the Low-Voltage Detect flag
<> 144:ef7eb2e8f9f7 251 *
<> 144:ef7eb2e8f9f7 252 * This function acknowledges the low voltage detection errors (write 1 to
<> 144:ef7eb2e8f9f7 253 * clear LVDF).
<> 144:ef7eb2e8f9f7 254 *
<> 144:ef7eb2e8f9f7 255 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 256 */
<> 144:ef7eb2e8f9f7 257 static inline void PMC_ClearLowVoltDetectFlag(PMC_Type *base)
<> 144:ef7eb2e8f9f7 258 {
<> 144:ef7eb2e8f9f7 259 base->LVDSC1 |= PMC_LVDSC1_LVDACK_MASK;
<> 144:ef7eb2e8f9f7 260 }
<> 144:ef7eb2e8f9f7 261
<> 144:ef7eb2e8f9f7 262 /*!
<> 144:ef7eb2e8f9f7 263 * @brief Configure the low voltage warning setting.
<> 144:ef7eb2e8f9f7 264 *
<> 144:ef7eb2e8f9f7 265 * This function configures the low voltage warning setting, including the trip
<> 144:ef7eb2e8f9f7 266 * point voltage setting and enable interrupt or not.
<> 144:ef7eb2e8f9f7 267 *
<> 144:ef7eb2e8f9f7 268 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 269 * @param config Low-Voltage warning configuration structure.
<> 144:ef7eb2e8f9f7 270 */
<> 144:ef7eb2e8f9f7 271 void PMC_ConfigureLowVoltWarning(PMC_Type *base, const pmc_low_volt_warning_config_t *config);
<> 144:ef7eb2e8f9f7 272
<> 144:ef7eb2e8f9f7 273 /*!
<> 144:ef7eb2e8f9f7 274 * @brief Get Low-Voltage Warning Flag status
<> 144:ef7eb2e8f9f7 275 *
<> 144:ef7eb2e8f9f7 276 * This function polls the current LVWF status. When 1 is returned, it
<> 144:ef7eb2e8f9f7 277 * indicates a low-voltage warning event. LVWF is set when V Supply transitions
<> 144:ef7eb2e8f9f7 278 * below the trip point or after reset and V Supply is already below the V LVW.
<> 144:ef7eb2e8f9f7 279 *
<> 144:ef7eb2e8f9f7 280 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 281 * @return Current LVWF status
<> 144:ef7eb2e8f9f7 282 * - true: Low-Voltage Warning Flag is set.
<> 144:ef7eb2e8f9f7 283 * - false: the Low-Voltage Warning does not happen.
<> 144:ef7eb2e8f9f7 284 */
<> 144:ef7eb2e8f9f7 285 static inline bool PMC_GetLowVoltWarningFlag(PMC_Type *base)
<> 144:ef7eb2e8f9f7 286 {
<> 144:ef7eb2e8f9f7 287 return (bool)(base->LVDSC2 & PMC_LVDSC2_LVWF_MASK);
<> 144:ef7eb2e8f9f7 288 }
<> 144:ef7eb2e8f9f7 289
<> 144:ef7eb2e8f9f7 290 /*!
<> 144:ef7eb2e8f9f7 291 * @brief Acknowledge to Low-Voltage Warning flag
<> 144:ef7eb2e8f9f7 292 *
<> 144:ef7eb2e8f9f7 293 * This function acknowledges the low voltage warning errors (write 1 to
<> 144:ef7eb2e8f9f7 294 * clear LVWF).
<> 144:ef7eb2e8f9f7 295 *
<> 144:ef7eb2e8f9f7 296 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 297 */
<> 144:ef7eb2e8f9f7 298 static inline void PMC_ClearLowVoltWarningFlag(PMC_Type *base)
<> 144:ef7eb2e8f9f7 299 {
<> 144:ef7eb2e8f9f7 300 base->LVDSC2 |= PMC_LVDSC2_LVWACK_MASK;
<> 144:ef7eb2e8f9f7 301 }
<> 144:ef7eb2e8f9f7 302
<> 144:ef7eb2e8f9f7 303 #if (defined(FSL_FEATURE_PMC_HAS_HVDSC1) && FSL_FEATURE_PMC_HAS_HVDSC1)
<> 144:ef7eb2e8f9f7 304 /*!
<> 144:ef7eb2e8f9f7 305 * @brief Configure the high voltage detect setting.
<> 144:ef7eb2e8f9f7 306 *
<> 144:ef7eb2e8f9f7 307 * This function configures the high voltage detect setting, including the trip
<> 144:ef7eb2e8f9f7 308 * point voltage setting, enable interrupt or not, enable system reset or not.
<> 144:ef7eb2e8f9f7 309 *
<> 144:ef7eb2e8f9f7 310 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 311 * @param config High-Voltage detect configuration structure.
<> 144:ef7eb2e8f9f7 312 */
<> 144:ef7eb2e8f9f7 313 void PMC_ConfigureHighVoltDetect(PMC_Type *base, const pmc_high_volt_detect_config_t *config);
<> 144:ef7eb2e8f9f7 314
<> 144:ef7eb2e8f9f7 315 /*!
<> 144:ef7eb2e8f9f7 316 * @brief Get High-Voltage Detect Flag status
<> 144:ef7eb2e8f9f7 317 *
<> 144:ef7eb2e8f9f7 318 * This function reads the current HVDF status. If it returns 1, a low
<> 144:ef7eb2e8f9f7 319 * voltage event is detected.
<> 144:ef7eb2e8f9f7 320 *
<> 144:ef7eb2e8f9f7 321 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 322 * @return Current high voltage detect flag
<> 144:ef7eb2e8f9f7 323 * - true: High-Voltage detected
<> 144:ef7eb2e8f9f7 324 * - false: High-Voltage not detected
<> 144:ef7eb2e8f9f7 325 */
<> 144:ef7eb2e8f9f7 326 static inline bool PMC_GetHighVoltDetectFlag(PMC_Type *base)
<> 144:ef7eb2e8f9f7 327 {
<> 144:ef7eb2e8f9f7 328 return (bool)(base->HVDSC1 & PMC_HVDSC1_HVDF_MASK);
<> 144:ef7eb2e8f9f7 329 }
<> 144:ef7eb2e8f9f7 330
<> 144:ef7eb2e8f9f7 331 /*!
<> 144:ef7eb2e8f9f7 332 * @brief Acknowledge to clear the High-Voltage Detect flag
<> 144:ef7eb2e8f9f7 333 *
<> 144:ef7eb2e8f9f7 334 * This function acknowledges the high voltage detection errors (write 1 to
<> 144:ef7eb2e8f9f7 335 * clear HVDF).
<> 144:ef7eb2e8f9f7 336 *
<> 144:ef7eb2e8f9f7 337 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 338 */
<> 144:ef7eb2e8f9f7 339 static inline void PMC_ClearHighVoltDetectFlag(PMC_Type *base)
<> 144:ef7eb2e8f9f7 340 {
<> 144:ef7eb2e8f9f7 341 base->HVDSC1 |= PMC_HVDSC1_HVDACK_MASK;
<> 144:ef7eb2e8f9f7 342 }
<> 144:ef7eb2e8f9f7 343 #endif /* FSL_FEATURE_PMC_HAS_HVDSC1 */
<> 144:ef7eb2e8f9f7 344
<> 144:ef7eb2e8f9f7 345 #if ((defined(FSL_FEATURE_PMC_HAS_BGBE) && FSL_FEATURE_PMC_HAS_BGBE) || \
<> 144:ef7eb2e8f9f7 346 (defined(FSL_FEATURE_PMC_HAS_BGEN) && FSL_FEATURE_PMC_HAS_BGEN) || \
<> 144:ef7eb2e8f9f7 347 (defined(FSL_FEATURE_PMC_HAS_BGBDS) && FSL_FEATURE_PMC_HAS_BGBDS))
<> 144:ef7eb2e8f9f7 348 /*!
<> 144:ef7eb2e8f9f7 349 * @brief Configure the PMC bandgap
<> 144:ef7eb2e8f9f7 350 *
<> 144:ef7eb2e8f9f7 351 * This function configures the PMC bandgap, including the drive select and
<> 144:ef7eb2e8f9f7 352 * behavior in low power mode.
<> 144:ef7eb2e8f9f7 353 *
<> 144:ef7eb2e8f9f7 354 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 355 * @param config Pointer to the configuration structure
<> 144:ef7eb2e8f9f7 356 */
<> 144:ef7eb2e8f9f7 357 void PMC_ConfigureBandgapBuffer(PMC_Type *base, const pmc_bandgap_buffer_config_t *config);
<> 144:ef7eb2e8f9f7 358 #endif
<> 144:ef7eb2e8f9f7 359
<> 144:ef7eb2e8f9f7 360 #if (defined(FSL_FEATURE_PMC_HAS_ACKISO) && FSL_FEATURE_PMC_HAS_ACKISO)
<> 144:ef7eb2e8f9f7 361 /*!
<> 144:ef7eb2e8f9f7 362 * @brief Gets the acknowledge Peripherals and I/O pads isolation flag.
<> 144:ef7eb2e8f9f7 363 *
<> 144:ef7eb2e8f9f7 364 * This function reads the Acknowledge Isolation setting that indicates
<> 144:ef7eb2e8f9f7 365 * whether certain peripherals and the I/O pads are in a latched state as
<> 144:ef7eb2e8f9f7 366 * a result of having been in the VLLS mode.
<> 144:ef7eb2e8f9f7 367 *
<> 144:ef7eb2e8f9f7 368 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 369 * @param base Base address for current PMC instance.
<> 144:ef7eb2e8f9f7 370 * @return ACK isolation
<> 144:ef7eb2e8f9f7 371 * 0 - Peripherals and I/O pads are in a normal run state.
<> 144:ef7eb2e8f9f7 372 * 1 - Certain peripherals and I/O pads are in an isolated and
<> 144:ef7eb2e8f9f7 373 * latched state.
<> 144:ef7eb2e8f9f7 374 */
<> 144:ef7eb2e8f9f7 375 static inline bool PMC_GetPeriphIOIsolationFlag(PMC_Type *base)
<> 144:ef7eb2e8f9f7 376 {
<> 144:ef7eb2e8f9f7 377 return (bool)(base->REGSC & PMC_REGSC_ACKISO_MASK);
<> 144:ef7eb2e8f9f7 378 }
<> 144:ef7eb2e8f9f7 379
<> 144:ef7eb2e8f9f7 380 /*!
<> 144:ef7eb2e8f9f7 381 * @brief Acknowledge to Peripherals and I/O pads isolation flag.
<> 144:ef7eb2e8f9f7 382 *
<> 144:ef7eb2e8f9f7 383 * This function clears the ACK Isolation flag. Writing one to this setting
<> 144:ef7eb2e8f9f7 384 * when it is set releases the I/O pads and certain peripherals to their normal
<> 144:ef7eb2e8f9f7 385 * run mode state.
<> 144:ef7eb2e8f9f7 386 *
<> 144:ef7eb2e8f9f7 387 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 388 */
<> 144:ef7eb2e8f9f7 389 static inline void PMC_ClearPeriphIOIsolationFlag(PMC_Type *base)
<> 144:ef7eb2e8f9f7 390 {
<> 144:ef7eb2e8f9f7 391 base->REGSC |= PMC_REGSC_ACKISO_MASK;
<> 144:ef7eb2e8f9f7 392 }
<> 144:ef7eb2e8f9f7 393 #endif /* FSL_FEATURE_PMC_HAS_ACKISO */
<> 144:ef7eb2e8f9f7 394
<> 144:ef7eb2e8f9f7 395 #if (defined(FSL_FEATURE_PMC_HAS_REGONS) && FSL_FEATURE_PMC_HAS_REGONS)
<> 144:ef7eb2e8f9f7 396 /*!
<> 144:ef7eb2e8f9f7 397 * @brief Gets the Regulator regulation status.
<> 144:ef7eb2e8f9f7 398 *
<> 144:ef7eb2e8f9f7 399 * This function returns the regulator to a run regulation status. It provides
<> 144:ef7eb2e8f9f7 400 * the current status of the internal voltage regulator.
<> 144:ef7eb2e8f9f7 401 *
<> 144:ef7eb2e8f9f7 402 * @param base PMC peripheral base address.
<> 144:ef7eb2e8f9f7 403 * @param base Base address for current PMC instance.
<> 144:ef7eb2e8f9f7 404 * @return Regulation status
<> 144:ef7eb2e8f9f7 405 * 0 - Regulator is in a stop regulation or in transition to/from the regulation.
<> 144:ef7eb2e8f9f7 406 * 1 - Regulator is in a run regulation.
<> 144:ef7eb2e8f9f7 407 *
<> 144:ef7eb2e8f9f7 408 */
<> 144:ef7eb2e8f9f7 409 static inline bool PMC_IsRegulatorInRunRegulation(PMC_Type *base)
<> 144:ef7eb2e8f9f7 410 {
<> 144:ef7eb2e8f9f7 411 return (bool)(base->REGSC & PMC_REGSC_REGONS_MASK);
<> 144:ef7eb2e8f9f7 412 }
<> 144:ef7eb2e8f9f7 413 #endif /* FSL_FEATURE_PMC_HAS_REGONS */
<> 144:ef7eb2e8f9f7 414
<> 144:ef7eb2e8f9f7 415 /*@}*/
<> 144:ef7eb2e8f9f7 416
<> 144:ef7eb2e8f9f7 417 #if defined(__cplusplus)
<> 144:ef7eb2e8f9f7 418 }
<> 144:ef7eb2e8f9f7 419 #endif /* __cplusplus*/
<> 144:ef7eb2e8f9f7 420
<> 144:ef7eb2e8f9f7 421 /*! @}*/
<> 144:ef7eb2e8f9f7 422
<> 144:ef7eb2e8f9f7 423 #endif /* _FSL_PMC_H_*/