added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Fri Sep 02 15:07:44 2016 +0100
Revision:
144:ef7eb2e8f9f7
This updates the lib to the mbed lib v125

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
<> 144:ef7eb2e8f9f7 31 #ifndef _FSL_VREF_H_
<> 144:ef7eb2e8f9f7 32 #define _FSL_VREF_H_
<> 144:ef7eb2e8f9f7 33
<> 144:ef7eb2e8f9f7 34 #include "fsl_common.h"
<> 144:ef7eb2e8f9f7 35
<> 144:ef7eb2e8f9f7 36 /*!
<> 144:ef7eb2e8f9f7 37 * @addtogroup vref
<> 144:ef7eb2e8f9f7 38 * @{
<> 144:ef7eb2e8f9f7 39 */
<> 144:ef7eb2e8f9f7 40
<> 144:ef7eb2e8f9f7 41 /*! @file */
<> 144:ef7eb2e8f9f7 42
<> 144:ef7eb2e8f9f7 43 /******************************************************************************
<> 144:ef7eb2e8f9f7 44 * Definitions
<> 144:ef7eb2e8f9f7 45 ******************************************************************************/
<> 144:ef7eb2e8f9f7 46
<> 144:ef7eb2e8f9f7 47 /*! @name Driver version */
<> 144:ef7eb2e8f9f7 48 /*@{*/
<> 144:ef7eb2e8f9f7 49 #define FSL_VREF_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */
<> 144:ef7eb2e8f9f7 50 /*@}*/
<> 144:ef7eb2e8f9f7 51
<> 144:ef7eb2e8f9f7 52 /* Those macros below defined to support SoC family which have VREFL (0.4V) reference */
<> 144:ef7eb2e8f9f7 53 #if defined(FSL_FEATURE_VREF_HAS_LOW_REFERENCE) && FSL_FEATURE_VREF_HAS_LOW_REFERENCE
<> 144:ef7eb2e8f9f7 54 #define SC VREFH_SC
<> 144:ef7eb2e8f9f7 55 #define VREF_SC_MODE_LV VREF_VREFH_SC_MODE_LV
<> 144:ef7eb2e8f9f7 56 #define VREF_SC_REGEN VREF_VREFH_SC_REGEN
<> 144:ef7eb2e8f9f7 57 #define VREF_SC_VREFEN VREF_VREFH_SC_VREFEN
<> 144:ef7eb2e8f9f7 58 #define VREF_SC_ICOMPEN VREF_VREFH_SC_ICOMPEN
<> 144:ef7eb2e8f9f7 59 #define VREF_SC_REGEN_MASK VREF_VREFH_SC_REGEN_MASK
<> 144:ef7eb2e8f9f7 60 #define VREF_SC_VREFST_MASK VREF_VREFH_SC_VREFST_MASK
<> 144:ef7eb2e8f9f7 61 #define VREF_SC_VREFEN_MASK VREF_VREFH_SC_VREFEN_MASK
<> 144:ef7eb2e8f9f7 62 #define VREF_SC_MODE_LV_MASK VREF_VREFH_SC_MODE_LV_MASK
<> 144:ef7eb2e8f9f7 63 #define VREF_SC_ICOMPEN_MASK VREF_VREFH_SC_ICOMPEN_MASK
<> 144:ef7eb2e8f9f7 64 #define TRM VREFH_TRM
<> 144:ef7eb2e8f9f7 65 #define VREF_TRM_TRIM VREF_VREFH_TRM_TRIM
<> 144:ef7eb2e8f9f7 66 #define VREF_TRM_CHOPEN_MASK VREF_VREFH_TRM_CHOPEN_MASK
<> 144:ef7eb2e8f9f7 67 #define VREF_TRM_TRIM_MASK VREF_VREFH_TRM_TRIM_MASK
<> 144:ef7eb2e8f9f7 68 #define VREF_TRM_CHOPEN_SHIFT VREF_VREFH_TRM_CHOPEN_SHIFT
<> 144:ef7eb2e8f9f7 69 #define VREF_TRM_TRIM_SHIFT VREF_VREFH_TRM_TRIM_SHIFT
<> 144:ef7eb2e8f9f7 70 #define VREF_SC_MODE_LV_SHIFT VREF_VREFH_SC_MODE_LV_SHIFT
<> 144:ef7eb2e8f9f7 71 #define VREF_SC_REGEN_SHIFT VREF_VREFH_SC_REGEN_SHIFT
<> 144:ef7eb2e8f9f7 72 #define VREF_SC_VREFST_SHIFT VREF_VREFH_SC_VREFST_SHIFT
<> 144:ef7eb2e8f9f7 73 #define VREF_SC_ICOMPEN_SHIFT VREF_VREFH_SC_ICOMPEN_SHIFT
<> 144:ef7eb2e8f9f7 74 #endif /* FSL_FEATURE_VREF_HAS_LOW_REFERENCE */
<> 144:ef7eb2e8f9f7 75
<> 144:ef7eb2e8f9f7 76 /*!
<> 144:ef7eb2e8f9f7 77 * @brief VREF modes.
<> 144:ef7eb2e8f9f7 78 */
<> 144:ef7eb2e8f9f7 79 typedef enum _vref_buffer_mode
<> 144:ef7eb2e8f9f7 80 {
<> 144:ef7eb2e8f9f7 81 kVREF_ModeBandgapOnly = 0U, /*!< Bandgap on only, for stabilization and startup */
<> 144:ef7eb2e8f9f7 82 #if defined(FSL_FEATURE_VREF_MODE_LV_TYPE) && FSL_FEATURE_VREF_MODE_LV_TYPE
<> 144:ef7eb2e8f9f7 83 kVREF_ModeHighPowerBuffer = 1U, /*!< High power buffer mode enabled */
<> 144:ef7eb2e8f9f7 84 kVREF_ModeLowPowerBuffer = 2U /*!< Low power buffer mode enabled */
<> 144:ef7eb2e8f9f7 85 #else
<> 144:ef7eb2e8f9f7 86 kVREF_ModeTightRegulationBuffer = 2U /*!< Tight regulation buffer enabled */
<> 144:ef7eb2e8f9f7 87 #endif /* FSL_FEATURE_VREF_MODE_LV_TYPE */
<> 144:ef7eb2e8f9f7 88 } vref_buffer_mode_t;
<> 144:ef7eb2e8f9f7 89
<> 144:ef7eb2e8f9f7 90 /*!
<> 144:ef7eb2e8f9f7 91 * @brief The description structure for the VREF module.
<> 144:ef7eb2e8f9f7 92 */
<> 144:ef7eb2e8f9f7 93 typedef struct _vref_config
<> 144:ef7eb2e8f9f7 94 {
<> 144:ef7eb2e8f9f7 95 vref_buffer_mode_t bufferMode; /*!< Buffer mode selection */
<> 144:ef7eb2e8f9f7 96 #if defined(FSL_FEATURE_VREF_HAS_LOW_REFERENCE) && FSL_FEATURE_VREF_HAS_LOW_REFERENCE
<> 144:ef7eb2e8f9f7 97 bool enableLowRef; /*!< Set VREFL (0.4 V) reference buffer enable or disable */
<> 144:ef7eb2e8f9f7 98 bool enableExternalVoltRef; /*!< Select external voltage reference or not (internal) */
<> 144:ef7eb2e8f9f7 99 #endif /* FSL_FEATURE_VREF_HAS_LOW_REFERENCE */
<> 144:ef7eb2e8f9f7 100 } vref_config_t;
<> 144:ef7eb2e8f9f7 101
<> 144:ef7eb2e8f9f7 102 /******************************************************************************
<> 144:ef7eb2e8f9f7 103 * API
<> 144:ef7eb2e8f9f7 104 ******************************************************************************/
<> 144:ef7eb2e8f9f7 105
<> 144:ef7eb2e8f9f7 106 #if defined(__cplusplus)
<> 144:ef7eb2e8f9f7 107 extern "C" {
<> 144:ef7eb2e8f9f7 108 #endif /* __cplusplus */
<> 144:ef7eb2e8f9f7 109
<> 144:ef7eb2e8f9f7 110 /*!
<> 144:ef7eb2e8f9f7 111 * @name VREF functional operation
<> 144:ef7eb2e8f9f7 112 * @{
<> 144:ef7eb2e8f9f7 113 */
<> 144:ef7eb2e8f9f7 114
<> 144:ef7eb2e8f9f7 115 /*!
<> 144:ef7eb2e8f9f7 116 * @brief Enables the clock gate and configures the VREF module according to the configuration structure.
<> 144:ef7eb2e8f9f7 117 *
<> 144:ef7eb2e8f9f7 118 * This function must be called before calling all the other VREF driver functions,
<> 144:ef7eb2e8f9f7 119 * read/write registers, and configurations with user-defined settings.
<> 144:ef7eb2e8f9f7 120 * The example below shows how to set up vref_config_t parameters and
<> 144:ef7eb2e8f9f7 121 * how to call the VREF_Init function by passing in these parameters:
<> 144:ef7eb2e8f9f7 122 * Example:
<> 144:ef7eb2e8f9f7 123 * @code
<> 144:ef7eb2e8f9f7 124 * vref_config_t vrefConfig;
<> 144:ef7eb2e8f9f7 125 * vrefConfig.bufferMode = kVREF_ModeHighPowerBuffer;
<> 144:ef7eb2e8f9f7 126 * vrefConfig.enableExternalVoltRef = false;
<> 144:ef7eb2e8f9f7 127 * vrefConfig.enableLowRef = false;
<> 144:ef7eb2e8f9f7 128 * VREF_Init(VREF, &vrefConfig);
<> 144:ef7eb2e8f9f7 129 * @endcode
<> 144:ef7eb2e8f9f7 130 *
<> 144:ef7eb2e8f9f7 131 * @param base VREF peripheral address.
<> 144:ef7eb2e8f9f7 132 * @param config Pointer to the configuration structure.
<> 144:ef7eb2e8f9f7 133 */
<> 144:ef7eb2e8f9f7 134 void VREF_Init(VREF_Type *base, const vref_config_t *config);
<> 144:ef7eb2e8f9f7 135
<> 144:ef7eb2e8f9f7 136 /*!
<> 144:ef7eb2e8f9f7 137 * @brief Stops and disables the clock for the VREF module.
<> 144:ef7eb2e8f9f7 138 *
<> 144:ef7eb2e8f9f7 139 * This function should be called to shut down the module.
<> 144:ef7eb2e8f9f7 140 * Example:
<> 144:ef7eb2e8f9f7 141 * @code
<> 144:ef7eb2e8f9f7 142 * vref_config_t vrefUserConfig;
<> 144:ef7eb2e8f9f7 143 * VREF_Init(VREF);
<> 144:ef7eb2e8f9f7 144 * VREF_GetDefaultConfig(&vrefUserConfig);
<> 144:ef7eb2e8f9f7 145 * ...
<> 144:ef7eb2e8f9f7 146 * VREF_Deinit(VREF);
<> 144:ef7eb2e8f9f7 147 * @endcode
<> 144:ef7eb2e8f9f7 148 *
<> 144:ef7eb2e8f9f7 149 * @param base VREF peripheral address.
<> 144:ef7eb2e8f9f7 150 */
<> 144:ef7eb2e8f9f7 151 void VREF_Deinit(VREF_Type *base);
<> 144:ef7eb2e8f9f7 152
<> 144:ef7eb2e8f9f7 153 /*!
<> 144:ef7eb2e8f9f7 154 * @brief Initializes the VREF configuration structure.
<> 144:ef7eb2e8f9f7 155 *
<> 144:ef7eb2e8f9f7 156 * This function initializes the VREF configuration structure to a default value.
<> 144:ef7eb2e8f9f7 157 * Example:
<> 144:ef7eb2e8f9f7 158 * @code
<> 144:ef7eb2e8f9f7 159 * vrefConfig->bufferMode = kVREF_ModeHighPowerBuffer;
<> 144:ef7eb2e8f9f7 160 * vrefConfig->enableExternalVoltRef = false;
<> 144:ef7eb2e8f9f7 161 * vrefConfig->enableLowRef = false;
<> 144:ef7eb2e8f9f7 162 * @endcode
<> 144:ef7eb2e8f9f7 163 *
<> 144:ef7eb2e8f9f7 164 * @param config Pointer to the initialization structure.
<> 144:ef7eb2e8f9f7 165 */
<> 144:ef7eb2e8f9f7 166 void VREF_GetDefaultConfig(vref_config_t *config);
<> 144:ef7eb2e8f9f7 167
<> 144:ef7eb2e8f9f7 168 /*!
<> 144:ef7eb2e8f9f7 169 * @brief Sets a TRIM value for reference voltage.
<> 144:ef7eb2e8f9f7 170 *
<> 144:ef7eb2e8f9f7 171 * This function sets a TRIM value for reference voltage.
<> 144:ef7eb2e8f9f7 172 * Note that the TRIM value maximum is 0x3F.
<> 144:ef7eb2e8f9f7 173 *
<> 144:ef7eb2e8f9f7 174 * @param base VREF peripheral address.
<> 144:ef7eb2e8f9f7 175 * @param trimValue Value of the trim register to set the output reference voltage (maximum 0x3F (6-bit)).
<> 144:ef7eb2e8f9f7 176 */
<> 144:ef7eb2e8f9f7 177 void VREF_SetTrimVal(VREF_Type *base, uint8_t trimValue);
<> 144:ef7eb2e8f9f7 178
<> 144:ef7eb2e8f9f7 179 /*!
<> 144:ef7eb2e8f9f7 180 * @brief Reads the value of the TRIM meaning output voltage.
<> 144:ef7eb2e8f9f7 181 *
<> 144:ef7eb2e8f9f7 182 * This function gets the TRIM value from the TRM register.
<> 144:ef7eb2e8f9f7 183 *
<> 144:ef7eb2e8f9f7 184 * @param base VREF peripheral address.
<> 144:ef7eb2e8f9f7 185 * @return Six-bit value of trim setting.
<> 144:ef7eb2e8f9f7 186 */
<> 144:ef7eb2e8f9f7 187 static inline uint8_t VREF_GetTrimVal(VREF_Type *base)
<> 144:ef7eb2e8f9f7 188 {
<> 144:ef7eb2e8f9f7 189 return (base->TRM & VREF_TRM_TRIM_MASK);
<> 144:ef7eb2e8f9f7 190 }
<> 144:ef7eb2e8f9f7 191 #if defined(FSL_FEATURE_VREF_HAS_LOW_REFERENCE) && FSL_FEATURE_VREF_HAS_LOW_REFERENCE
<> 144:ef7eb2e8f9f7 192
<> 144:ef7eb2e8f9f7 193 /*!
<> 144:ef7eb2e8f9f7 194 * @brief Sets the TRIM value for low voltage reference.
<> 144:ef7eb2e8f9f7 195 *
<> 144:ef7eb2e8f9f7 196 * This function sets the TRIM value for low reference voltage.
<> 144:ef7eb2e8f9f7 197 * NOTE:
<> 144:ef7eb2e8f9f7 198 * - The TRIM value maximum is 0x05U
<> 144:ef7eb2e8f9f7 199 * - The values 111b and 110b are not valid/allowed.
<> 144:ef7eb2e8f9f7 200 *
<> 144:ef7eb2e8f9f7 201 * @param base VREF peripheral address.
<> 144:ef7eb2e8f9f7 202 * @param trimValue Value of the trim register to set output low reference voltage (maximum 0x05U (3-bit)).
<> 144:ef7eb2e8f9f7 203 */
<> 144:ef7eb2e8f9f7 204 void VREF_SetLowReferenceTrimVal(VREF_Type *base, uint8_t trimValue);
<> 144:ef7eb2e8f9f7 205
<> 144:ef7eb2e8f9f7 206 /*!
<> 144:ef7eb2e8f9f7 207 * @brief Reads the value of the TRIM meaning output voltage.
<> 144:ef7eb2e8f9f7 208 *
<> 144:ef7eb2e8f9f7 209 * This function gets the TRIM value from the VREFL_TRM register.
<> 144:ef7eb2e8f9f7 210 *
<> 144:ef7eb2e8f9f7 211 * @param base VREF peripheral address.
<> 144:ef7eb2e8f9f7 212 * @return Three-bit value of the trim setting.
<> 144:ef7eb2e8f9f7 213 */
<> 144:ef7eb2e8f9f7 214 static inline uint8_t VREF_GetLowReferenceTrimVal(VREF_Type *base)
<> 144:ef7eb2e8f9f7 215 {
<> 144:ef7eb2e8f9f7 216 return (base->VREFL_TRM & VREF_VREFL_TRM_VREFL_TRIM_MASK);
<> 144:ef7eb2e8f9f7 217 }
<> 144:ef7eb2e8f9f7 218 #endif /* FSL_FEATURE_VREF_HAS_LOW_REFERENCE */
<> 144:ef7eb2e8f9f7 219
<> 144:ef7eb2e8f9f7 220 /*@}*/
<> 144:ef7eb2e8f9f7 221
<> 144:ef7eb2e8f9f7 222 #if defined(__cplusplus)
<> 144:ef7eb2e8f9f7 223 }
<> 144:ef7eb2e8f9f7 224 #endif /* __cplusplus */
<> 144:ef7eb2e8f9f7 225
<> 144:ef7eb2e8f9f7 226 /*! @}*/
<> 144:ef7eb2e8f9f7 227
<> 144:ef7eb2e8f9f7 228 #endif /* _FSL_VREF_H_ */