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:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 148:fd96258d940d 1 /*
Kojto 148:fd96258d940d 2 * Copyright (c) 2016, Freescale Semiconductor, Inc.
Kojto 148:fd96258d940d 3 * All rights reserved.
Kojto 148:fd96258d940d 4 *
Kojto 148:fd96258d940d 5 * Redistribution and use in source and binary forms, with or without modification,
Kojto 148:fd96258d940d 6 * are permitted provided that the following conditions are met:
Kojto 148:fd96258d940d 7 *
Kojto 148:fd96258d940d 8 * o Redistributions of source code must retain the above copyright notice, this list
Kojto 148:fd96258d940d 9 * of conditions and the following disclaimer.
Kojto 148:fd96258d940d 10 *
Kojto 148:fd96258d940d 11 * o Redistributions in binary form must reproduce the above copyright notice, this
Kojto 148:fd96258d940d 12 * list of conditions and the following disclaimer in the documentation and/or
Kojto 148:fd96258d940d 13 * other materials provided with the distribution.
Kojto 148:fd96258d940d 14 *
Kojto 148:fd96258d940d 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
Kojto 148:fd96258d940d 16 * contributors may be used to endorse or promote products derived from this
Kojto 148:fd96258d940d 17 * software without specific prior written permission.
Kojto 148:fd96258d940d 18 *
Kojto 148:fd96258d940d 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
Kojto 148:fd96258d940d 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
Kojto 148:fd96258d940d 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Kojto 148:fd96258d940d 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
Kojto 148:fd96258d940d 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
Kojto 148:fd96258d940d 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
Kojto 148:fd96258d940d 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
Kojto 148:fd96258d940d 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Kojto 148:fd96258d940d 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
Kojto 148:fd96258d940d 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Kojto 148:fd96258d940d 29 */
Kojto 148:fd96258d940d 30 #ifndef _FSL_POWER_H_
Kojto 148:fd96258d940d 31 #define _FSL_POWER_H_
Kojto 148:fd96258d940d 32
Kojto 148:fd96258d940d 33 #include "fsl_common.h"
Kojto 148:fd96258d940d 34
Kojto 148:fd96258d940d 35 /*! @addtogroup power */
Kojto 148:fd96258d940d 36 /*! @{ */
Kojto 148:fd96258d940d 37
Kojto 148:fd96258d940d 38 /*! @file */
Kojto 148:fd96258d940d 39
Kojto 148:fd96258d940d 40 /*******************************************************************************
Kojto 148:fd96258d940d 41 * Definitions
Kojto 148:fd96258d940d 42 ******************************************************************************/
Kojto 148:fd96258d940d 43
Kojto 148:fd96258d940d 44 #define MAKE_PD_BITS(reg, slot) ((reg << 8) | slot)
Kojto 148:fd96258d940d 45 #define PDRCFG0 0x0U
Kojto 148:fd96258d940d 46 #define PDRCFG1 0x1U
Kojto 148:fd96258d940d 47
Kojto 148:fd96258d940d 48 typedef enum pd_bits
Kojto 148:fd96258d940d 49 {
Kojto 148:fd96258d940d 50 kPDRUNCFG_PD_FRO_EN = MAKE_PD_BITS(PDRCFG0, 4U),
Kojto 148:fd96258d940d 51 kPDRUNCFG_PD_FLASH = MAKE_PD_BITS(PDRCFG0, 5U),
Kojto 148:fd96258d940d 52 kPDRUNCFG_PD_TEMPS = MAKE_PD_BITS(PDRCFG0, 6U),
Kojto 148:fd96258d940d 53 kPDRUNCFG_PD_BOD_RESET = MAKE_PD_BITS(PDRCFG0, 7U),
Kojto 148:fd96258d940d 54 kPDRUNCFG_PD_BOD_INTR = MAKE_PD_BITS(PDRCFG0, 8U),
Kojto 148:fd96258d940d 55 kPDRUNCFG_PD_ADC0 = MAKE_PD_BITS(PDRCFG0, 10U),
Kojto 148:fd96258d940d 56 kPDRUNCFG_PD_VDDFLASH = MAKE_PD_BITS(PDRCFG0, 11U),
Kojto 148:fd96258d940d 57 kPDRUNCFG_LP_VDDFLASH = MAKE_PD_BITS(PDRCFG0, 12U),
Kojto 148:fd96258d940d 58 kPDRUNCFG_PD_RAM0 = MAKE_PD_BITS(PDRCFG0, 13U),
Kojto 148:fd96258d940d 59 kPDRUNCFG_PD_RAM1 = MAKE_PD_BITS(PDRCFG0, 14U),
Kojto 148:fd96258d940d 60 kPDRUNCFG_PD_RAM2 = MAKE_PD_BITS(PDRCFG0, 15U),
Kojto 148:fd96258d940d 61 kPDRUNCFG_PD_RAMX = MAKE_PD_BITS(PDRCFG0, 16U),
Kojto 148:fd96258d940d 62 kPDRUNCFG_PD_ROM = MAKE_PD_BITS(PDRCFG0, 17U),
Kojto 148:fd96258d940d 63 kPDRUNCFG_PD_VDDHV_ENA = MAKE_PD_BITS(PDRCFG0, 18U),
Kojto 148:fd96258d940d 64 kPDRUNCFG_PD_VD7_ENA = MAKE_PD_BITS(PDRCFG0, 19U),
Kojto 148:fd96258d940d 65 kPDRUNCFG_PD_WDT_OSC = MAKE_PD_BITS(PDRCFG0, 20U),
Kojto 148:fd96258d940d 66 kPDRUNCFG_PD_USB0_PHY = MAKE_PD_BITS(PDRCFG0, 21U),
Kojto 148:fd96258d940d 67 kPDRUNCFG_PD_SYS_PLL0 = MAKE_PD_BITS(PDRCFG0, 22U),
Kojto 148:fd96258d940d 68 kPDRUNCFG_PD_VREFP_SW = MAKE_PD_BITS(PDRCFG0, 23U),
Kojto 148:fd96258d940d 69 kPDRUNCFG_PD_FLASH_BG = MAKE_PD_BITS(PDRCFG0, 25U),
Kojto 148:fd96258d940d 70
Kojto 148:fd96258d940d 71 kPDRUNCFG_PD_ALT_FLASH_IBG = MAKE_PD_BITS(PDRCFG1, 28U),
Kojto 148:fd96258d940d 72 kPDRUNCFG_SEL_ALT_FLASH_IBG = MAKE_PD_BITS(PDRCFG1, 29U),
Kojto 148:fd96258d940d 73
Kojto 148:fd96258d940d 74 kPDRUNCFG_ForceUnsigned = 0x80000000U
Kojto 148:fd96258d940d 75 } pd_bit_t;
Kojto 148:fd96258d940d 76
Kojto 148:fd96258d940d 77 /*******************************************************************************
Kojto 148:fd96258d940d 78 * API
Kojto 148:fd96258d940d 79 ******************************************************************************/
Kojto 148:fd96258d940d 80
Kojto 148:fd96258d940d 81 #ifdef __cplusplus
Kojto 148:fd96258d940d 82 extern "C" {
Kojto 148:fd96258d940d 83 #endif
Kojto 148:fd96258d940d 84
Kojto 148:fd96258d940d 85 /*!
Kojto 148:fd96258d940d 86 * @name Power Configuration
Kojto 148:fd96258d940d 87 * @{
Kojto 148:fd96258d940d 88 */
Kojto 148:fd96258d940d 89
Kojto 148:fd96258d940d 90 /*!
Kojto 148:fd96258d940d 91 * @brief API to enable PDRUNCFG bit in the Syscon. Note that enabling the bit powers down the peripheral
Kojto 148:fd96258d940d 92 *
Kojto 148:fd96258d940d 93 * @param en peripheral for which to enable the PDRUNCFG bit
Kojto 148:fd96258d940d 94 * @return none
Kojto 148:fd96258d940d 95 */
Kojto 148:fd96258d940d 96 static inline void POWER_EnablePD(pd_bit_t en)
Kojto 148:fd96258d940d 97 {
Kojto 148:fd96258d940d 98 /* PDRUNCFGSET */
Kojto 148:fd96258d940d 99 SYSCON->PDRUNCFGSET[(en >> 8UL)] = (1UL << (en & 0xffU));
Kojto 148:fd96258d940d 100 }
Kojto 148:fd96258d940d 101
Kojto 148:fd96258d940d 102 /*!
Kojto 148:fd96258d940d 103 * @brief API to disable PDRUNCFG bit in the Syscon. Note that disabling the bit powers up the peripheral
Kojto 148:fd96258d940d 104 *
Kojto 148:fd96258d940d 105 * @param en peripheral for which to disable the PDRUNCFG bit
Kojto 148:fd96258d940d 106 * @return none
Kojto 148:fd96258d940d 107 */
Kojto 148:fd96258d940d 108 static inline void POWER_DisablePD(pd_bit_t en)
Kojto 148:fd96258d940d 109 {
Kojto 148:fd96258d940d 110 /* PDRUNCFGCLR */
Kojto 148:fd96258d940d 111 SYSCON->PDRUNCFGCLR[(en >> 8UL)] = (1UL << (en & 0xffU));
Kojto 148:fd96258d940d 112 }
Kojto 148:fd96258d940d 113
Kojto 148:fd96258d940d 114 /*!
Kojto 148:fd96258d940d 115 * @brief API to enable deep sleep bit in the ARM Core.
Kojto 148:fd96258d940d 116 *
Kojto 148:fd96258d940d 117 * @return none
Kojto 148:fd96258d940d 118 */
Kojto 148:fd96258d940d 119 static inline void POWER_EnableDeepSleep(void)
Kojto 148:fd96258d940d 120 {
Kojto 148:fd96258d940d 121 SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
Kojto 148:fd96258d940d 122 }
Kojto 148:fd96258d940d 123
Kojto 148:fd96258d940d 124 /*!
Kojto 148:fd96258d940d 125 * @brief API to disable deep sleep bit in the ARM Core.
Kojto 148:fd96258d940d 126 *
Kojto 148:fd96258d940d 127 * @return none
Kojto 148:fd96258d940d 128 */
Kojto 148:fd96258d940d 129 static inline void POWER_DisableDeepSleep(void)
Kojto 148:fd96258d940d 130 {
Kojto 148:fd96258d940d 131 SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
Kojto 148:fd96258d940d 132 }
Kojto 148:fd96258d940d 133
Kojto 148:fd96258d940d 134 /*!
Kojto 148:fd96258d940d 135 * @brief API to power down flash controller.
Kojto 148:fd96258d940d 136 *
Kojto 148:fd96258d940d 137 * @return none
Kojto 148:fd96258d940d 138 */
Kojto 148:fd96258d940d 139 static inline void POWER_PowerDownFlash(void)
Kojto 148:fd96258d940d 140 {
Kojto 148:fd96258d940d 141 /* note, we retain flash trim to make waking back up faster */
Kojto 148:fd96258d940d 142 SYSCON->PDRUNCFGSET[0] = SYSCON_PDRUNCFG_LP_VDDFLASH_MASK | SYSCON_PDRUNCFG_PD_VDDHV_ENA_MASK | SYSCON_PDRUNCFG_PD_FLASH_BG_MASK;
Kojto 148:fd96258d940d 143
Kojto 148:fd96258d940d 144 /* TURN OFF clock for Flash Controller (only needed for FLASH programming, will be turned on by ROM API) */
Kojto 148:fd96258d940d 145 CLOCK_DisableClock(kCLOCK_Flash);
Kojto 148:fd96258d940d 146
Kojto 148:fd96258d940d 147 /* TURN OFF clock for Flash Accelerator */
Kojto 148:fd96258d940d 148 CLOCK_DisableClock(kCLOCK_Fmc);
Kojto 148:fd96258d940d 149 }
Kojto 148:fd96258d940d 150
Kojto 148:fd96258d940d 151 /*!
Kojto 148:fd96258d940d 152 * @brief API to power up flash controller.
Kojto 148:fd96258d940d 153 *
Kojto 148:fd96258d940d 154 * @return none
Kojto 148:fd96258d940d 155 */
Kojto 148:fd96258d940d 156 static inline void POWER_PowerUpFlash(void)
Kojto 148:fd96258d940d 157 {
Kojto 148:fd96258d940d 158 SYSCON->PDRUNCFGCLR[0] = SYSCON_PDRUNCFG_LP_VDDFLASH_MASK | SYSCON_PDRUNCFG_PD_VDDHV_ENA_MASK;
Kojto 148:fd96258d940d 159
Kojto 148:fd96258d940d 160 /* TURN ON clock for flash controller */
Kojto 148:fd96258d940d 161 CLOCK_EnableClock(kCLOCK_Fmc);
Kojto 148:fd96258d940d 162 }
Kojto 148:fd96258d940d 163
Kojto 148:fd96258d940d 164
Kojto 148:fd96258d940d 165 /*!
Kojto 148:fd96258d940d 166 * @brief Power Library API to enter deep sleep mode.
Kojto 148:fd96258d940d 167 *
Kojto 148:fd96258d940d 168 * @param exclude_from_pd Bit mask of the PDRUNCFG bits that needs to be powered on during deep sleep
Kojto 148:fd96258d940d 169 * @return none
Kojto 148:fd96258d940d 170 */
Kojto 148:fd96258d940d 171 void POWER_EnterDeepSleep(uint32_t exclude_from_pd);
Kojto 148:fd96258d940d 172
Kojto 148:fd96258d940d 173 /*!
Kojto 148:fd96258d940d 174 * @brief Power Library API to enter deep power down mode.
Kojto 148:fd96258d940d 175 *
Kojto 148:fd96258d940d 176 * @param exclude_from_pd Bit mask of the PDRUNCFG bits that needs to be powered on during deep power down mode,
Kojto 148:fd96258d940d 177 * but this is has no effect as the voltages are cut off.
Kojto 148:fd96258d940d 178 * @return none
Kojto 148:fd96258d940d 179 */
Kojto 148:fd96258d940d 180 void POWER_EnterDeepPowerDown(uint32_t exclude_from_pd);
Kojto 148:fd96258d940d 181
Kojto 148:fd96258d940d 182 /*!
Kojto 148:fd96258d940d 183 * @brief Power Library API to choose normal regulation and set the voltage for the desired operating frequency.
Kojto 148:fd96258d940d 184 *
Kojto 148:fd96258d940d 185 * @param freq - The desired frequency at which the part would like to operate,
Kojto 148:fd96258d940d 186 * note that the voltage and flash wait states should be set before changing frequency
Kojto 148:fd96258d940d 187 * @return none
Kojto 148:fd96258d940d 188 */
Kojto 148:fd96258d940d 189 void POWER_SetVoltageForFreq(uint32_t freq);
Kojto 148:fd96258d940d 190
Kojto 148:fd96258d940d 191 /*!
Kojto 148:fd96258d940d 192 * @brief Power Library API to choose low power regulation and set the voltage for the desired operating frequency.
Kojto 148:fd96258d940d 193 *
Kojto 148:fd96258d940d 194 * @param freq - The desired frequency at which the part would like to operate,
Kojto 148:fd96258d940d 195 * note only 12MHz and 48Mhz are supported
Kojto 148:fd96258d940d 196 * @return none
Kojto 148:fd96258d940d 197 */
Kojto 148:fd96258d940d 198 void POWER_SetLowPowerVoltageForFreq(uint32_t freq);
Kojto 148:fd96258d940d 199
Kojto 148:fd96258d940d 200 /*!
Kojto 148:fd96258d940d 201 * @brief Power Library API to return the library version.
Kojto 148:fd96258d940d 202 *
Kojto 148:fd96258d940d 203 * @return version number of the power library
Kojto 148:fd96258d940d 204 */
Kojto 148:fd96258d940d 205 uint32_t POWER_GetLibVersion(void);
Kojto 148:fd96258d940d 206
Kojto 148:fd96258d940d 207 /* @} */
Kojto 148:fd96258d940d 208
Kojto 148:fd96258d940d 209 #ifdef __cplusplus
Kojto 148:fd96258d940d 210 }
Kojto 148:fd96258d940d 211 #endif
Kojto 148:fd96258d940d 212
Kojto 148:fd96258d940d 213 /*! @} */
Kojto 148:fd96258d940d 214
Kojto 148:fd96258d940d 215 #endif /* _FSL_POWER_H_ */