Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of gr-peach-opencv-project-sd-card by
targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW41Z/drivers/fsl_cop.h@154:37f96f9d4de2, 2017-01-04 (annotated)
- Committer:
- <>
- Date:
- Wed Jan 04 16:58:05 2017 +0000
- Revision:
- 154:37f96f9d4de2
This updates the lib to the mbed lib v133
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| <> | 154:37f96f9d4de2 | 1 | /* |
| <> | 154:37f96f9d4de2 | 2 | * Copyright (c) 2015, Freescale Semiconductor, Inc. |
| <> | 154:37f96f9d4de2 | 3 | * All rights reserved. |
| <> | 154:37f96f9d4de2 | 4 | * |
| <> | 154:37f96f9d4de2 | 5 | * Redistribution and use in source and binary forms, with or without modification, |
| <> | 154:37f96f9d4de2 | 6 | * are permitted provided that the following conditions are met: |
| <> | 154:37f96f9d4de2 | 7 | * |
| <> | 154:37f96f9d4de2 | 8 | * o Redistributions of source code must retain the above copyright notice, this list |
| <> | 154:37f96f9d4de2 | 9 | * of conditions and the following disclaimer. |
| <> | 154:37f96f9d4de2 | 10 | * |
| <> | 154:37f96f9d4de2 | 11 | * o Redistributions in binary form must reproduce the above copyright notice, this |
| <> | 154:37f96f9d4de2 | 12 | * list of conditions and the following disclaimer in the documentation and/or |
| <> | 154:37f96f9d4de2 | 13 | * other materials provided with the distribution. |
| <> | 154:37f96f9d4de2 | 14 | * |
| <> | 154:37f96f9d4de2 | 15 | * o Neither the name of Freescale Semiconductor, Inc. nor the names of its |
| <> | 154:37f96f9d4de2 | 16 | * contributors may be used to endorse or promote products derived from this |
| <> | 154:37f96f9d4de2 | 17 | * software without specific prior written permission. |
| <> | 154:37f96f9d4de2 | 18 | * |
| <> | 154:37f96f9d4de2 | 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| <> | 154:37f96f9d4de2 | 20 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| <> | 154:37f96f9d4de2 | 21 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| <> | 154:37f96f9d4de2 | 22 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
| <> | 154:37f96f9d4de2 | 23 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| <> | 154:37f96f9d4de2 | 24 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| <> | 154:37f96f9d4de2 | 25 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| <> | 154:37f96f9d4de2 | 26 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| <> | 154:37f96f9d4de2 | 27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| <> | 154:37f96f9d4de2 | 28 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| <> | 154:37f96f9d4de2 | 29 | */ |
| <> | 154:37f96f9d4de2 | 30 | #ifndef _FSL_COP_H_ |
| <> | 154:37f96f9d4de2 | 31 | #define _FSL_COP_H_ |
| <> | 154:37f96f9d4de2 | 32 | |
| <> | 154:37f96f9d4de2 | 33 | #include "fsl_common.h" |
| <> | 154:37f96f9d4de2 | 34 | |
| <> | 154:37f96f9d4de2 | 35 | /*! |
| <> | 154:37f96f9d4de2 | 36 | * @addtogroup cop_driver |
| <> | 154:37f96f9d4de2 | 37 | * @{ |
| <> | 154:37f96f9d4de2 | 38 | */ |
| <> | 154:37f96f9d4de2 | 39 | |
| <> | 154:37f96f9d4de2 | 40 | /*! @file */ |
| <> | 154:37f96f9d4de2 | 41 | |
| <> | 154:37f96f9d4de2 | 42 | /******************************************************************************* |
| <> | 154:37f96f9d4de2 | 43 | * Definitions |
| <> | 154:37f96f9d4de2 | 44 | *******************************************************************************/ |
| <> | 154:37f96f9d4de2 | 45 | |
| <> | 154:37f96f9d4de2 | 46 | /*! @name Driver version */ |
| <> | 154:37f96f9d4de2 | 47 | /*@{*/ |
| <> | 154:37f96f9d4de2 | 48 | /*! @brief COP driver version 2.0.0. */ |
| <> | 154:37f96f9d4de2 | 49 | #define FSL_COP_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) |
| <> | 154:37f96f9d4de2 | 50 | /*@}*/ |
| <> | 154:37f96f9d4de2 | 51 | |
| <> | 154:37f96f9d4de2 | 52 | /*! @name COP refresh sequence. */ |
| <> | 154:37f96f9d4de2 | 53 | /*@{*/ |
| <> | 154:37f96f9d4de2 | 54 | #define COP_FIRST_BYTE_OF_REFRESH (0x55U) /*!< First byte of refresh sequence */ |
| <> | 154:37f96f9d4de2 | 55 | #define COP_SECOND_BYTE_OF_REFRESH (0xAAU) /*!< Second byte of refresh sequence */ |
| <> | 154:37f96f9d4de2 | 56 | /*@}*/ |
| <> | 154:37f96f9d4de2 | 57 | |
| <> | 154:37f96f9d4de2 | 58 | /*! @brief COP clock source selection. */ |
| <> | 154:37f96f9d4de2 | 59 | typedef enum _cop_clock_source |
| <> | 154:37f96f9d4de2 | 60 | { |
| <> | 154:37f96f9d4de2 | 61 | kCOP_LpoClock = 0U, /*!< COP clock sourced from LPO */ |
| <> | 154:37f96f9d4de2 | 62 | #if defined(FSL_FEATURE_COP_HAS_MORE_CLKSRC) && FSL_FEATURE_COP_HAS_MORE_CLKSRC |
| <> | 154:37f96f9d4de2 | 63 | kCOP_McgIrClock = 1U, /*!< COP clock sourced from MCGIRCLK */ |
| <> | 154:37f96f9d4de2 | 64 | kCOP_OscErClock = 2U, /*!< COP clock sourced from OSCERCLK */ |
| <> | 154:37f96f9d4de2 | 65 | #endif /* FSL_FEATURE_COP_HAS_MORE_CLKSRC */ |
| <> | 154:37f96f9d4de2 | 66 | kCOP_BusClock = 3U, /*!< COP clock sourced from Bus clock */ |
| <> | 154:37f96f9d4de2 | 67 | } cop_clock_source_t; |
| <> | 154:37f96f9d4de2 | 68 | |
| <> | 154:37f96f9d4de2 | 69 | /*! @brief Define the COP timeout cycles. */ |
| <> | 154:37f96f9d4de2 | 70 | typedef enum _cop_timeout_cycles |
| <> | 154:37f96f9d4de2 | 71 | { |
| <> | 154:37f96f9d4de2 | 72 | kCOP_2Power5CyclesOr2Power13Cycles = 1U, /*!< 2^5 or 2^13 clock cycles */ |
| <> | 154:37f96f9d4de2 | 73 | kCOP_2Power8CyclesOr2Power16Cycles = 2U, /*!< 2^8 or 2^16 clock cycles */ |
| <> | 154:37f96f9d4de2 | 74 | kCOP_2Power10CyclesOr2Power18Cycles = 3U, /*!< 2^10 or 2^18 clock cycles */ |
| <> | 154:37f96f9d4de2 | 75 | } cop_timeout_cycles_t; |
| <> | 154:37f96f9d4de2 | 76 | |
| <> | 154:37f96f9d4de2 | 77 | #if defined(FSL_FEATURE_COP_HAS_LONGTIME_MODE) && FSL_FEATURE_COP_HAS_LONGTIME_MODE |
| <> | 154:37f96f9d4de2 | 78 | /*! @breif Define the COP timeout mode. */ |
| <> | 154:37f96f9d4de2 | 79 | typedef enum _cop_timeout_mode |
| <> | 154:37f96f9d4de2 | 80 | { |
| <> | 154:37f96f9d4de2 | 81 | kCOP_ShortTimeoutMode = 0U, /*!< COP selects long timeout */ |
| <> | 154:37f96f9d4de2 | 82 | kCOP_LongTimeoutMode = 1U, /*!< COP selects short timeout */ |
| <> | 154:37f96f9d4de2 | 83 | } cop_timeout_mode_t; |
| <> | 154:37f96f9d4de2 | 84 | #endif /* FSL_FEATURE_COP_HAS_LONGTIME_MODE */ |
| <> | 154:37f96f9d4de2 | 85 | |
| <> | 154:37f96f9d4de2 | 86 | /*! @brief Describes COP configuration structure. */ |
| <> | 154:37f96f9d4de2 | 87 | typedef struct _cop_config |
| <> | 154:37f96f9d4de2 | 88 | { |
| <> | 154:37f96f9d4de2 | 89 | bool enableWindowMode; /*!< COP run mode: window mode or normal mode */ |
| <> | 154:37f96f9d4de2 | 90 | #if defined(FSL_FEATURE_COP_HAS_LONGTIME_MODE) && FSL_FEATURE_COP_HAS_LONGTIME_MODE |
| <> | 154:37f96f9d4de2 | 91 | cop_timeout_mode_t timeoutMode; /*!< COP timeout mode: long timeout or short timeout */ |
| <> | 154:37f96f9d4de2 | 92 | bool enableStop; /*!< Enable or disable COP in STOP mode */ |
| <> | 154:37f96f9d4de2 | 93 | bool enableDebug; /*!< Enable or disable COP in DEBUG mode */ |
| <> | 154:37f96f9d4de2 | 94 | #endif /* FSL_FEATURE_COP_HAS_LONGTIME_MODE */ |
| <> | 154:37f96f9d4de2 | 95 | cop_clock_source_t clockSource; /*!< Set COP clock source */ |
| <> | 154:37f96f9d4de2 | 96 | cop_timeout_cycles_t timeoutCycles; /*!< Set COP timeout value */ |
| <> | 154:37f96f9d4de2 | 97 | } cop_config_t; |
| <> | 154:37f96f9d4de2 | 98 | |
| <> | 154:37f96f9d4de2 | 99 | /******************************************************************************* |
| <> | 154:37f96f9d4de2 | 100 | * API |
| <> | 154:37f96f9d4de2 | 101 | *******************************************************************************/ |
| <> | 154:37f96f9d4de2 | 102 | |
| <> | 154:37f96f9d4de2 | 103 | #if defined(__cplusplus) |
| <> | 154:37f96f9d4de2 | 104 | extern "C" { |
| <> | 154:37f96f9d4de2 | 105 | #endif /* __cplusplus*/ |
| <> | 154:37f96f9d4de2 | 106 | |
| <> | 154:37f96f9d4de2 | 107 | /*! |
| <> | 154:37f96f9d4de2 | 108 | * @name COP Functional Operation |
| <> | 154:37f96f9d4de2 | 109 | * @{ |
| <> | 154:37f96f9d4de2 | 110 | */ |
| <> | 154:37f96f9d4de2 | 111 | |
| <> | 154:37f96f9d4de2 | 112 | /*! |
| <> | 154:37f96f9d4de2 | 113 | * @brief Initializes the COP configuration structure. |
| <> | 154:37f96f9d4de2 | 114 | * |
| <> | 154:37f96f9d4de2 | 115 | * This function initializes the COP configuration structure to default values. The default |
| <> | 154:37f96f9d4de2 | 116 | * values are: |
| <> | 154:37f96f9d4de2 | 117 | * @code |
| <> | 154:37f96f9d4de2 | 118 | * copConfig->enableWindowMode = false; |
| <> | 154:37f96f9d4de2 | 119 | * copConfig->timeoutMode = kCOP_LongTimeoutMode; |
| <> | 154:37f96f9d4de2 | 120 | * copConfig->enableStop = false; |
| <> | 154:37f96f9d4de2 | 121 | * copConfig->enableDebug = false; |
| <> | 154:37f96f9d4de2 | 122 | * copConfig->clockSource = kCOP_LpoClock; |
| <> | 154:37f96f9d4de2 | 123 | * copConfig->timeoutCycles = kCOP_2Power10CyclesOr2Power18Cycles; |
| <> | 154:37f96f9d4de2 | 124 | * @endcode |
| <> | 154:37f96f9d4de2 | 125 | * |
| <> | 154:37f96f9d4de2 | 126 | * @param config Pointer to the COP configuration structure. |
| <> | 154:37f96f9d4de2 | 127 | * @see cop_config_t |
| <> | 154:37f96f9d4de2 | 128 | */ |
| <> | 154:37f96f9d4de2 | 129 | void COP_GetDefaultConfig(cop_config_t *config); |
| <> | 154:37f96f9d4de2 | 130 | |
| <> | 154:37f96f9d4de2 | 131 | /*! |
| <> | 154:37f96f9d4de2 | 132 | * @brief Initializes the COP module. |
| <> | 154:37f96f9d4de2 | 133 | * |
| <> | 154:37f96f9d4de2 | 134 | * This function configures the COP. After it is called, the COP |
| <> | 154:37f96f9d4de2 | 135 | * starts running according to the configuration. |
| <> | 154:37f96f9d4de2 | 136 | * Because all COP control registers are write-once only, the COP_Init function |
| <> | 154:37f96f9d4de2 | 137 | * and the COP_Disable function can be called only once. A second call has no effect. |
| <> | 154:37f96f9d4de2 | 138 | * |
| <> | 154:37f96f9d4de2 | 139 | * Example: |
| <> | 154:37f96f9d4de2 | 140 | * @code |
| <> | 154:37f96f9d4de2 | 141 | * cop_config_t config; |
| <> | 154:37f96f9d4de2 | 142 | * COP_GetDefaultConfig(&config); |
| <> | 154:37f96f9d4de2 | 143 | * config.timeoutCycles = kCOP_2Power8CyclesOr2Power16Cycles; |
| <> | 154:37f96f9d4de2 | 144 | * COP_Init(sim_base,&config); |
| <> | 154:37f96f9d4de2 | 145 | * @endcode |
| <> | 154:37f96f9d4de2 | 146 | * |
| <> | 154:37f96f9d4de2 | 147 | * @param base SIM peripheral base address. |
| <> | 154:37f96f9d4de2 | 148 | * @param config The configuration of COP. |
| <> | 154:37f96f9d4de2 | 149 | */ |
| <> | 154:37f96f9d4de2 | 150 | void COP_Init(SIM_Type *base, const cop_config_t *config); |
| <> | 154:37f96f9d4de2 | 151 | |
| <> | 154:37f96f9d4de2 | 152 | /*! |
| <> | 154:37f96f9d4de2 | 153 | * @brief De-initializes the COP module. |
| <> | 154:37f96f9d4de2 | 154 | * This dedicated function is not provided. Instead, the COP_Disable function can be used to disable the COP. |
| <> | 154:37f96f9d4de2 | 155 | */ |
| <> | 154:37f96f9d4de2 | 156 | |
| <> | 154:37f96f9d4de2 | 157 | /*! |
| <> | 154:37f96f9d4de2 | 158 | * @brief Disables the COP module. |
| <> | 154:37f96f9d4de2 | 159 | * |
| <> | 154:37f96f9d4de2 | 160 | * This function disables the COP Watchdog. |
| <> | 154:37f96f9d4de2 | 161 | * Note: The COP configuration register is a write-once after reset. |
| <> | 154:37f96f9d4de2 | 162 | * To disable the COP Watchdog, call this function first. |
| <> | 154:37f96f9d4de2 | 163 | * |
| <> | 154:37f96f9d4de2 | 164 | * @param base SIM peripheral base address. |
| <> | 154:37f96f9d4de2 | 165 | */ |
| <> | 154:37f96f9d4de2 | 166 | static inline void COP_Disable(SIM_Type *base) |
| <> | 154:37f96f9d4de2 | 167 | { |
| <> | 154:37f96f9d4de2 | 168 | base->COPC &= ~SIM_COPC_COPT_MASK; |
| <> | 154:37f96f9d4de2 | 169 | } |
| <> | 154:37f96f9d4de2 | 170 | |
| <> | 154:37f96f9d4de2 | 171 | /*! |
| <> | 154:37f96f9d4de2 | 172 | * @brief Refreshes the COP timer |
| <> | 154:37f96f9d4de2 | 173 | * |
| <> | 154:37f96f9d4de2 | 174 | * This function feeds the COP. |
| <> | 154:37f96f9d4de2 | 175 | * |
| <> | 154:37f96f9d4de2 | 176 | * @param base SIM peripheral base address. |
| <> | 154:37f96f9d4de2 | 177 | */ |
| <> | 154:37f96f9d4de2 | 178 | void COP_Refresh(SIM_Type *base); |
| <> | 154:37f96f9d4de2 | 179 | |
| <> | 154:37f96f9d4de2 | 180 | /*@}*/ |
| <> | 154:37f96f9d4de2 | 181 | |
| <> | 154:37f96f9d4de2 | 182 | #if defined(__cplusplus) |
| <> | 154:37f96f9d4de2 | 183 | } |
| <> | 154:37f96f9d4de2 | 184 | #endif /* __cplusplus */ |
| <> | 154:37f96f9d4de2 | 185 | |
| <> | 154:37f96f9d4de2 | 186 | /*! @}*/ |
| <> | 154:37f96f9d4de2 | 187 | |
| <> | 154:37f96f9d4de2 | 188 | #endif /* _FSL_COP_H_ */ |
