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.
TARGET_TB_SENSE_12/TOOLCHAIN_GCC_ARM/em_system.h@172:65be27845400, 2019-02-20 (annotated)
- 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?
User | Revision | Line number | New contents of line |
---|---|---|---|
Anna Bridge |
142:4eea097334d6 | 1 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 2 | * @file em_system.h |
Anna Bridge |
142:4eea097334d6 | 3 | * @brief System API |
Anna Bridge |
160:5571c4ff569f | 4 | * @version 5.3.3 |
Anna Bridge |
142:4eea097334d6 | 5 | ******************************************************************************* |
Anna Bridge |
160:5571c4ff569f | 6 | * # License |
Anna Bridge |
142:4eea097334d6 | 7 | * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b> |
Anna Bridge |
142:4eea097334d6 | 8 | ******************************************************************************* |
Anna Bridge |
142:4eea097334d6 | 9 | * |
Anna Bridge |
142:4eea097334d6 | 10 | * Permission is granted to anyone to use this software for any purpose, |
Anna Bridge |
142:4eea097334d6 | 11 | * including commercial applications, and to alter it and redistribute it |
Anna Bridge |
142:4eea097334d6 | 12 | * freely, subject to the following restrictions: |
Anna Bridge |
142:4eea097334d6 | 13 | * |
Anna Bridge |
142:4eea097334d6 | 14 | * 1. The origin of this software must not be misrepresented; you must not |
Anna Bridge |
142:4eea097334d6 | 15 | * claim that you wrote the original software. |
Anna Bridge |
142:4eea097334d6 | 16 | * 2. Altered source versions must be plainly marked as such, and must not be |
Anna Bridge |
142:4eea097334d6 | 17 | * misrepresented as being the original software. |
Anna Bridge |
142:4eea097334d6 | 18 | * 3. This notice may not be removed or altered from any source distribution. |
Anna Bridge |
142:4eea097334d6 | 19 | * |
Anna Bridge |
142:4eea097334d6 | 20 | * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no |
Anna Bridge |
142:4eea097334d6 | 21 | * obligation to support this Software. Silicon Labs is providing the |
Anna Bridge |
142:4eea097334d6 | 22 | * Software "AS IS", with no express or implied warranties of any kind, |
Anna Bridge |
142:4eea097334d6 | 23 | * including, but not limited to, any implied warranties of merchantability |
Anna Bridge |
142:4eea097334d6 | 24 | * or fitness for any particular purpose or warranties against infringement |
Anna Bridge |
142:4eea097334d6 | 25 | * of any proprietary rights of a third party. |
Anna Bridge |
142:4eea097334d6 | 26 | * |
Anna Bridge |
142:4eea097334d6 | 27 | * Silicon Labs will not be liable for any consequential, incidental, or |
Anna Bridge |
142:4eea097334d6 | 28 | * special damages, or any other relief, or for any claim by any third party, |
Anna Bridge |
142:4eea097334d6 | 29 | * arising from your use of this Software. |
Anna Bridge |
142:4eea097334d6 | 30 | * |
Anna Bridge |
142:4eea097334d6 | 31 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 32 | |
Anna Bridge |
142:4eea097334d6 | 33 | #ifndef EM_SYSTEM_H |
Anna Bridge |
142:4eea097334d6 | 34 | #define EM_SYSTEM_H |
Anna Bridge |
142:4eea097334d6 | 35 | |
Anna Bridge |
142:4eea097334d6 | 36 | #include <stdbool.h> |
Anna Bridge |
142:4eea097334d6 | 37 | #include "em_device.h" |
Anna Bridge |
142:4eea097334d6 | 38 | |
Anna Bridge |
142:4eea097334d6 | 39 | #ifdef __cplusplus |
Anna Bridge |
142:4eea097334d6 | 40 | extern "C" { |
Anna Bridge |
142:4eea097334d6 | 41 | #endif |
Anna Bridge |
142:4eea097334d6 | 42 | |
Anna Bridge |
142:4eea097334d6 | 43 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 44 | * @addtogroup emlib |
Anna Bridge |
142:4eea097334d6 | 45 | * @{ |
Anna Bridge |
142:4eea097334d6 | 46 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 47 | |
Anna Bridge |
142:4eea097334d6 | 48 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 49 | * @addtogroup SYSTEM |
Anna Bridge |
142:4eea097334d6 | 50 | * @brief System API |
Anna Bridge |
142:4eea097334d6 | 51 | * @details |
Anna Bridge |
142:4eea097334d6 | 52 | * This module contains functions to read information such as RAM and Flash size, |
Anna Bridge |
142:4eea097334d6 | 53 | * device unique ID, chip revision, family and part number from the @ref DEVINFO and |
Anna Bridge |
142:4eea097334d6 | 54 | * @ref SCB blocks. Functions to configure and read status from the FPU are available for |
Anna Bridge |
142:4eea097334d6 | 55 | * compatible devices. |
Anna Bridge |
142:4eea097334d6 | 56 | * @{ |
Anna Bridge |
142:4eea097334d6 | 57 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 58 | |
Anna Bridge |
142:4eea097334d6 | 59 | /******************************************************************************* |
Anna Bridge |
142:4eea097334d6 | 60 | ******************************** ENUMS ************************************ |
Anna Bridge |
142:4eea097334d6 | 61 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 62 | |
Anna Bridge |
142:4eea097334d6 | 63 | /** Family identifiers. */ |
Anna Bridge |
160:5571c4ff569f | 64 | typedef enum { |
Anna Bridge |
142:4eea097334d6 | 65 | /* New style family #defines */ |
Anna Bridge |
142:4eea097334d6 | 66 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32G) |
Anna Bridge |
142:4eea097334d6 | 67 | systemPartFamilyEfm32Gecko = _DEVINFO_PART_DEVICE_FAMILY_EFM32G, /**< EFM32 Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 68 | #endif |
Anna Bridge |
142:4eea097334d6 | 69 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32GG) |
Anna Bridge |
160:5571c4ff569f | 70 | systemPartFamilyEfm32Giant = _DEVINFO_PART_DEVICE_FAMILY_EFM32GG, /**< EFM32 Giant Gecko Series 0 Device Family */ |
Anna Bridge |
160:5571c4ff569f | 71 | #endif |
Anna Bridge |
160:5571c4ff569f | 72 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32GG11B) |
Anna Bridge |
160:5571c4ff569f | 73 | systemPartFamilyEfm32Giant11B = _DEVINFO_PART_DEVICE_FAMILY_EFM32GG11B, /**< EFM32 Giant Gecko Series 1 Config 1 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 74 | #endif |
Anna Bridge |
142:4eea097334d6 | 75 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32TG) |
Anna Bridge |
142:4eea097334d6 | 76 | systemPartFamilyEfm32Tiny = _DEVINFO_PART_DEVICE_FAMILY_EFM32TG, /**< EFM32 Tiny Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 77 | #endif |
Anna Bridge |
160:5571c4ff569f | 78 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32TG11B) |
Anna Bridge |
160:5571c4ff569f | 79 | systemPartFamilyEfm32Tiny11B = _DEVINFO_PART_DEVICE_FAMILY_EFM32TG11B, /**< EFM32 Tiny Gecko 11 Device Family */ |
Anna Bridge |
160:5571c4ff569f | 80 | #endif |
Anna Bridge |
142:4eea097334d6 | 81 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32LG) |
Anna Bridge |
142:4eea097334d6 | 82 | systemPartFamilyEfm32Leopard = _DEVINFO_PART_DEVICE_FAMILY_EFM32LG, /**< EFM32 Leopard Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 83 | #endif |
Anna Bridge |
142:4eea097334d6 | 84 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32WG) |
Anna Bridge |
142:4eea097334d6 | 85 | systemPartFamilyEfm32Wonder = _DEVINFO_PART_DEVICE_FAMILY_EFM32WG, /**< EFM32 Wonder Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 86 | #endif |
Anna Bridge |
142:4eea097334d6 | 87 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32ZG) |
Anna Bridge |
142:4eea097334d6 | 88 | systemPartFamilyEfm32Zero = _DEVINFO_PART_DEVICE_FAMILY_EFM32ZG, /**< EFM32 Zero Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 89 | #endif |
Anna Bridge |
142:4eea097334d6 | 90 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32HG) |
Anna Bridge |
142:4eea097334d6 | 91 | systemPartFamilyEfm32Happy = _DEVINFO_PART_DEVICE_FAMILY_EFM32HG, /**< EFM32 Happy Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 92 | #endif |
Anna Bridge |
142:4eea097334d6 | 93 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32PG1B) |
Anna Bridge |
142:4eea097334d6 | 94 | systemPartFamilyEfm32Pearl1B = _DEVINFO_PART_DEVICE_FAMILY_EFM32PG1B, /**< EFM32 Pearl Gecko Series 1 Config 1 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 95 | #endif |
Anna Bridge |
142:4eea097334d6 | 96 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32JG1B) |
Anna Bridge |
142:4eea097334d6 | 97 | systemPartFamilyEfm32Jade1B = _DEVINFO_PART_DEVICE_FAMILY_EFM32JG1B, /**< EFM32 Jade Gecko Series 1 Config 1 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 98 | #endif |
Anna Bridge |
142:4eea097334d6 | 99 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32PG12B) |
Anna Bridge |
160:5571c4ff569f | 100 | systemPartFamilyEfm32Pearl12B = _DEVINFO_PART_DEVICE_FAMILY_EFM32PG12B, /**< EFM32 Pearl Gecko Series 1 Config 2 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 101 | #endif |
Anna Bridge |
142:4eea097334d6 | 102 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32JG12B) |
Anna Bridge |
160:5571c4ff569f | 103 | systemPartFamilyEfm32Jade12B = _DEVINFO_PART_DEVICE_FAMILY_EFM32JG12B, /**< EFM32 Jade Gecko Series 1 Config 2 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 104 | #endif |
Anna Bridge |
142:4eea097334d6 | 105 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32PG13B) |
Anna Bridge |
160:5571c4ff569f | 106 | systemPartFamilyEfm32Pearl13B = _DEVINFO_PART_DEVICE_FAMILY_EFM32PG13B, /**< EFM32 Pearl Gecko Series 1 Config 3 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 107 | #endif |
Anna Bridge |
142:4eea097334d6 | 108 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFM32JG13B) |
Anna Bridge |
160:5571c4ff569f | 109 | systemPartFamilyEfm32Jade13B = _DEVINFO_PART_DEVICE_FAMILY_EFM32JG13B, /**< EFM32 Jade Gecko Series 1 Config 3 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 110 | #endif |
Anna Bridge |
142:4eea097334d6 | 111 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EZR32WG) |
Anna Bridge |
142:4eea097334d6 | 112 | systemPartFamilyEzr32Wonder = _DEVINFO_PART_DEVICE_FAMILY_EZR32WG, /**< EZR32 Wonder Device Family */ |
Anna Bridge |
142:4eea097334d6 | 113 | #endif |
Anna Bridge |
142:4eea097334d6 | 114 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EZR32LG) |
Anna Bridge |
142:4eea097334d6 | 115 | systemPartFamilyEzr32Leopard = _DEVINFO_PART_DEVICE_FAMILY_EZR32LG, /**< EZR32 Leopard Device Family */ |
Anna Bridge |
142:4eea097334d6 | 116 | #endif |
Anna Bridge |
142:4eea097334d6 | 117 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EZR32HG) |
Anna Bridge |
142:4eea097334d6 | 118 | systemPartFamilyEzr32Happy = _DEVINFO_PART_DEVICE_FAMILY_EZR32HG, /**< EZR32 Happy Device Family */ |
Anna Bridge |
142:4eea097334d6 | 119 | #endif |
Anna Bridge |
142:4eea097334d6 | 120 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG1P) |
Anna Bridge |
142:4eea097334d6 | 121 | systemPartFamilyMighty1P = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG1P, /**< EFR32 Mighty Gecko Series 1 Config 1 Premium Device Family */ |
Anna Bridge |
142:4eea097334d6 | 122 | #endif |
Anna Bridge |
142:4eea097334d6 | 123 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG1B) |
Anna Bridge |
142:4eea097334d6 | 124 | systemPartFamilyMighty1B = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG1B, /**< EFR32 Mighty Gecko Series 1 Config 1 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 125 | #endif |
Anna Bridge |
142:4eea097334d6 | 126 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG1V) |
Anna Bridge |
142:4eea097334d6 | 127 | systemPartFamilyMighty1V = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG1V, /**< EFR32 Mighty Gecko Series 1 Config 1 Value Device Family */ |
Anna Bridge |
142:4eea097334d6 | 128 | #endif |
Anna Bridge |
142:4eea097334d6 | 129 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG1P) |
Anna Bridge |
142:4eea097334d6 | 130 | systemPartFamilyBlue1P = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG1P, /**< EFR32 Blue Gecko Series 1 Config 1 Premium Device Family */ |
Anna Bridge |
142:4eea097334d6 | 131 | #endif |
Anna Bridge |
142:4eea097334d6 | 132 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG1B) |
Anna Bridge |
142:4eea097334d6 | 133 | systemPartFamilyBlue1B = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG1B, /**< EFR32 Blue Gecko Series 1 Config 1 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 134 | #endif |
Anna Bridge |
142:4eea097334d6 | 135 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG1V) |
Anna Bridge |
142:4eea097334d6 | 136 | systemPartFamilyBlue1V = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG1V, /**< EFR32 Blue Gecko Series 1 Config 1 Value Device Family */ |
Anna Bridge |
142:4eea097334d6 | 137 | #endif |
Anna Bridge |
142:4eea097334d6 | 138 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG1P) |
Anna Bridge |
142:4eea097334d6 | 139 | systemPartFamilyFlex1P = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG1P, /**< EFR32 Flex Gecko Series 1 Config 1 Premium Device Family */ |
Anna Bridge |
142:4eea097334d6 | 140 | #endif |
Anna Bridge |
142:4eea097334d6 | 141 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG1B) |
Anna Bridge |
142:4eea097334d6 | 142 | systemPartFamilyFlex1B = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG1B, /**< EFR32 Flex Gecko Series 1 Config 1 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 143 | #endif |
Anna Bridge |
142:4eea097334d6 | 144 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG1V) |
Anna Bridge |
142:4eea097334d6 | 145 | systemPartFamilyFlex1V = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG1V, /**< EFR32 Flex Gecko Series 1 Config 1 Value Device Family */ |
Anna Bridge |
142:4eea097334d6 | 146 | #endif |
Anna Bridge |
142:4eea097334d6 | 147 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG2P) |
Anna Bridge |
142:4eea097334d6 | 148 | systemPartFamilyMighty2P = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG2P, /**< EFR32 Mighty Gecko Series 1 Config 2 Premium Device Family */ |
Anna Bridge |
142:4eea097334d6 | 149 | #endif |
Anna Bridge |
142:4eea097334d6 | 150 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG12P) |
Anna Bridge |
142:4eea097334d6 | 151 | systemPartFamilyMighty12P = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG12P, /**< EFR32 Mighty Gecko Series 1 Config 2 Premium Device Family */ |
Anna Bridge |
142:4eea097334d6 | 152 | #endif |
Anna Bridge |
142:4eea097334d6 | 153 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG12B) |
Anna Bridge |
142:4eea097334d6 | 154 | systemPartFamilyMighty12B = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG12B, /**< EFR32 Mighty Gecko Series 1 Config 2 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 155 | #endif |
Anna Bridge |
142:4eea097334d6 | 156 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG12V) |
Anna Bridge |
142:4eea097334d6 | 157 | systemPartFamilyMighty12V = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG12V, /**< EFR32 Mighty Gecko Series 1 Config 2 Value Device Family */ |
Anna Bridge |
142:4eea097334d6 | 158 | #endif |
Anna Bridge |
142:4eea097334d6 | 159 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG12P) |
Anna Bridge |
142:4eea097334d6 | 160 | systemPartFamilyBlue12P = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG12P, /**< EFR32 Blue Gecko Series 1 Config 2 Premium Device Family */ |
Anna Bridge |
142:4eea097334d6 | 161 | #endif |
Anna Bridge |
142:4eea097334d6 | 162 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG12B) |
Anna Bridge |
142:4eea097334d6 | 163 | systemPartFamilyBlue12B = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG12B, /**< EFR32 Blue Gecko Series 1 Config 2 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 164 | #endif |
Anna Bridge |
142:4eea097334d6 | 165 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG12V) |
Anna Bridge |
142:4eea097334d6 | 166 | systemPartFamilyBlue12V = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG12V, /**< EFR32 Blue Gecko Series 1 Config 2 Value Device Family */ |
Anna Bridge |
142:4eea097334d6 | 167 | #endif |
Anna Bridge |
142:4eea097334d6 | 168 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG12P) |
Anna Bridge |
142:4eea097334d6 | 169 | systemPartFamilyFlex12P = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG12P, /**< EFR32 Flex Gecko Series 1 Config 2 Premium Device Family */ |
Anna Bridge |
142:4eea097334d6 | 170 | #endif |
Anna Bridge |
142:4eea097334d6 | 171 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG12B) |
Anna Bridge |
142:4eea097334d6 | 172 | systemPartFamilyFlex12B = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG12B, /**< EFR32 Flex Gecko Series 1 Config 2 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 173 | #endif |
Anna Bridge |
142:4eea097334d6 | 174 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG12V) |
Anna Bridge |
142:4eea097334d6 | 175 | systemPartFamilyFlex12V = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG12V, /**< EFR32 Flex Gecko Series 1 Config 2 Value Device Family */ |
Anna Bridge |
142:4eea097334d6 | 176 | #endif |
Anna Bridge |
142:4eea097334d6 | 177 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG13P) |
Anna Bridge |
142:4eea097334d6 | 178 | systemPartFamilyMighty13P = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG13P, /**< EFR32 Mighty Gecko Series 1 Config 3 Premium Device Family */ |
Anna Bridge |
142:4eea097334d6 | 179 | #endif |
Anna Bridge |
142:4eea097334d6 | 180 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG13B) |
Anna Bridge |
142:4eea097334d6 | 181 | systemPartFamilyMighty13B = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG13B, /**< EFR32 Mighty Gecko Series 1 Config 3 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 182 | #endif |
Anna Bridge |
142:4eea097334d6 | 183 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG13V) |
Anna Bridge |
142:4eea097334d6 | 184 | systemPartFamilyMighty13V = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG13V, /**< EFR32 Mighty Gecko Series 1 Config 3 Value Device Family */ |
Anna Bridge |
142:4eea097334d6 | 185 | #endif |
Anna Bridge |
142:4eea097334d6 | 186 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG13P) |
Anna Bridge |
142:4eea097334d6 | 187 | systemPartFamilyBlue13P = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG13P, /**< EFR32 Blue Gecko Series 1 Config 3 Premium Device Family */ |
Anna Bridge |
142:4eea097334d6 | 188 | #endif |
Anna Bridge |
142:4eea097334d6 | 189 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG13B) |
Anna Bridge |
142:4eea097334d6 | 190 | systemPartFamilyBlue13B = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG13B, /**< EFR32 Blue Gecko Series 1 Config 3 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 191 | #endif |
Anna Bridge |
142:4eea097334d6 | 192 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG13V) |
Anna Bridge |
142:4eea097334d6 | 193 | systemPartFamilyBlue13V = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG13V, /**< EFR32 Blue Gecko Series 1 Config 3 Value Device Family */ |
Anna Bridge |
142:4eea097334d6 | 194 | #endif |
Anna Bridge |
142:4eea097334d6 | 195 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG13P) |
Anna Bridge |
142:4eea097334d6 | 196 | systemPartFamilyFlex13P = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG13P, /**< EFR32 Flex Gecko Series 1 Config 3 Premium Device Family */ |
Anna Bridge |
142:4eea097334d6 | 197 | #endif |
Anna Bridge |
142:4eea097334d6 | 198 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG13B) |
Anna Bridge |
142:4eea097334d6 | 199 | systemPartFamilyFlex13B = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG13B, /**< EFR32 Flex Gecko Series 1 Config 3 Basic Device Family */ |
Anna Bridge |
142:4eea097334d6 | 200 | #endif |
Anna Bridge |
142:4eea097334d6 | 201 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG13V) |
Anna Bridge |
142:4eea097334d6 | 202 | systemPartFamilyFlex13V = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG13V, /**< EFR32 Flex Gecko Series 1 Config 3 Value Device Family */ |
Anna Bridge |
142:4eea097334d6 | 203 | #endif |
Anna Bridge |
160:5571c4ff569f | 204 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG14P) |
Anna Bridge |
160:5571c4ff569f | 205 | systemPartFamilyMighty14P = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG14P, /**< EFR32 Mighty Gecko Series 1 Config 4 Premium Device Family */ |
Anna Bridge |
160:5571c4ff569f | 206 | #endif |
Anna Bridge |
160:5571c4ff569f | 207 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG14B) |
Anna Bridge |
160:5571c4ff569f | 208 | systemPartFamilyMighty14B = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG14B, /**< EFR32 Mighty Gecko Series 1 Config 4 Basic Device Family */ |
Anna Bridge |
160:5571c4ff569f | 209 | #endif |
Anna Bridge |
160:5571c4ff569f | 210 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32MG14V) |
Anna Bridge |
160:5571c4ff569f | 211 | systemPartFamilyMighty14V = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG14V, /**< EFR32 Mighty Gecko Series 1 Config 4 Value Device Family */ |
Anna Bridge |
160:5571c4ff569f | 212 | #endif |
Anna Bridge |
160:5571c4ff569f | 213 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG14P) |
Anna Bridge |
160:5571c4ff569f | 214 | systemPartFamilyBlue14P = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG14P, /**< EFR32 Blue Gecko Series 1 Config 4 Premium Device Family */ |
Anna Bridge |
160:5571c4ff569f | 215 | #endif |
Anna Bridge |
160:5571c4ff569f | 216 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG14B) |
Anna Bridge |
160:5571c4ff569f | 217 | systemPartFamilyBlue14B = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG14B, /**< EFR32 Blue Gecko Series 1 Config 4 Basic Device Family */ |
Anna Bridge |
160:5571c4ff569f | 218 | #endif |
Anna Bridge |
160:5571c4ff569f | 219 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32BG14V) |
Anna Bridge |
160:5571c4ff569f | 220 | systemPartFamilyBlue14V = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG14V, /**< EFR32 Blue Gecko Series 1 Config 4 Value Device Family */ |
Anna Bridge |
160:5571c4ff569f | 221 | #endif |
Anna Bridge |
160:5571c4ff569f | 222 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG14P) |
Anna Bridge |
160:5571c4ff569f | 223 | systemPartFamilyFlex14P = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG14P, /**< EFR32 Flex Gecko Series 1 Config 4 Premium Device Family */ |
Anna Bridge |
160:5571c4ff569f | 224 | #endif |
Anna Bridge |
160:5571c4ff569f | 225 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG14B) |
Anna Bridge |
160:5571c4ff569f | 226 | systemPartFamilyFlex14B = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG14B, /**< EFR32 Flex Gecko Series 1 Config 4 Basic Device Family */ |
Anna Bridge |
160:5571c4ff569f | 227 | #endif |
Anna Bridge |
160:5571c4ff569f | 228 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_EFR32FG14V) |
Anna Bridge |
160:5571c4ff569f | 229 | systemPartFamilyFlex14V = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG14V, /**< EFR32 Flex Gecko Series 1 Config 4 Value Device Family */ |
Anna Bridge |
160:5571c4ff569f | 230 | #endif |
Anna Bridge |
142:4eea097334d6 | 231 | |
Anna Bridge |
142:4eea097334d6 | 232 | /* Deprecated family #defines */ |
Anna Bridge |
142:4eea097334d6 | 233 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_G) |
Anna Bridge |
142:4eea097334d6 | 234 | systemPartFamilyGecko = _DEVINFO_PART_DEVICE_FAMILY_G, /**< Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 235 | #endif |
Anna Bridge |
142:4eea097334d6 | 236 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_GG) |
Anna Bridge |
142:4eea097334d6 | 237 | systemPartFamilyGiant = _DEVINFO_PART_DEVICE_FAMILY_GG, /**< Giant Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 238 | #endif |
Anna Bridge |
142:4eea097334d6 | 239 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_TG) |
Anna Bridge |
142:4eea097334d6 | 240 | systemPartFamilyTiny = _DEVINFO_PART_DEVICE_FAMILY_TG, /**< Tiny Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 241 | #endif |
Anna Bridge |
142:4eea097334d6 | 242 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_LG) |
Anna Bridge |
142:4eea097334d6 | 243 | systemPartFamilyLeopard = _DEVINFO_PART_DEVICE_FAMILY_LG, /**< Leopard Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 244 | #endif |
Anna Bridge |
142:4eea097334d6 | 245 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_WG) |
Anna Bridge |
142:4eea097334d6 | 246 | systemPartFamilyWonder = _DEVINFO_PART_DEVICE_FAMILY_WG, /**< Wonder Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 247 | #endif |
Anna Bridge |
142:4eea097334d6 | 248 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_ZG) |
Anna Bridge |
142:4eea097334d6 | 249 | systemPartFamilyZero = _DEVINFO_PART_DEVICE_FAMILY_ZG, /**< Zero Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 250 | #endif |
Anna Bridge |
142:4eea097334d6 | 251 | #if defined(_DEVINFO_PART_DEVICE_FAMILY_HG) |
Anna Bridge |
142:4eea097334d6 | 252 | systemPartFamilyHappy = _DEVINFO_PART_DEVICE_FAMILY_HG, /**< Happy Gecko Device Family */ |
Anna Bridge |
142:4eea097334d6 | 253 | #endif |
Anna Bridge |
142:4eea097334d6 | 254 | systemPartFamilyUnknown = 0xFF /**< Unknown Device Family. |
Anna Bridge |
142:4eea097334d6 | 255 | The family id is missing |
Anna Bridge |
142:4eea097334d6 | 256 | on unprogrammed parts. */ |
Anna Bridge |
142:4eea097334d6 | 257 | } SYSTEM_PartFamily_TypeDef; |
Anna Bridge |
142:4eea097334d6 | 258 | |
Anna Bridge |
142:4eea097334d6 | 259 | /******************************************************************************* |
Anna Bridge |
142:4eea097334d6 | 260 | ******************************* STRUCTS *********************************** |
Anna Bridge |
142:4eea097334d6 | 261 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 262 | |
Anna Bridge |
142:4eea097334d6 | 263 | /** Chip revision details */ |
Anna Bridge |
160:5571c4ff569f | 264 | typedef struct { |
Anna Bridge |
142:4eea097334d6 | 265 | uint8_t minor; /**< Minor revision number */ |
Anna Bridge |
142:4eea097334d6 | 266 | uint8_t major; /**< Major revision number */ |
Anna Bridge |
142:4eea097334d6 | 267 | uint8_t family;/**< Device family number */ |
Anna Bridge |
142:4eea097334d6 | 268 | } SYSTEM_ChipRevision_TypeDef; |
Anna Bridge |
142:4eea097334d6 | 269 | |
Anna Bridge |
142:4eea097334d6 | 270 | #if defined(__FPU_PRESENT) && (__FPU_PRESENT == 1) |
Anna Bridge |
142:4eea097334d6 | 271 | /** Floating point coprocessor access modes. */ |
Anna Bridge |
160:5571c4ff569f | 272 | typedef enum { |
Anna Bridge |
142:4eea097334d6 | 273 | fpuAccessDenied = (0x0 << 20), /**< Access denied, any attempted access generates a NOCP UsageFault. */ |
Anna Bridge |
142:4eea097334d6 | 274 | fpuAccessPrivilegedOnly = (0x5 << 20), /**< Privileged access only, an unprivileged access generates a NOCP UsageFault. */ |
Anna Bridge |
142:4eea097334d6 | 275 | fpuAccessReserved = (0xA << 20), /**< Reserved. */ |
Anna Bridge |
142:4eea097334d6 | 276 | fpuAccessFull = (0xF << 20) /**< Full access. */ |
Anna Bridge |
142:4eea097334d6 | 277 | } SYSTEM_FpuAccess_TypeDef; |
Anna Bridge |
142:4eea097334d6 | 278 | #endif |
Anna Bridge |
142:4eea097334d6 | 279 | |
Anna Bridge |
142:4eea097334d6 | 280 | /** DEVINFO calibration address/value pair */ |
Anna Bridge |
160:5571c4ff569f | 281 | typedef struct { |
Anna Bridge |
142:4eea097334d6 | 282 | uint32_t address; /**< Peripheral calibration register address */ |
Anna Bridge |
142:4eea097334d6 | 283 | uint32_t calValue; /**< Calibration value for register at address */ |
Anna Bridge |
142:4eea097334d6 | 284 | } |
Anna Bridge |
142:4eea097334d6 | 285 | SYSTEM_CalAddrVal_TypeDef; |
Anna Bridge |
142:4eea097334d6 | 286 | |
Anna Bridge |
142:4eea097334d6 | 287 | /******************************************************************************* |
Anna Bridge |
142:4eea097334d6 | 288 | ***************************** PROTOTYPES ********************************** |
Anna Bridge |
142:4eea097334d6 | 289 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 290 | |
Anna Bridge |
142:4eea097334d6 | 291 | void SYSTEM_ChipRevisionGet(SYSTEM_ChipRevision_TypeDef *rev); |
Anna Bridge |
142:4eea097334d6 | 292 | bool SYSTEM_GetCalibrationValue(volatile uint32_t *regAddress); |
Anna Bridge |
142:4eea097334d6 | 293 | |
Anna Bridge |
142:4eea097334d6 | 294 | #if defined(__FPU_PRESENT) && (__FPU_PRESENT == 1) |
Anna Bridge |
142:4eea097334d6 | 295 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 296 | * @brief |
Anna Bridge |
142:4eea097334d6 | 297 | * Set floating point coprocessor (FPU) access mode. |
Anna Bridge |
142:4eea097334d6 | 298 | * |
Anna Bridge |
142:4eea097334d6 | 299 | * @param[in] accessMode |
Anna Bridge |
142:4eea097334d6 | 300 | * Floating point coprocessor access mode. See @ref SYSTEM_FpuAccess_TypeDef |
Anna Bridge |
142:4eea097334d6 | 301 | * for details. |
Anna Bridge |
142:4eea097334d6 | 302 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 303 | __STATIC_INLINE void SYSTEM_FpuAccessModeSet(SYSTEM_FpuAccess_TypeDef accessMode) |
Anna Bridge |
142:4eea097334d6 | 304 | { |
Anna Bridge |
142:4eea097334d6 | 305 | SCB->CPACR = (SCB->CPACR & ~(0xF << 20)) | accessMode; |
Anna Bridge |
142:4eea097334d6 | 306 | } |
Anna Bridge |
142:4eea097334d6 | 307 | #endif |
Anna Bridge |
142:4eea097334d6 | 308 | |
Anna Bridge |
142:4eea097334d6 | 309 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 310 | * @brief |
Anna Bridge |
142:4eea097334d6 | 311 | * Get the unique number for this device. |
Anna Bridge |
142:4eea097334d6 | 312 | * |
Anna Bridge |
142:4eea097334d6 | 313 | * @return |
Anna Bridge |
142:4eea097334d6 | 314 | * Unique number for this device. |
Anna Bridge |
142:4eea097334d6 | 315 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 316 | __STATIC_INLINE uint64_t SYSTEM_GetUnique(void) |
Anna Bridge |
142:4eea097334d6 | 317 | { |
Anna Bridge |
142:4eea097334d6 | 318 | uint32_t tmp = DEVINFO->UNIQUEL; |
Anna Bridge |
142:4eea097334d6 | 319 | return (uint64_t)((uint64_t)DEVINFO->UNIQUEH << 32) | tmp; |
Anna Bridge |
142:4eea097334d6 | 320 | } |
Anna Bridge |
142:4eea097334d6 | 321 | |
Anna Bridge |
142:4eea097334d6 | 322 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 323 | * @brief |
Anna Bridge |
142:4eea097334d6 | 324 | * Get the production revision for this part. |
Anna Bridge |
142:4eea097334d6 | 325 | * |
Anna Bridge |
142:4eea097334d6 | 326 | * @return |
Anna Bridge |
142:4eea097334d6 | 327 | * Production revision for this part. |
Anna Bridge |
142:4eea097334d6 | 328 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 329 | __STATIC_INLINE uint8_t SYSTEM_GetProdRev(void) |
Anna Bridge |
142:4eea097334d6 | 330 | { |
Anna Bridge |
142:4eea097334d6 | 331 | return (DEVINFO->PART & _DEVINFO_PART_PROD_REV_MASK) |
Anna Bridge |
142:4eea097334d6 | 332 | >> _DEVINFO_PART_PROD_REV_SHIFT; |
Anna Bridge |
142:4eea097334d6 | 333 | } |
Anna Bridge |
142:4eea097334d6 | 334 | |
Anna Bridge |
142:4eea097334d6 | 335 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 336 | * @brief |
Anna Bridge |
142:4eea097334d6 | 337 | * Get the SRAM size (in KB). |
Anna Bridge |
142:4eea097334d6 | 338 | * |
Anna Bridge |
142:4eea097334d6 | 339 | * @note |
Anna Bridge |
142:4eea097334d6 | 340 | * This function retrievs the correct value by reading the chip device |
Anna Bridge |
142:4eea097334d6 | 341 | * info structure. If your binary is made for one specific device only, |
Anna Bridge |
142:4eea097334d6 | 342 | * @ref SRAM_SIZE can be used instead. |
Anna Bridge |
142:4eea097334d6 | 343 | * |
Anna Bridge |
142:4eea097334d6 | 344 | * @return |
Anna Bridge |
142:4eea097334d6 | 345 | * The size of the internal SRAM (in KB). |
Anna Bridge |
142:4eea097334d6 | 346 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 347 | __STATIC_INLINE uint16_t SYSTEM_GetSRAMSize(void) |
Anna Bridge |
142:4eea097334d6 | 348 | { |
Anna Bridge |
142:4eea097334d6 | 349 | uint16_t sizekb; |
Anna Bridge |
142:4eea097334d6 | 350 | |
Anna Bridge |
142:4eea097334d6 | 351 | #if defined(_EFM32_GECKO_FAMILY) |
Anna Bridge |
142:4eea097334d6 | 352 | /* Early Gecko devices had a bug where SRAM and Flash size were swapped. */ |
Anna Bridge |
160:5571c4ff569f | 353 | if (SYSTEM_GetProdRev() < 5) { |
Anna Bridge |
142:4eea097334d6 | 354 | sizekb = (DEVINFO->MSIZE & _DEVINFO_MSIZE_FLASH_MASK) |
Anna Bridge |
160:5571c4ff569f | 355 | >> _DEVINFO_MSIZE_FLASH_SHIFT; |
Anna Bridge |
142:4eea097334d6 | 356 | } |
Anna Bridge |
142:4eea097334d6 | 357 | #endif |
Anna Bridge |
142:4eea097334d6 | 358 | sizekb = (DEVINFO->MSIZE & _DEVINFO_MSIZE_SRAM_MASK) |
Anna Bridge |
160:5571c4ff569f | 359 | >> _DEVINFO_MSIZE_SRAM_SHIFT; |
Anna Bridge |
142:4eea097334d6 | 360 | |
Anna Bridge |
142:4eea097334d6 | 361 | #if defined(_SILICON_LABS_GECKO_INTERNAL_SDID_80) && defined(_EFR_DEVICE) |
Anna Bridge |
142:4eea097334d6 | 362 | /* Do not include EFR32xG1 RAMH */ |
Anna Bridge |
142:4eea097334d6 | 363 | sizekb--; |
Anna Bridge |
142:4eea097334d6 | 364 | #endif |
Anna Bridge |
142:4eea097334d6 | 365 | |
Anna Bridge |
142:4eea097334d6 | 366 | return sizekb; |
Anna Bridge |
142:4eea097334d6 | 367 | } |
Anna Bridge |
142:4eea097334d6 | 368 | |
Anna Bridge |
142:4eea097334d6 | 369 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 370 | * @brief |
Anna Bridge |
142:4eea097334d6 | 371 | * Get the flash size (in KB). |
Anna Bridge |
142:4eea097334d6 | 372 | * |
Anna Bridge |
142:4eea097334d6 | 373 | * @note |
Anna Bridge |
142:4eea097334d6 | 374 | * This function retrievs the correct value by reading the chip device |
Anna Bridge |
142:4eea097334d6 | 375 | * info structure. If your binary is made for one specific device only, |
Anna Bridge |
142:4eea097334d6 | 376 | * @ref FLASH_SIZE can be used instead. |
Anna Bridge |
142:4eea097334d6 | 377 | * |
Anna Bridge |
142:4eea097334d6 | 378 | * @return |
Anna Bridge |
142:4eea097334d6 | 379 | * The size of the internal flash (in KB). |
Anna Bridge |
142:4eea097334d6 | 380 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 381 | __STATIC_INLINE uint16_t SYSTEM_GetFlashSize(void) |
Anna Bridge |
142:4eea097334d6 | 382 | { |
Anna Bridge |
142:4eea097334d6 | 383 | #if defined(_EFM32_GECKO_FAMILY) |
Anna Bridge |
142:4eea097334d6 | 384 | /* Early Gecko devices had a bug where SRAM and Flash size were swapped. */ |
Anna Bridge |
160:5571c4ff569f | 385 | if (SYSTEM_GetProdRev() < 5) { |
Anna Bridge |
142:4eea097334d6 | 386 | return (DEVINFO->MSIZE & _DEVINFO_MSIZE_SRAM_MASK) |
Anna Bridge |
142:4eea097334d6 | 387 | >> _DEVINFO_MSIZE_SRAM_SHIFT; |
Anna Bridge |
142:4eea097334d6 | 388 | } |
Anna Bridge |
142:4eea097334d6 | 389 | #endif |
Anna Bridge |
142:4eea097334d6 | 390 | return (DEVINFO->MSIZE & _DEVINFO_MSIZE_FLASH_MASK) |
Anna Bridge |
142:4eea097334d6 | 391 | >> _DEVINFO_MSIZE_FLASH_SHIFT; |
Anna Bridge |
142:4eea097334d6 | 392 | } |
Anna Bridge |
142:4eea097334d6 | 393 | |
Anna Bridge |
142:4eea097334d6 | 394 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 395 | * @brief |
Anna Bridge |
142:4eea097334d6 | 396 | * Get the flash page size in bytes. |
Anna Bridge |
142:4eea097334d6 | 397 | * |
Anna Bridge |
142:4eea097334d6 | 398 | * @note |
Anna Bridge |
142:4eea097334d6 | 399 | * This function retrievs the correct value by reading the chip device |
Anna Bridge |
142:4eea097334d6 | 400 | * info structure. If your binary is made for one specific device only, |
Anna Bridge |
142:4eea097334d6 | 401 | * @ref FLASH_PAGE_SIZE can be used instead. |
Anna Bridge |
142:4eea097334d6 | 402 | * |
Anna Bridge |
142:4eea097334d6 | 403 | * @return |
Anna Bridge |
142:4eea097334d6 | 404 | * The page size of the internal flash in bytes. |
Anna Bridge |
142:4eea097334d6 | 405 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 406 | __STATIC_INLINE uint32_t SYSTEM_GetFlashPageSize(void) |
Anna Bridge |
142:4eea097334d6 | 407 | { |
Anna Bridge |
142:4eea097334d6 | 408 | uint32_t tmp; |
Anna Bridge |
142:4eea097334d6 | 409 | |
Anna Bridge |
160:5571c4ff569f | 410 | #if defined(_SILICON_LABS_32B_SERIES_0) |
Anna Bridge |
142:4eea097334d6 | 411 | #if defined(_EFM32_GIANT_FAMILY) |
Anna Bridge |
160:5571c4ff569f | 412 | if (SYSTEM_GetProdRev() < 18) { |
Anna Bridge |
142:4eea097334d6 | 413 | /* Early Giant/Leopard devices did not have MEMINFO in DEVINFO. */ |
Anna Bridge |
142:4eea097334d6 | 414 | return FLASH_PAGE_SIZE; |
Anna Bridge |
142:4eea097334d6 | 415 | } |
Anna Bridge |
142:4eea097334d6 | 416 | #elif defined(_EFM32_ZERO_FAMILY) |
Anna Bridge |
160:5571c4ff569f | 417 | if (SYSTEM_GetProdRev() < 24) { |
Anna Bridge |
142:4eea097334d6 | 418 | /* Early Zero devices have an incorrect DEVINFO flash page size */ |
Anna Bridge |
142:4eea097334d6 | 419 | return FLASH_PAGE_SIZE; |
Anna Bridge |
142:4eea097334d6 | 420 | } |
Anna Bridge |
142:4eea097334d6 | 421 | #endif |
Anna Bridge |
160:5571c4ff569f | 422 | #endif |
Anna Bridge |
142:4eea097334d6 | 423 | |
Anna Bridge |
142:4eea097334d6 | 424 | tmp = (DEVINFO->MEMINFO & _DEVINFO_MEMINFO_FLASH_PAGE_SIZE_MASK) |
Anna Bridge |
142:4eea097334d6 | 425 | >> _DEVINFO_MEMINFO_FLASH_PAGE_SIZE_SHIFT; |
Anna Bridge |
142:4eea097334d6 | 426 | |
Anna Bridge |
142:4eea097334d6 | 427 | return 1 << ((tmp + 10) & 0xFF); |
Anna Bridge |
142:4eea097334d6 | 428 | } |
Anna Bridge |
142:4eea097334d6 | 429 | |
Anna Bridge |
160:5571c4ff569f | 430 | #if defined(_DEVINFO_DEVINFOREV_DEVINFOREV_MASK) |
Anna Bridge |
142:4eea097334d6 | 431 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 432 | * @brief |
Anna Bridge |
142:4eea097334d6 | 433 | * Get DEVINFO revision. |
Anna Bridge |
142:4eea097334d6 | 434 | * |
Anna Bridge |
142:4eea097334d6 | 435 | * @return |
Anna Bridge |
142:4eea097334d6 | 436 | * Revision of the DEVINFO contents. |
Anna Bridge |
142:4eea097334d6 | 437 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 438 | __STATIC_INLINE uint8_t SYSTEM_GetDevinfoRev(void) |
Anna Bridge |
142:4eea097334d6 | 439 | { |
Anna Bridge |
142:4eea097334d6 | 440 | return (DEVINFO->DEVINFOREV & _DEVINFO_DEVINFOREV_DEVINFOREV_MASK) |
Anna Bridge |
160:5571c4ff569f | 441 | >> _DEVINFO_DEVINFOREV_DEVINFOREV_SHIFT; |
Anna Bridge |
142:4eea097334d6 | 442 | } |
Anna Bridge |
142:4eea097334d6 | 443 | #endif |
Anna Bridge |
142:4eea097334d6 | 444 | |
Anna Bridge |
142:4eea097334d6 | 445 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 446 | * @brief |
Anna Bridge |
142:4eea097334d6 | 447 | * Get part number of the MCU. |
Anna Bridge |
142:4eea097334d6 | 448 | * |
Anna Bridge |
142:4eea097334d6 | 449 | * @return |
Anna Bridge |
142:4eea097334d6 | 450 | * The part number of the MCU. |
Anna Bridge |
142:4eea097334d6 | 451 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 452 | __STATIC_INLINE uint16_t SYSTEM_GetPartNumber(void) |
Anna Bridge |
142:4eea097334d6 | 453 | { |
Anna Bridge |
142:4eea097334d6 | 454 | return (DEVINFO->PART & _DEVINFO_PART_DEVICE_NUMBER_MASK) |
Anna Bridge |
142:4eea097334d6 | 455 | >> _DEVINFO_PART_DEVICE_NUMBER_SHIFT; |
Anna Bridge |
142:4eea097334d6 | 456 | } |
Anna Bridge |
142:4eea097334d6 | 457 | |
Anna Bridge |
142:4eea097334d6 | 458 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 459 | * @brief |
Anna Bridge |
142:4eea097334d6 | 460 | * Get family identifier of the MCU. |
Anna Bridge |
142:4eea097334d6 | 461 | * |
Anna Bridge |
142:4eea097334d6 | 462 | * @note |
Anna Bridge |
142:4eea097334d6 | 463 | * This function retrievs the family id by reading the chip's device info |
Anna Bridge |
142:4eea097334d6 | 464 | * structure in flash memory. The user can retrieve the family id directly |
Anna Bridge |
142:4eea097334d6 | 465 | * by reading the DEVINFO->PART item and decode with the mask and shift |
Anna Bridge |
142:4eea097334d6 | 466 | * \#defines defined in \<part_family\>_devinfo.h (please refer to code |
Anna Bridge |
142:4eea097334d6 | 467 | * below for details). |
Anna Bridge |
142:4eea097334d6 | 468 | * |
Anna Bridge |
142:4eea097334d6 | 469 | * @return |
Anna Bridge |
142:4eea097334d6 | 470 | * The family identifier of the MCU. |
Anna Bridge |
142:4eea097334d6 | 471 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 472 | __STATIC_INLINE SYSTEM_PartFamily_TypeDef SYSTEM_GetFamily(void) |
Anna Bridge |
142:4eea097334d6 | 473 | { |
Anna Bridge |
142:4eea097334d6 | 474 | return (SYSTEM_PartFamily_TypeDef) |
Anna Bridge |
142:4eea097334d6 | 475 | ((DEVINFO->PART & _DEVINFO_PART_DEVICE_FAMILY_MASK) |
Anna Bridge |
142:4eea097334d6 | 476 | >> _DEVINFO_PART_DEVICE_FAMILY_SHIFT); |
Anna Bridge |
142:4eea097334d6 | 477 | } |
Anna Bridge |
142:4eea097334d6 | 478 | |
Anna Bridge |
142:4eea097334d6 | 479 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 480 | * @brief |
Anna Bridge |
142:4eea097334d6 | 481 | * Get the calibration temperature (in degrees Celsius). |
Anna Bridge |
142:4eea097334d6 | 482 | * |
Anna Bridge |
142:4eea097334d6 | 483 | * @return |
Anna Bridge |
142:4eea097334d6 | 484 | * The calibration temperature in Celsius. |
Anna Bridge |
142:4eea097334d6 | 485 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 486 | __STATIC_INLINE uint8_t SYSTEM_GetCalibrationTemperature(void) |
Anna Bridge |
142:4eea097334d6 | 487 | { |
Anna Bridge |
142:4eea097334d6 | 488 | return (DEVINFO->CAL & _DEVINFO_CAL_TEMP_MASK) |
Anna Bridge |
142:4eea097334d6 | 489 | >> _DEVINFO_CAL_TEMP_SHIFT; |
Anna Bridge |
142:4eea097334d6 | 490 | } |
Anna Bridge |
142:4eea097334d6 | 491 | |
Anna Bridge |
142:4eea097334d6 | 492 | /** @} (end addtogroup SYSTEM) */ |
Anna Bridge |
142:4eea097334d6 | 493 | /** @} (end addtogroup emlib) */ |
Anna Bridge |
142:4eea097334d6 | 494 | |
Anna Bridge |
142:4eea097334d6 | 495 | #ifdef __cplusplus |
Anna Bridge |
142:4eea097334d6 | 496 | } |
Anna Bridge |
142:4eea097334d6 | 497 | #endif |
Anna Bridge |
142:4eea097334d6 | 498 | |
Anna Bridge |
142:4eea097334d6 | 499 | #endif /* EM_SYSTEM_H */ |