/* * Copyright (c) 2014, Freescale Semiconductor, Inc. * All rights reserved. * * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. */ /* * WARNING! DO NOT EDIT THIS FILE DIRECTLY! * * This file was generated automatically and any changes may be lost. */ #ifndef __HW_VREF_REGISTERS_H__ #define __HW_VREF_REGISTERS_H__ #include "regs.h" /* * MK64F12 VREF * * Voltage Reference * * Registers defined in this header file: * - HW_VREF_TRM - VREF Trim Register * - HW_VREF_SC - VREF Status and Control Register * * - hw_vref_t - Struct containing all module registers. */ //! @name Module base addresses //@{ #ifndef REGS_VREF_BASE #define HW_VREF_INSTANCE_COUNT (1U) //!< Number of instances of the VREF module. #define REGS_VREF_BASE (0x40074000U) //!< Base address for VREF. #endif //@} //------------------------------------------------------------------------------------------- // HW_VREF_TRM - VREF Trim Register //------------------------------------------------------------------------------------------- #ifndef __LANGUAGE_ASM__ /*! * @brief HW_VREF_TRM - VREF Trim Register (RW) * * Reset value: 0x00U * * This register contains bits that contain the trim data for the Voltage * Reference. */ typedef union _hw_vref_trm { uint8_t U; struct _hw_vref_trm_bitfields { uint8_t TRIM : 6; //!< [5:0] Trim bits uint8_t CHOPEN : 1; //!< [6] Chop oscillator enable. When set, //! internal chopping operation is enabled and the internal analog offset will //! be minimized. uint8_t RESERVED0 : 1; //!< [7] } B; } hw_vref_trm_t; #endif /*! * @name Constants and macros for entire VREF_TRM register */ //@{ #define HW_VREF_TRM_ADDR (REGS_VREF_BASE + 0x0U) #ifndef __LANGUAGE_ASM__ #define HW_VREF_TRM (*(__IO hw_vref_trm_t *) HW_VREF_TRM_ADDR) #define HW_VREF_TRM_RD() (HW_VREF_TRM.U) #define HW_VREF_TRM_WR(v) (HW_VREF_TRM.U = (v)) #define HW_VREF_TRM_SET(v) (HW_VREF_TRM_WR(HW_VREF_TRM_RD() | (v))) #define HW_VREF_TRM_CLR(v) (HW_VREF_TRM_WR(HW_VREF_TRM_RD() & ~(v))) #define HW_VREF_TRM_TOG(v) (HW_VREF_TRM_WR(HW_VREF_TRM_RD() ^ (v))) #endif //@} /* * Constants & macros for individual VREF_TRM bitfields */ /*! * @name Register VREF_TRM, field TRIM[5:0] (RW) * * These bits change the resulting VREF by approximately +/- 0.5 mV for each * step. Min = minimum and max = maximum voltage reference output. For minimum and * maximum voltage reference output values, refer to the Data Sheet for this chip. * * Values: * - 000000 - Min * - 111111 - Max */ //@{ #define BP_VREF_TRM_TRIM (0U) //!< Bit position for VREF_TRM_TRIM. #define BM_VREF_TRM_TRIM (0x3FU) //!< Bit mask for VREF_TRM_TRIM. #define BS_VREF_TRM_TRIM (6U) //!< Bit field size in bits for VREF_TRM_TRIM. #ifndef __LANGUAGE_ASM__ //! @brief Read current value of the VREF_TRM_TRIM field. #define BR_VREF_TRM_TRIM (HW_VREF_TRM.B.TRIM) #endif //! @brief Format value for bitfield VREF_TRM_TRIM. #define BF_VREF_TRM_TRIM(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_TRM_TRIM), uint8_t) & BM_VREF_TRM_TRIM) #ifndef __LANGUAGE_ASM__ //! @brief Set the TRIM field to a new value. #define BW_VREF_TRM_TRIM(v) (HW_VREF_TRM_WR((HW_VREF_TRM_RD() & ~BM_VREF_TRM_TRIM) | BF_VREF_TRM_TRIM(v))) #endif //@} /*! * @name Register VREF_TRM, field CHOPEN[6] (RW) * * This bit is set during factory trimming of the VREF voltage. This bit should * be written to 1 to achieve the performance stated in the data sheet. * * Values: * - 0 - Chop oscillator is disabled. * - 1 - Chop oscillator is enabled. */ //@{ #define BP_VREF_TRM_CHOPEN (6U) //!< Bit position for VREF_TRM_CHOPEN. #define BM_VREF_TRM_CHOPEN (0x40U) //!< Bit mask for VREF_TRM_CHOPEN. #define BS_VREF_TRM_CHOPEN (1U) //!< Bit field size in bits for VREF_TRM_CHOPEN. #ifndef __LANGUAGE_ASM__ //! @brief Read current value of the VREF_TRM_CHOPEN field. #define BR_VREF_TRM_CHOPEN (BITBAND_ACCESS8(HW_VREF_TRM_ADDR, BP_VREF_TRM_CHOPEN)) #endif //! @brief Format value for bitfield VREF_TRM_CHOPEN. #define BF_VREF_TRM_CHOPEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_TRM_CHOPEN), uint8_t) & BM_VREF_TRM_CHOPEN) #ifndef __LANGUAGE_ASM__ //! @brief Set the CHOPEN field to a new value. #define BW_VREF_TRM_CHOPEN(v) (BITBAND_ACCESS8(HW_VREF_TRM_ADDR, BP_VREF_TRM_CHOPEN) = (v)) #endif //@} //------------------------------------------------------------------------------------------- // HW_VREF_SC - VREF Status and Control Register //------------------------------------------------------------------------------------------- #ifndef __LANGUAGE_ASM__ /*! * @brief HW_VREF_SC - VREF Status and Control Register (RW) * * Reset value: 0x00U * * This register contains the control bits used to enable the internal voltage * reference and to select the buffer mode to be used. */ typedef union _hw_vref_sc { uint8_t U; struct _hw_vref_sc_bitfields { uint8_t MODE_LV : 2; //!< [1:0] Buffer Mode selection uint8_t VREFST : 1; //!< [2] Internal Voltage Reference stable uint8_t RESERVED0 : 2; //!< [4:3] uint8_t ICOMPEN : 1; //!< [5] Second order curvature compensation //! enable uint8_t REGEN : 1; //!< [6] Regulator enable uint8_t VREFEN : 1; //!< [7] Internal Voltage Reference enable } B; } hw_vref_sc_t; #endif /*! * @name Constants and macros for entire VREF_SC register */ //@{ #define HW_VREF_SC_ADDR (REGS_VREF_BASE + 0x1U) #ifndef __LANGUAGE_ASM__ #define HW_VREF_SC (*(__IO hw_vref_sc_t *) HW_VREF_SC_ADDR) #define HW_VREF_SC_RD() (HW_VREF_SC.U) #define HW_VREF_SC_WR(v) (HW_VREF_SC.U = (v)) #define HW_VREF_SC_SET(v) (HW_VREF_SC_WR(HW_VREF_SC_RD() | (v))) #define HW_VREF_SC_CLR(v) (HW_VREF_SC_WR(HW_VREF_SC_RD() & ~(v))) #define HW_VREF_SC_TOG(v) (HW_VREF_SC_WR(HW_VREF_SC_RD() ^ (v))) #endif //@} /* * Constants & macros for individual VREF_SC bitfields */ /*! * @name Register VREF_SC, field MODE_LV[1:0] (RW) * * These bits select the buffer modes for the Voltage Reference module. * * Values: * - 00 - Bandgap on only, for stabilization and startup * - 01 - High power buffer mode enabled * - 10 - Low-power buffer mode enabled * - 11 - Reserved */ //@{ #define BP_VREF_SC_MODE_LV (0U) //!< Bit position for VREF_SC_MODE_LV. #define BM_VREF_SC_MODE_LV (0x03U) //!< Bit mask for VREF_SC_MODE_LV. #define BS_VREF_SC_MODE_LV (2U) //!< Bit field size in bits for VREF_SC_MODE_LV. #ifndef __LANGUAGE_ASM__ //! @brief Read current value of the VREF_SC_MODE_LV field. #define BR_VREF_SC_MODE_LV (HW_VREF_SC.B.MODE_LV) #endif //! @brief Format value for bitfield VREF_SC_MODE_LV. #define BF_VREF_SC_MODE_LV(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_SC_MODE_LV), uint8_t) & BM_VREF_SC_MODE_LV) #ifndef __LANGUAGE_ASM__ //! @brief Set the MODE_LV field to a new value. #define BW_VREF_SC_MODE_LV(v) (HW_VREF_SC_WR((HW_VREF_SC_RD() & ~BM_VREF_SC_MODE_LV) | BF_VREF_SC_MODE_LV(v))) #endif //@} /*! * @name Register VREF_SC, field VREFST[2] (RO) * * This bit indicates that the bandgap reference within the Voltage Reference * module has completed its startup and stabilization. * * Values: * - 0 - The module is disabled or not stable. * - 1 - The module is stable. */ //@{ #define BP_VREF_SC_VREFST (2U) //!< Bit position for VREF_SC_VREFST. #define BM_VREF_SC_VREFST (0x04U) //!< Bit mask for VREF_SC_VREFST. #define BS_VREF_SC_VREFST (1U) //!< Bit field size in bits for VREF_SC_VREFST. #ifndef __LANGUAGE_ASM__ //! @brief Read current value of the VREF_SC_VREFST field. #define BR_VREF_SC_VREFST (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_VREFST)) #endif //@} /*! * @name Register VREF_SC, field ICOMPEN[5] (RW) * * This bit is set during factory trimming of the VREF voltage. This bit should * be written to 1 to achieve the performance stated in the data sheet. * * Values: * - 0 - Disabled * - 1 - Enabled */ //@{ #define BP_VREF_SC_ICOMPEN (5U) //!< Bit position for VREF_SC_ICOMPEN. #define BM_VREF_SC_ICOMPEN (0x20U) //!< Bit mask for VREF_SC_ICOMPEN. #define BS_VREF_SC_ICOMPEN (1U) //!< Bit field size in bits for VREF_SC_ICOMPEN. #ifndef __LANGUAGE_ASM__ //! @brief Read current value of the VREF_SC_ICOMPEN field. #define BR_VREF_SC_ICOMPEN (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_ICOMPEN)) #endif //! @brief Format value for bitfield VREF_SC_ICOMPEN. #define BF_VREF_SC_ICOMPEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_SC_ICOMPEN), uint8_t) & BM_VREF_SC_ICOMPEN) #ifndef __LANGUAGE_ASM__ //! @brief Set the ICOMPEN field to a new value. #define BW_VREF_SC_ICOMPEN(v) (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_ICOMPEN) = (v)) #endif //@} /*! * @name Register VREF_SC, field REGEN[6] (RW) * * This bit is used to enable the internal 1.75 V regulator to produce a * constant internal voltage supply in order to reduce the sensitivity to external * supply noise and variation. If it is desired to keep the regulator enabled in very * low power modes, refer to the Chip Configuration details for a description on * how this can be achieved. This bit is set during factory trimming of the VREF * voltage. This bit should be written to 1 to achieve the performance stated in * the data sheet. * * Values: * - 0 - Internal 1.75 V regulator is disabled. * - 1 - Internal 1.75 V regulator is enabled. */ //@{ #define BP_VREF_SC_REGEN (6U) //!< Bit position for VREF_SC_REGEN. #define BM_VREF_SC_REGEN (0x40U) //!< Bit mask for VREF_SC_REGEN. #define BS_VREF_SC_REGEN (1U) //!< Bit field size in bits for VREF_SC_REGEN. #ifndef __LANGUAGE_ASM__ //! @brief Read current value of the VREF_SC_REGEN field. #define BR_VREF_SC_REGEN (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_REGEN)) #endif //! @brief Format value for bitfield VREF_SC_REGEN. #define BF_VREF_SC_REGEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_SC_REGEN), uint8_t) & BM_VREF_SC_REGEN) #ifndef __LANGUAGE_ASM__ //! @brief Set the REGEN field to a new value. #define BW_VREF_SC_REGEN(v) (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_REGEN) = (v)) #endif //@} /*! * @name Register VREF_SC, field VREFEN[7] (RW) * * This bit is used to enable the bandgap reference within the Voltage Reference * module. After the VREF is enabled, turning off the clock to the VREF module * via the corresponding clock gate register will not disable the VREF. VREF must * be disabled via this VREFEN bit. * * Values: * - 0 - The module is disabled. * - 1 - The module is enabled. */ //@{ #define BP_VREF_SC_VREFEN (7U) //!< Bit position for VREF_SC_VREFEN. #define BM_VREF_SC_VREFEN (0x80U) //!< Bit mask for VREF_SC_VREFEN. #define BS_VREF_SC_VREFEN (1U) //!< Bit field size in bits for VREF_SC_VREFEN. #ifndef __LANGUAGE_ASM__ //! @brief Read current value of the VREF_SC_VREFEN field. #define BR_VREF_SC_VREFEN (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_VREFEN)) #endif //! @brief Format value for bitfield VREF_SC_VREFEN. #define BF_VREF_SC_VREFEN(v) (__REG_VALUE_TYPE((__REG_VALUE_TYPE((v), uint8_t) << BP_VREF_SC_VREFEN), uint8_t) & BM_VREF_SC_VREFEN) #ifndef __LANGUAGE_ASM__ //! @brief Set the VREFEN field to a new value. #define BW_VREF_SC_VREFEN(v) (BITBAND_ACCESS8(HW_VREF_SC_ADDR, BP_VREF_SC_VREFEN) = (v)) #endif //@} //------------------------------------------------------------------------------------------- // hw_vref_t - module struct //------------------------------------------------------------------------------------------- /*! * @brief All VREF module registers. */ #ifndef __LANGUAGE_ASM__ #pragma pack(1) typedef struct _hw_vref { __IO hw_vref_trm_t TRM; //!< [0x0] VREF Trim Register __IO hw_vref_sc_t SC; //!< [0x1] VREF Status and Control Register } hw_vref_t; #pragma pack() //! @brief Macro to access all VREF registers. //! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct, //! use the '&' operator, like &HW_VREF. #define HW_VREF (*(hw_vref_t *) REGS_VREF_BASE) #endif #endif // __HW_VREF_REGISTERS_H__ // v22/130726/0.9 // EOF