1 /**************************************************************************//** 2 * @file fmc_reg.h 3 * @version V1.00 4 * @brief FMC register definition header file 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 * @copyright (C) 2017-2020 Nuvoton Technology Corp. All rights reserved. 8 *****************************************************************************/ 9 #ifndef __FMC_REG_H__ 10 #define __FMC_REG_H__ 11 12 #if defined ( __CC_ARM ) 13 #pragma anon_unions 14 #endif 15 16 /** 17 @addtogroup REGISTER Control Register 18 @{ 19 */ 20 21 /** 22 @addtogroup FMC Flash Memory Controller (FMC) 23 Memory Mapped Structure for FMC Controller 24 @{ */ 25 26 typedef struct 27 { 28 /** 29 * @var FMC_T::ISPCTL 30 * Offset: 0x00 ISP Control Register 31 * --------------------------------------------------------------------------------------------------- 32 * |Bits |Field |Descriptions 33 * | :----: | :----: | :---- | 34 * |[0] |ISPEN |ISP Enable Bit (Write Protect) 35 * | | |ISP function enable bit. Set this bit to enable ISP function. 36 * | | |0 = ISP function Disabled. 37 * | | |1 = ISP function Enabled. 38 * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register. 39 * |[1] |BS |Boot Select (Write Protect) 40 * | | |When MBS in CONFIG0 is 1, set/clear this bit to select next booting from LDROM/APROM, respectively 41 * | | |This bit also functions as chip booting status flag, which can be used to check where chip booted from 42 * | | |This bit is initiated with the inversed value of CBS[1] (CONFIG0[7]) after any reset is happened except CPU reset (CPU is 1) or system reset (SYS) is happened 43 * | | |0 = Booting from APROM when MBS (CONFIG0[5]) is 1. 44 * | | |1 = Booting from LDROM when MBS (CONFIG0[5]) is 1. 45 * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register. 46 * |[3] |APUEN |APROM Update Enable Bit (Write Protect) 47 * | | |0 = APROM cannot be updated when the chip runs in APROM. 48 * | | |1 = APROM can be updated when the chip runs in APROM. 49 * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register. 50 * |[4] |CFGUEN |CONFIG Update Enable Bit (Write Protect) 51 * | | |0 = CONFIG cannot be updated. 52 * | | |1 = CONFIG can be updated. 53 * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register. 54 * |[5] |LDUEN |LDROM Update Enable Bit (Write Protect) 55 * | | |LDROM update enable bit. 56 * | | |0 = LDROM cannot be updated. 57 * | | |1 = LDROM can be updated. 58 * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register. 59 * |[6] |ISPFF |ISP Fail Flag (Write Protect) 60 * | | |This bit is set by hardware when a triggered ISP meets any of the following conditions: 61 * | | |This bit needs to be cleared by writing 1 to it. 62 * | | |(1) APROM writes to itself if APUEN is set to 0. 63 * | | |(2) LDROM writes to itself if LDUEN is set to 0. 64 * | | |(3) CONFIG is erased/programmed if CFGUEN is set to 0. 65 * | | |(4) SPROM is erased/programmed if SPUEN is set to 0 66 * | | |(5) SPROM is programmed at SPROM secured mode. 67 * | | |(6) Page Erase command at LOCK mode with ICE connection 68 * | | |(7) Erase or Program command at brown-out detected 69 * | | |(8) Destination address is illegal, such as over an available range. 70 * | | |(9) Invalid ISP commands 71 * | | |(10) Vector address is mapping to SPROM region 72 * | | |(11) KPROM is erased/programmed if KEYLOCK is set to 1 73 * | | |(12) APROM(except for Data Flash) is erased/programmed if KEYLOCK is set to 1 74 * | | |(13) LDROM is erased/programmed if KEYLOCK is set to 1 75 * | | |(14) SPROM is erased/programmed if KEYLOCK is set to 1 and KEYENROM[1:0] are 1. 76 * | | |(15) CONFIG is erased/programmed if KEYLOCK is set to 1 and KEYENROM[1:0] are 1 77 * | | |(16) Invalid operations (except for chip erase) with ICE connection if SBLOCK is not 0x5A 78 * | | |(17) Read any content of boot loader with ICE connection 79 * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register. 80 * |[16] |BL |Boot Loader Booting (Write Protect) 81 * | | |This bit is initiated with the inversed value of MBS (CONFIG0[5]) 82 * | | |Any reset, except CPU reset (CPU is 1) or system reset (SYS), BL will be reloaded 83 * | | |This bit is used to check chip boot from Boot Loader or not 84 * | | |User should keep original value of this bit when updating FMC_ISPCTL register. 85 * | | |0 = Booting from APROM or LDROM. 86 * | | |1 = Booting from Boot Loader. 87 * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register. 88 * @var FMC_T::ISPADDR 89 * Offset: 0x04 ISP Address Register 90 * --------------------------------------------------------------------------------------------------- 91 * |Bits |Field |Descriptions 92 * | :----: | :----: | :---- | 93 * |[31:0] |ISPADDR |ISP Address 94 * | | |The NuMicro M480 series is equipped with embedded flash 95 * | | |ISPADDR[1:0] must be kept 00 for ISP 32-bit operation 96 * | | |ISPADDR[2:0] must be kept 000 for ISP 64-bit operation. 97 * | | |For CRC32 Checksum Calculation command, this field is the flash starting address for checksum calculation, 4 Kbytes alignment is necessary for CRC32 checksum calculation. 98 * | | |For FLASH 32-bit Program, ISP address needs word alignment (4-byte) 99 * | | |For FLASH 64-bit Program, ISP address needs double word alignment (8-byte). 100 * @var FMC_T::ISPDAT 101 * Offset: 0x08 ISP Data Register 102 * --------------------------------------------------------------------------------------------------- 103 * |Bits |Field |Descriptions 104 * | :----: | :----: | :---- | 105 * |[31:0] |ISPDAT |ISP Data 106 * | | |Write data to this register before ISP program operation. 107 * | | |Read data from this register after ISP read operation. 108 * | | |When ISPFF (FMC_ISPCTL[6]) is 1, ISPDAT = 0xffff_ffff 109 * | | |For Run CRC32 Checksum Calculation command, ISPDAT is the memory size (byte) and 4 Kbytes alignment 110 * | | |For ISP Read CRC32 Checksum command, ISPDAT is the checksum result 111 * | | |If ISPDAT = 0x0000_0000, it means that (1) the checksum calculation is in progress, or (2) the memory range for checksum calculation is incorrect 112 * @var FMC_T::ISPCMD 113 * Offset: 0x0C ISP Command Register 114 * --------------------------------------------------------------------------------------------------- 115 * |Bits |Field |Descriptions 116 * | :----: | :----: | :---- | 117 * |[6:0] |CMD |ISP Command 118 * | | |ISP command table is shown below: 119 * | | |0x00= FLASH Read. 120 * | | |0x04= Read Unique ID. 121 * | | |0x08= Read Flash All-One Result. 122 * | | |0x0B= Read Company ID. 123 * | | |0x0C= Read Device ID. 124 * | | |0x0D= Read Checksum. 125 * | | |0x21= FLASH 32-bit Program. 126 * | | |0x22= FLASH Page Erase. Erase any page in two banks, except for OTP. 127 * | | |0x23= FLASH Bank Erase. Erase all pages of APROM in BANK0 or BANK1. 128 * | | |0x27= FLASH Multi-Word Program. 129 * | | |0x28= Run Flash All-One Verification. 130 * | | |0x2C= Bank Remap. 131 * | | |0x2D= Run Checksum Calculation. 132 * | | |0x2E= Vector Remap. 133 * | | |0x40= FLASH 64-bit Read. 134 * | | |0x61= FLASH 64-bit Program. 135 * | | |The other commands are invalid. 136 * @var FMC_T::ISPTRG 137 * Offset: 0x10 ISP Trigger Control Register 138 * --------------------------------------------------------------------------------------------------- 139 * |Bits |Field |Descriptions 140 * | :----: | :----: | :---- | 141 * |[0] |ISPGO |ISP Start Trigger (Write Protect) 142 * | | |Write 1 to start ISP operation and this bit will be cleared to 0 by hardware automatically when ISP operation is finished. 143 * | | |0 = ISP operation is finished. 144 * | | |1 = ISP is progressed. 145 * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register. 146 * @var FMC_T::DFBA 147 * Offset: 0x14 Data Flash Base Address 148 * --------------------------------------------------------------------------------------------------- 149 * |Bits |Field |Descriptions 150 * | :----: | :----: | :---- | 151 * |[31:0] |DFBA |Data Flash Base Address 152 * | | |This register indicates Data Flash start address. It is a read only register. 153 * | | |The Data Flash is shared with APROM. the content of this register is loaded from CONFIG1 154 * | | |This register is valid when DFEN (CONFIG0[0]) =0 . 155 * @var FMC_T::ISPSTS 156 * Offset: 0x40 ISP Status Register 157 * --------------------------------------------------------------------------------------------------- 158 * |Bits |Field |Descriptions 159 * | :----: | :----: | :---- | 160 * |[0] |ISPBUSY |ISP Busy Flag (Read Only) 161 * | | |Write 1 to start ISP operation and this bit will be cleared to 0 by hardware automatically when ISP operation is finished. 162 * | | |This bit is the mirror of ISPGO(FMC_ISPTRG[0]). 163 * | | |0 = ISP operation is finished. 164 * | | |1 = ISP is progressed. 165 * |[2:1] |CBS |Boot Selection of CONFIG (Read Only) 166 * | | |This bit is initiated with the CBS (CONFIG0[7:6]) after any reset is happened except CPU reset (CPU is 1) or system reset (SYS) is happened. 167 * | | |The following function is valid when MBS (FMC_ISPSTS[3])= 1. 168 * | | |00 = LDROM with IAP mode. 169 * | | |01 = LDROM without IAP mode. 170 * | | |10 = APROM with IAP mode. 171 * | | |11 = APROM without IAP mode. 172 * |[3] |MBS |Boot From Boot Loader Selection Flag (Read Only) 173 * | | |This bit is initiated with the MBS (CONFIG0[5]) after any reset is happened except CPU reset (CPU is 1) or system reset (SYS) is happened 174 * | | |0 = Booting from Boot Loader. 175 * | | |1 = Booting from LDROM/APROM.(.see CBS bit setting) 176 * |[5] |PGFF |Flash Program with Fast Verification Flag (Read Only) 177 * | | |This bit is set if data is mismatched at ISP programming verification 178 * | | |This bit is clear by performing ISP flash erase or ISP read CID operation 179 * | | |0 = Flash Program is success. 180 * | | |1 = Flash Program is fail. Program data is different with data in the flash memory 181 * |[6] |ISPFF |ISP Fail Flag (Write Protect) 182 * | | |This bit is the mirror of ISPFF (FMC_ISPCTL[6]), it needs to be cleared by writing 1 to FMC_ISPCTL[6] or FMC_ISPSTS[6] 183 * | | |This bit is set by hardware when a triggered ISP meets any of the following conditions: 184 * | | |(1) APROM writes to itself if APUEN is set to 0. 185 * | | |(2) LDROM writes to itself if LDUEN is set to 0. 186 * | | |(3) CONFIG is erased/programmed if CFGUEN is set to 0. 187 * | | |(4) SPROM is erased/programmed if SPUEN is set to 0 188 * | | |(5) SPROM is programmed at SPROM secured mode. 189 * | | |(6) Page Erase command at LOCK mode with ICE connection 190 * | | |(7) Erase or Program command at brown-out detected 191 * | | |(8) Destination address is illegal, such as over an available range. 192 * | | |(9) Invalid ISP commands 193 * | | |(10) Vector address is mapping to SPROM region. 194 * | | |(11) KPROM is erased/programmed if KEYLOCK is set to 1 195 * | | |(12) APROM(except for Data Flash) is erased/programmed if KEYLOCK is set to 1 196 * | | |(13) LDROM is erased/programmed if KEYLOCK is set to 1 197 * | | |(14) SPROM is erased/programmed if KEYLOCK is set to 1 and KEYENROM[1:0] are 1. 198 * | | |(15) CONFIG is erased/programmed if KEYLOCK is set to 1 and KEYENROM[1:0] are 1. 199 * | | |(16) Invalid operations (except for chip erase) with ICE connection if SBLOCK is not 0x5A 200 * | | |(17) Read any content of boot loader with ICE connection 201 * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register. 202 * |[7] |ALLONE |Flash All-one Verification Flag 203 * | | |This bit is set by hardware if all of flash bits are 1, and clear if flash bits are not all 1 after "Run Flash All-One Verification" complete; this bit also can be clear by writing 1 204 * | | |0 = All of flash bits are 1 after "Run Flash All-One Verification" complete. 205 * | | |1 = Flash bits are not all 1 after "Run Flash All-One Verification" complete. 206 * |[23:9] |VECMAP |Vector Page Mapping Address (Read Only) 207 * | | |All access to 0x0000_0000~0x0000_01FF is remapped to the flash memory address {VECMAP[14:0], 9u2019h000} ~ {VECMAP[14:0], 9u2019h1FF} 208 * |[24] |INTFLAG |ISP Interrupt Flag 209 * | | |0 = ISP Not Finished. 210 * | | |1 = ISP done or ISPFF set. 211 * | | |Note: This function needs to be enabled by FMC_ISPCTRL[24]. 212 * |[28] |ISPCERR |ISP Conflict Error 213 * | | |This bit shows when FMC is doing ISP operation. User cannot access FMC_ISP_ADDR,FMC_ISPDAT,FMC_ISPCMD,FMC_ISPTRG. It would cause ISPFF. 214 * |[30] |FBS |Flash Bank Selection 215 * | | |This bit indicate which bank is selected to boot. 216 * | | |0 = Booting from BANK0. 217 * | | |1 = Booting from BANK1. 218 * @var FMC_T::CYCCTL 219 * Offset: 0x4C Flash Access Cycle Control Register 220 * --------------------------------------------------------------------------------------------------- 221 * |Bits |Field |Descriptions 222 * | :----: | :----: | :---- | 223 * |[3:0] |CYCLE |Flash Access Cycle Control (Write Protect) 224 * | | |0001 = CPU access with one wait cycle if cache miss; flash access cycle is 1;. 225 * | | |The HCLK working frequency range range is<27MHz 226 * | | |0010 = CPU access with two wait cycles if cache miss; flash access cycle is 2;. 227 * | | | The optimized HCLK working frequency range is 27~54 MHz 228 * | | |0011 = CPU access with three wait cycles if cache miss; flash access cycle is 3;. 229 * | | |The optimized HCLK working frequency range is 54~81MHz 230 * | | |0100 = CPU access with four wait cycles if cache miss; flash access cycle is 4;. 231 * | | | The optimized HCLK working frequency range is81~108MHz 232 * | | |0101 = CPU access with five wait cycles if cache miss; flash access cycle is 5;. 233 * | | |The optimized HCLK working frequency range is 108~135MHz 234 * | | |0110 = CPU access with six wait cycles if cache miss; flash access cycle is 6;. 235 * | | | The optimized HCLK working frequency range is 135~162MHz 236 * | | |0111 = CPU access with seven wait cycles if cache miss; flash access cycle is 7;. 237 * | | | The optimized HCLK working frequency range is 162~192MHz 238 * | | |1000 = CPU access with eight wait cycles if cache miss; flash access cycle is 8;. 239 * | | |The optimized HCLK working frequency range is >192MHz 240 * | | |Note: This bit is write protected. Refer to the SYS_REGLCTL register. 241 * @var FMC_T::MPDAT0 242 * Offset: 0x80 ISP Data0 Register 243 * --------------------------------------------------------------------------------------------------- 244 * |Bits |Field |Descriptions 245 * | :----: | :----: | :---- | 246 * |[31:0] |ISPDAT0 |ISP Data 0 247 * | | |This register is the first 32-bit data for 32-bit/64-bit/multi-word programming, and it is also the mirror of FMC_ISPDAT, both registers keep the same data 248 * @var FMC_T::MPDAT1 249 * Offset: 0x84 ISP Data1 Register 250 * --------------------------------------------------------------------------------------------------- 251 * |Bits |Field |Descriptions 252 * | :----: | :----: | :---- | 253 * |[31:0] |ISPDAT1 |ISP Data 1 254 * | | |This register is the second 32-bit data for 64-bit/multi-word programming. 255 * @var FMC_T::MPDAT2 256 * Offset: 0x88 ISP Data2 Register 257 * --------------------------------------------------------------------------------------------------- 258 * |Bits |Field |Descriptions 259 * | :----: | :----: | :---- | 260 * |[31:0] |ISPDAT2 |ISP Data 2 261 * | | |This register is the third 32-bit data for multi-word programming. 262 * @var FMC_T::MPDAT3 263 * Offset: 0x8C ISP Data3 Register 264 * --------------------------------------------------------------------------------------------------- 265 * |Bits |Field |Descriptions 266 * | :----: | :----: | :---- | 267 * |[31:0] |ISPDAT3 |ISP Data 3 268 * | | |This register is the fourth 32-bit data for multi-word programming. 269 * @var FMC_T::MPSTS 270 * Offset: 0xC0 ISP Multi-Program Status Register 271 * --------------------------------------------------------------------------------------------------- 272 * |Bits |Field |Descriptions 273 * | :----: | :----: | :---- | 274 * |[0] |MPBUSY |ISP Multi-word Program Busy Flag (Read Only) 275 * | | |Write 1 to start ISP Multi-Word program operation and this bit will be cleared to 0 by hardware automatically when ISP Multi-Word program operation is finished. 276 * | | |This bit is the mirror of ISPGO(FMC_ISPTRG[0]). 277 * | | |0 = ISP Multi-Word program operation is finished. 278 * | | |1 = ISP Multi-Word program operation is progressed. 279 * |[1] |PPGO |ISP Multi-program Status (Read Only) 280 * | | |0 = ISP multi-word program operation is not active. 281 * | | |1 = ISP multi-word program operation is in progress. 282 * |[2] |ISPFF |ISP Fail Flag (Read Only) 283 * | | |This bit is the mirror of ISPFF (FMC_ISPCTL[6]), it needs to be cleared by writing 1 to FMC_ISPCTL[6] or FMC_ISPSTS[6] 284 * | | |This bit is set by hardware when a triggered ISP meets any of the following conditions: 285 * | | |(1) APROM writes to itself if APUEN is set to 0. 286 * | | |(2) LDROM writes to itself if LDUEN is set to 0. 287 * | | |(3) CONFIG is erased/programmed if CFGUEN is set to 0. 288 * | | |(4) SPROM is erased/programmed if SPUEN is set to 0 289 * | | |(5) SPROM is programmed at SPROM secured mode. 290 * | | |(6) Page Erase command at LOCK mode with ICE connection 291 * | | |(7) Erase or Program command at brown-out detected 292 * | | |(8) Destination address is illegal, such as over an available range. 293 * | | |(9) Invalid ISP commands 294 * | | |(10) Vector address is mapping to SPROM region. 295 * |[4] |D0 |ISP DATA 0 Flag (Read Only) 296 * | | |This bit is set when FMC_MPDAT0 is written and auto-clear to 0 when the FMC_MPDAT0 data is programmed to flash complete. 297 * | | |0 = FMC_MPDAT0 register is empty, or program to flash complete. 298 * | | |1 = FMC_MPDAT0 register has been written, and not program to flash complete. 299 * |[5] |D1 |ISP DATA 1 Flag (Read Only) 300 * | | |This bit is set when FMC_MPDAT1 is written and auto-clear to 0 when the FMC_MPDAT1 data is programmed to flash complete. 301 * | | |0 = FMC_MPDAT1 register is empty, or program to flash complete. 302 * | | |1 = FMC_MPDAT1 register has been written, and not program to flash complete. 303 * |[6] |D2 |ISP DATA 2 Flag (Read Only) 304 * | | |This bit is set when FMC_MPDAT2 is written and auto-clear to 0 when the FMC_MPDAT2 data is programmed to flash complete. 305 * | | |0 = FMC_MPDAT2 register is empty, or program to flash complete. 306 * | | |1 = FMC_MPDAT2 register has been written, and not program to flash complete. 307 * |[7] |D3 |ISP DATA 3 Flag (Read Only) 308 * | | |This bit is set when FMC_MPDAT3 is written and auto-clear to 0 when the FMC_MPDAT3 data is programmed to flash complete. 309 * | | |0 = FMC_MPDAT3 register is empty, or program to flash complete. 310 * | | |1 = FMC_MPDAT3 register has been written, and not program to flash complete. 311 * @var FMC_T::MPADDR 312 * Offset: 0xC4 ISP Multi-Program Address Register 313 * --------------------------------------------------------------------------------------------------- 314 * |Bits |Field |Descriptions 315 * | :----: | :----: | :---- | 316 * |[31:0] |MPADDR |ISP Multi-word Program Address 317 * | | |MPADDR is the address of ISP multi-word program operation when ISPGO flag is 1. 318 * | | |MPADDR will keep the final ISP address when ISP multi-word program is complete. 319 * @var FMC_T::XOMR0STS 320 * Offset: 0xD0 XOM Region 0 Status Register 321 * --------------------------------------------------------------------------------------------------- 322 * |Bits |Field |Descriptions 323 * | :----: | :----: | :---- | 324 * |[7:0] |SIZE |XOM Region 0 Size (Page-aligned) 325 * | | |SIZE is the page number of XOM Region 0. 326 * |[31:8] |BASE |XOM Region 0 Base Address (Page-aligned) 327 * | | |BASE is the base address of XOM Region 0. 328 * @var FMC_T::XOMR1STS 329 * Offset: 0xD4 XOM Region 1 Status Register 330 * --------------------------------------------------------------------------------------------------- 331 * |Bits |Field |Descriptions 332 * | :----: | :----: | :---- | 333 * |[7:0] |SIZE |XOM Region 1 Size (Page-aligned) 334 * | | |SIZE is the page number of XOM Region 1. 335 * |[31:8] |BASE |XOM Region 1 Base Address (Page-aligned) 336 * | | |BASE is the base address of XOM Region 1. 337 * @var FMC_T::XOMR2STS 338 * Offset: 0xD8 XOM Region 2 Status Register 339 * --------------------------------------------------------------------------------------------------- 340 * |Bits |Field |Descriptions 341 * | :----: | :----: | :---- | 342 * |[7:0] |SIZE |XOM Region 2 Size (Page-aligned) 343 * | | |SIZE is the page number of XOM Region 2. 344 * |[31:8] |BASE |XOM Region 2 Base Address (Page-aligned) 345 * | | |BASE is the base address of XOM Region 2. 346 * @var FMC_T::XOMR3STS 347 * Offset: 0xDC XOM Region 3 Status Register 348 * --------------------------------------------------------------------------------------------------- 349 * |Bits |Field |Descriptions 350 * | :----: | :----: | :---- | 351 * |[7:0] |SIZE |XOM Region 3 Size (Page-aligned) 352 * | | |SIZE is the page number of XOM Region 3. 353 * |[31:8] |BASE |XOM Region 3 Base Address (Page-aligned) 354 * | | |BASE is the base address of XOM Region 3. 355 * @var FMC_T::XOMSTS 356 * Offset: 0xE0 XOM Status Register 357 * --------------------------------------------------------------------------------------------------- 358 * |Bits |Field |Descriptions 359 * | :----: | :----: | :---- | 360 * |[0] |XOMR0ON |XOM Region 0 On 361 * | | |XOM Region 0 active status. 362 * | | |0 = No active. 363 * | | |1 = XOM region 0 is active. 364 * |[1] |XOMR1ON |XOM Region 1 On 365 * | | |XOM Region 1 active status. 366 * | | |0 = No active. 367 * | | |1 = XOM region 1 is active. 368 * |[2] |XOMR2ON |XOM Region 2 On 369 * | | |XOM Region 2 active status. 370 * | | |0 = No active. 371 * | | |1 = XOM region 2 is active. 372 * |[3] |XOMR3ON |XOM Region 3 On 373 * | | |XOM Region 3 active status. 374 * | | |0 = No active. 375 * | | |1 = XOM region 3 is active. 376 * |[4] |XOMPEF |XOM Page Erase Function Fail 377 * | | |XOM page erase function status. If XOMPEF is set to 1, user needs to erase XOM region again. 378 * | | |0 = Success. 379 * | | |1 = Fail. 380 * @var FMC_T::APPROT 381 * Offset: 0x110 APROM Protect Register 382 * --------------------------------------------------------------------------------------------------- 383 * |Bits |Field |Descriptions 384 * | :----: | :----: | :---- | 385 * |[n] |APPROENn |APROM Proect enable 386 * | n=0,1..| |This bit indicates which APROM region is protected. 387 * | ..31 | |0 = APROM region n is not protected. 388 * | | |1 = APROM region n is protected. 389 * | | |Note: APROM protect region is 0x0 + n*(0x8000) to 0x7fff + n*(0x8000) 390 */ 391 392 __IO uint32_t ISPCTL; /*!< [0x0000] ISP Control Register */ 393 __IO uint32_t ISPADDR; /*!< [0x0004] ISP Address Register */ 394 __IO uint32_t ISPDAT; /*!< [0x0008] ISP Data Register */ 395 __IO uint32_t ISPCMD; /*!< [0x000c] ISP Command Register */ 396 __IO uint32_t ISPTRG; /*!< [0x0010] ISP Trigger Control Register */ 397 __I uint32_t DFBA; /*!< [0x0014] Data Flash Base Address */ 398 /// @cond HIDDEN_SYMBOLS 399 __I uint32_t RESERVE0[10]; 400 /// @endcond //HIDDEN_SYMBOLS 401 __IO uint32_t ISPSTS; /*!< [0x0040] ISP Status Register */ 402 /// @cond HIDDEN_SYMBOLS 403 __I uint32_t RESERVE1[2]; 404 /// @endcond //HIDDEN_SYMBOLS 405 __IO uint32_t CYCCTL; /*!< [0x004c] Flash Access Cycle Control Register */ 406 /// @cond HIDDEN_SYMBOLS 407 __I uint32_t RESERVE2[12]; 408 /// @endcond //HIDDEN_SYMBOLS 409 __IO uint32_t MPDAT0; /*!< [0x0080] ISP Data0 Register */ 410 __IO uint32_t MPDAT1; /*!< [0x0084] ISP Data1 Register */ 411 __IO uint32_t MPDAT2; /*!< [0x0088] ISP Data2 Register */ 412 __IO uint32_t MPDAT3; /*!< [0x008c] ISP Data3 Register */ 413 /// @cond HIDDEN_SYMBOLS 414 __I uint32_t RESERVE3[12]; 415 /// @endcond //HIDDEN_SYMBOLS 416 __I uint32_t MPSTS; /*!< [0x00c0] ISP Multi-Program Status Register */ 417 __I uint32_t MPADDR; /*!< [0x00c4] ISP Multi-Program Address Register */ 418 /// @cond HIDDEN_SYMBOLS 419 __I uint32_t RESERVE4[2]; 420 /// @endcond //HIDDEN_SYMBOLS 421 __I uint32_t XOMR0STS; /*!< [0x00d0] XOM Region 0 Status Register */ 422 __I uint32_t XOMR1STS; /*!< [0x00d4] XOM Region 1 Status Register */ 423 __I uint32_t XOMR2STS; /*!< [0x00d8] XOM Region 2 Status Register */ 424 __I uint32_t XOMR3STS; /*!< [0x00dc] XOM Region 3 Status Register */ 425 __I uint32_t XOMSTS; /*!< [0x00e0] XOM Status Register */ 426 __I uint32_t RESERVE5[11]; 427 __IO uint32_t APPROT; /*!< [0x0110] XOM Status Register */ 428 429 } FMC_T; 430 431 /** 432 @addtogroup FMC_CONST FMC Bit Field Definition 433 Constant Definitions for FMC Controller 434 @{ */ 435 436 #define FMC_ISPCTL_ISPEN_Pos (0) /*!< FMC_T::ISPCTL: ISPEN Position */ 437 #define FMC_ISPCTL_ISPEN_Msk (0x1ul << FMC_ISPCTL_ISPEN_Pos) /*!< FMC_T::ISPCTL: ISPEN Mask */ 438 439 #define FMC_ISPCTL_BS_Pos (1) /*!< FMC_T::ISPCTL: BS Position */ 440 #define FMC_ISPCTL_BS_Msk (0x1ul << FMC_ISPCTL_BS_Pos) /*!< FMC_T::ISPCTL: BS Mask */ 441 442 #define FMC_ISPCTL_SPUEN_Pos (2) /*!< FMC_T::ISPCTL: SPUEN Position */ 443 #define FMC_ISPCTL_SPUEN_Msk (0x1ul << FMC_ISPCTL_SPUEN_Pos) /*!< FMC_T::ISPCTL: SPUEN Mask */ 444 445 #define FMC_ISPCTL_APUEN_Pos (3) /*!< FMC_T::ISPCTL: APUEN Position */ 446 #define FMC_ISPCTL_APUEN_Msk (0x1ul << FMC_ISPCTL_APUEN_Pos) /*!< FMC_T::ISPCTL: APUEN Mask */ 447 448 #define FMC_ISPCTL_CFGUEN_Pos (4) /*!< FMC_T::ISPCTL: CFGUEN Position */ 449 #define FMC_ISPCTL_CFGUEN_Msk (0x1ul << FMC_ISPCTL_CFGUEN_Pos) /*!< FMC_T::ISPCTL: CFGUEN Mask */ 450 451 #define FMC_ISPCTL_LDUEN_Pos (5) /*!< FMC_T::ISPCTL: LDUEN Position */ 452 #define FMC_ISPCTL_LDUEN_Msk (0x1ul << FMC_ISPCTL_LDUEN_Pos) /*!< FMC_T::ISPCTL: LDUEN Mask */ 453 454 #define FMC_ISPCTL_ISPFF_Pos (6) /*!< FMC_T::ISPCTL: ISPFF Position */ 455 #define FMC_ISPCTL_ISPFF_Msk (0x1ul << FMC_ISPCTL_ISPFF_Pos) /*!< FMC_T::ISPCTL: ISPFF Mask */ 456 457 #define FMC_ISPCTL_BL_Pos (16) /*!< FMC_T::ISPCTL: BL Position */ 458 #define FMC_ISPCTL_BL_Msk (0x1ul << FMC_ISPCTL_BL_Pos) /*!< FMC_T::ISPCTL: BL Mask */ 459 460 #define FMC_ISPADDR_ISPADDR_Pos (0) /*!< FMC_T::ISPADDR: ISPADDR Position */ 461 #define FMC_ISPADDR_ISPADDR_Msk (0xfffffffful << FMC_ISPADDR_ISPADDR_Pos) /*!< FMC_T::ISPADDR: ISPADDR Mask */ 462 463 #define FMC_ISPDAT_ISPDAT_Pos (0) /*!< FMC_T::ISPDAT: ISPDAT Position */ 464 #define FMC_ISPDAT_ISPDAT_Msk (0xfffffffful << FMC_ISPDAT_ISPDAT_Pos) /*!< FMC_T::ISPDAT: ISPDAT Mask */ 465 466 #define FMC_ISPCMD_CMD_Pos (0) /*!< FMC_T::ISPCMD: CMD Position */ 467 #define FMC_ISPCMD_CMD_Msk (0x7ful << FMC_ISPCMD_CMD_Pos) /*!< FMC_T::ISPCMD: CMD Mask */ 468 469 #define FMC_ISPTRG_ISPGO_Pos (0) /*!< FMC_T::ISPTRG: ISPGO Position */ 470 #define FMC_ISPTRG_ISPGO_Msk (0x1ul << FMC_ISPTRG_ISPGO_Pos) /*!< FMC_T::ISPTRG: ISPGO Mask */ 471 472 #define FMC_DFBA_DFBA_Pos (0) /*!< FMC_T::DFBA: DFBA Position */ 473 #define FMC_DFBA_DFBA_Msk (0xfffffffful << FMC_DFBA_DFBA_Pos) /*!< FMC_T::DFBA: DFBA Mask */ 474 475 #define FMC_ISPSTS_ISPBUSY_Pos (0) /*!< FMC_T::ISPSTS: ISPBUSY Position */ 476 #define FMC_ISPSTS_ISPBUSY_Msk (0x1ul << FMC_ISPSTS_ISPBUSY_Pos) /*!< FMC_T::ISPSTS: ISPBUSY Mask */ 477 478 #define FMC_ISPSTS_CBS_Pos (1) /*!< FMC_T::ISPSTS: CBS Position */ 479 #define FMC_ISPSTS_CBS_Msk (0x3ul << FMC_ISPSTS_CBS_Pos) /*!< FMC_T::ISPSTS: CBS Mask */ 480 481 #define FMC_ISPSTS_MBS_Pos (3) /*!< FMC_T::ISPSTS: MBS Position */ 482 #define FMC_ISPSTS_MBS_Msk (0x1ul << FMC_ISPSTS_MBS_Pos) /*!< FMC_T::ISPSTS: MBS Mask */ 483 484 #define FMC_ISPSTS_PGFF_Pos (5) /*!< FMC_T::ISPSTS: PGFF Position */ 485 #define FMC_ISPSTS_PGFF_Msk (0x1ul << FMC_ISPSTS_PGFF_Pos) /*!< FMC_T::ISPSTS: PGFF Mask */ 486 487 #define FMC_ISPSTS_ISPFF_Pos (6) /*!< FMC_T::ISPSTS: ISPFF Position */ 488 #define FMC_ISPSTS_ISPFF_Msk (0x1ul << FMC_ISPSTS_ISPFF_Pos) /*!< FMC_T::ISPSTS: ISPFF Mask */ 489 490 #define FMC_ISPSTS_ALLONE_Pos (7) /*!< FMC_T::ISPSTS: ALLONE Position */ 491 #define FMC_ISPSTS_ALLONE_Msk (0x1ul << FMC_ISPSTS_ALLONE_Pos) /*!< FMC_T::ISPSTS: ALLONE Mask */ 492 493 #define FMC_ISPSTS_VECMAP_Pos (9) /*!< FMC_T::ISPSTS: VECMAP Position */ 494 #define FMC_ISPSTS_VECMAP_Msk (0x7ffful << FMC_ISPSTS_VECMAP_Pos) /*!< FMC_T::ISPSTS: VECMAP Mask */ 495 496 #define FMC_ISPSTS_INTFLAG_Pos (24) /*!< FMC_T::ISPSTS: INTFLAG Position */ 497 #define FMC_ISPSTS_INTFLAG_Msk (0x01ul << FMC_ISPSTS_INTFLAG_Pos) /*!< FMC_T::ISPSTS: INTFLAG Position */ 498 499 #define FMC_ISPSTS_ISPCERR_Pos (28) /*!< FMC_T::ISPSTS: ISPCERR Position */ 500 #define FMC_ISPSTS_ISPCERR_Msk (0x01ul << FMC_ISPSTS_ISPCERR_Pos) /*!< FMC_T::ISPSTS: ISPCERR Position */ 501 502 #define FMC_ISPSTS_FBS_Pos (30) /*!< FMC_T::ISPSTS: FBS Position */ 503 #define FMC_ISPSTS_FBS_Msk (0x1ul << FMC_ISPSTS_FBS_Pos) /*!< FMC_T::ISPSTS: FBS Msk */ 504 505 #define FMC_CYCCTL_CYCLE_Pos (0) /*!< FMC_T::CYCCTL: CYCLE Position */ 506 #define FMC_CYCCTL_CYCLE_Msk (0xful << FMC_CYCCTL_CYCLE_Pos) /*!< FMC_T::CYCCTL: CYCLE Mask */ 507 508 #define FMC_MPDAT0_ISPDAT0_Pos (0) /*!< FMC_T::MPDAT0: ISPDAT0 Position */ 509 #define FMC_MPDAT0_ISPDAT0_Msk (0xfffffffful << FMC_MPDAT0_ISPDAT0_Pos) /*!< FMC_T::MPDAT0: ISPDAT0 Mask */ 510 511 #define FMC_MPDAT1_ISPDAT1_Pos (0) /*!< FMC_T::MPDAT1: ISPDAT1 Position */ 512 #define FMC_MPDAT1_ISPDAT1_Msk (0xfffffffful << FMC_MPDAT1_ISPDAT1_Pos) /*!< FMC_T::MPDAT1: ISPDAT1 Mask */ 513 514 #define FMC_MPDAT2_ISPDAT2_Pos (0) /*!< FMC_T::MPDAT2: ISPDAT2 Position */ 515 #define FMC_MPDAT2_ISPDAT2_Msk (0xfffffffful << FMC_MPDAT2_ISPDAT2_Pos) /*!< FMC_T::MPDAT2: ISPDAT2 Mask */ 516 517 #define FMC_MPDAT3_ISPDAT3_Pos (0) /*!< FMC_T::MPDAT3: ISPDAT3 Position */ 518 #define FMC_MPDAT3_ISPDAT3_Msk (0xfffffffful << FMC_MPDAT3_ISPDAT3_Pos) /*!< FMC_T::MPDAT3: ISPDAT3 Mask */ 519 520 #define FMC_MPSTS_MPBUSY_Pos (0) /*!< FMC_T::MPSTS: MPBUSY Position */ 521 #define FMC_MPSTS_MPBUSY_Msk (0x1ul << FMC_MPSTS_MPBUSY_Pos) /*!< FMC_T::MPSTS: MPBUSY Mask */ 522 523 #define FMC_MPSTS_PPGO_Pos (1) /*!< FMC_T::MPSTS: PPGO Position */ 524 #define FMC_MPSTS_PPGO_Msk (0x1ul << FMC_MPSTS_PPGO_Pos) /*!< FMC_T::MPSTS: PPGO Mask */ 525 526 #define FMC_MPSTS_ISPFF_Pos (2) /*!< FMC_T::MPSTS: ISPFF Position */ 527 #define FMC_MPSTS_ISPFF_Msk (0x1ul << FMC_MPSTS_ISPFF_Pos) /*!< FMC_T::MPSTS: ISPFF Mask */ 528 529 #define FMC_MPSTS_D0_Pos (4) /*!< FMC_T::MPSTS: D0 Position */ 530 #define FMC_MPSTS_D0_Msk (0x1ul << FMC_MPSTS_D0_Pos) /*!< FMC_T::MPSTS: D0 Mask */ 531 532 #define FMC_MPSTS_D1_Pos (5) /*!< FMC_T::MPSTS: D1 Position */ 533 #define FMC_MPSTS_D1_Msk (0x1ul << FMC_MPSTS_D1_Pos) /*!< FMC_T::MPSTS: D1 Mask */ 534 535 #define FMC_MPSTS_D2_Pos (6) /*!< FMC_T::MPSTS: D2 Position */ 536 #define FMC_MPSTS_D2_Msk (0x1ul << FMC_MPSTS_D2_Pos) /*!< FMC_T::MPSTS: D2 Mask */ 537 538 #define FMC_MPSTS_D3_Pos (7) /*!< FMC_T::MPSTS: D3 Position */ 539 #define FMC_MPSTS_D3_Msk (0x1ul << FMC_MPSTS_D3_Pos) /*!< FMC_T::MPSTS: D3 Mask */ 540 541 #define FMC_MPADDR_MPADDR_Pos (0) /*!< FMC_T::MPADDR: MPADDR Position */ 542 #define FMC_MPADDR_MPADDR_Msk (0xfffffffful << FMC_MPADDR_MPADDR_Pos) /*!< FMC_T::MPADDR: MPADDR Mask */ 543 544 #define FMC_XOMR0STS_SIZE_Pos (0) /*!< FMC_T::XOMR0STS: SIZE Position */ 545 #define FMC_XOMR0STS_SIZE_Msk (0xfful << FMC_XOMR0STS_SIZE_Pos) /*!< FMC_T::XOMR0STS: SIZE Mask */ 546 547 #define FMC_XOMR0STS_BASE_Pos (8) /*!< FMC_T::XOMR0STS: BASE Position */ 548 #define FMC_XOMR0STS_BASE_Msk (0xfffffful << FMC_XOMR0STS_BASE_Pos) /*!< FMC_T::XOMR0STS: BASE Mask */ 549 550 #define FMC_XOMR1STS_SIZE_Pos (0) /*!< FMC_T::XOMR1STS: SIZE Position */ 551 #define FMC_XOMR1STS_SIZE_Msk (0xfful << FMC_XOMR1STS_SIZE_Pos) /*!< FMC_T::XOMR1STS: SIZE Mask */ 552 553 #define FMC_XOMR1STS_BASE_Pos (8) /*!< FMC_T::XOMR1STS: BASE Position */ 554 #define FMC_XOMR1STS_BASE_Msk (0xfffffful << FMC_XOMR1STS_BASE_Pos) /*!< FMC_T::XOMR1STS: BASE Mask */ 555 556 #define FMC_XOMR2STS_SIZE_Pos (0) /*!< FMC_T::XOMR2STS: SIZE Position */ 557 #define FMC_XOMR2STS_SIZE_Msk (0xfful << FMC_XOMR2STS_SIZE_Pos) /*!< FMC_T::XOMR2STS: SIZE Mask */ 558 559 #define FMC_XOMR2STS_BASE_Pos (8) /*!< FMC_T::XOMR2STS: BASE Position */ 560 #define FMC_XOMR2STS_BASE_Msk (0xfffffful << FMC_XOM20STS_BASE_Pos) /*!< FMC_T::XOMR2STS: BASE Mask */ 561 562 #define FMC_XOMR3STS_SIZE_Pos (0) /*!< FMC_T::XOMR3STS: SIZE Position */ 563 #define FMC_XOMR3STS_SIZE_Msk (0xfful << FMC_XOMR3STS_SIZE_Pos) /*!< FMC_T::XOMR3STS: SIZE Mask */ 564 565 #define FMC_XOMR3STS_BASE_Pos (8) /*!< FMC_T::XOMR3STS: BASE Position */ 566 #define FMC_XOMR3STS_BASE_Msk (0xfffffful << FMC_XOMR3STS_BASE_Pos) /*!< FMC_T::XOMR3STS: BASE Mask */ 567 568 #define FMC_XOMSTS_XOMR0ON_Pos (0) /*!< FMC_T::XOMSTS: XOMR0ON Position */ 569 #define FMC_XOMSTS_XOMR0ON_Msk (0x1ul << FMC_XOMSTS_XOMR0ON_Pos) /*!< FMC_T::XOMSTS: XOMR0ON Mask */ 570 571 #define FMC_XOMSTS_XOMR1ON_Pos (1) /*!< FMC_T::XOMSTS: XOMR1ON Position */ 572 #define FMC_XOMSTS_XOMR1ON_Msk (0x1ul << FMC_XOMSTS_XOMR1ON_Pos) /*!< FMC_T::XOMSTS: XOMR1ON Mask */ 573 574 #define FMC_XOMSTS_XOMR2ON_Pos (2) /*!< FMC_T::XOMSTS: XOMR2ON Position */ 575 #define FMC_XOMSTS_XOMR2ON_Msk (0x1ul << FMC_XOMSTS_XOMR2ON_Pos) /*!< FMC_T::XOMSTS: XOMR2ON Mask */ 576 577 #define FMC_XOMSTS_XOMR3ON_Pos (3) /*!< FMC_T::XOMSTS: XOMR3ON Position */ 578 #define FMC_XOMSTS_XOMR3ON_Msk (0x1ul << FMC_XOMSTS_XOMR3ON_Pos) /*!< FMC_T::XOMSTS: XOMR3ON Mask */ 579 580 #define FMC_XOMSTS_XOMPEF_Pos (4) /*!< FMC_T::XOMSTS: XOMPEF Position */ 581 #define FMC_XOMSTS_XOMPEF_Msk (0x1ul << FMC_XOMSTS_XOMPEF_Pos) /*!< FMC_T::XOMSTS: XOMPEF Mask */ 582 583 #define FMC_APPROT_APPROEN0_Pos (0) /*!< FMC_T::APPROT: APPROEN0 Position */ 584 #define FMC_APPROT_APPROEN0_Msk (0x1ul << FMC_APPROT_APPROEN0_Pos) /*!< FMC_T::APPROT: APPROEN0 Mask */ 585 586 #define FMC_APPROT_APPROEN1_Pos (1) /*!< FMC_T::APPROT: APPROEN1 Position */ 587 #define FMC_APPROT_APPROEN1_Msk (0x1ul << FMC_APPROT_APPROEN1_Pos) /*!< FMC_T::APPROT: APPROEN1 Mask */ 588 589 #define FMC_APPROT_APPROEN2_Pos (2) /*!< FMC_T::APPROT: APPROEN2 Position */ 590 #define FMC_APPROT_APPROEN2_Msk (0x1ul << FMC_APPROT_APPROEN2_Pos) /*!< FMC_T::APPROT: APPROEN2 Mask */ 591 592 #define FMC_APPROT_APPROEN3_Pos (3) /*!< FMC_T::APPROT: APPROEN3 Position */ 593 #define FMC_APPROT_APPROEN3_Msk (0x1ul << FMC_APPROT_APPROEN3_Pos) /*!< FMC_T::APPROT: APPROEN3 Mask */ 594 595 #define FMC_APPROT_APPROEN4_Pos (4) /*!< FMC_T::APPROT: APPROEN4 Position */ 596 #define FMC_APPROT_APPROEN4_Msk (0x1ul << FMC_APPROT_APPROEN4_Pos) /*!< FMC_T::APPROT: APPROEN4 Mask */ 597 598 #define FMC_APPROT_APPROEN5_Pos (5) /*!< FMC_T::APPROT: APPROEN5 Position */ 599 #define FMC_APPROT_APPROEN5_Msk (0x1ul << FMC_APPROT_APPROEN5_Pos) /*!< FMC_T::APPROT: APPROEN5 Mask */ 600 601 #define FMC_APPROT_APPROEN6_Pos (6) /*!< FMC_T::APPROT: APPROEN6 Position */ 602 #define FMC_APPROT_APPROEN6_Msk (0x1ul << FMC_APPROT_APPROEN6_Pos) /*!< FMC_T::APPROT: APPROEN6 Mask */ 603 604 #define FMC_APPROT_APPROEN7_Pos (7) /*!< FMC_T::APPROT: APPROEN7 Position */ 605 #define FMC_APPROT_APPROEN7_Msk (0x1ul << FMC_APPROT_APPROEN7_Pos) /*!< FMC_T::APPROT: APPROEN7 Mask */ 606 607 #define FMC_APPROT_APPROEN8_Pos (8) /*!< FMC_T::APPROT: APPROEN8 Position */ 608 #define FMC_APPROT_APPROEN8_Msk (0x1ul << FMC_APPROT_APPROEN8_Pos) /*!< FMC_T::APPROT: APPROEN8 Mask */ 609 610 #define FMC_APPROT_APPROEN9_Pos (9) /*!< FMC_T::APPROT: APPROEN9 Position */ 611 #define FMC_APPROT_APPROEN9_Msk (0x1ul << FMC_APPROT_APPROEN9_Pos) /*!< FMC_T::APPROT: APPROEN9 Mask */ 612 613 #define FMC_APPROT_APPROEN10_Pos (10) /*!< FMC_T::APPROT: APPROEN10 Position */ 614 #define FMC_APPROT_APPROEN10_Msk (0x1ul << FMC_APPROT_APPROEN10_Pos) /*!< FMC_T::APPROT: APPROEN10 Mask */ 615 616 #define FMC_APPROT_APPROEN11_Pos (11) /*!< FMC_T::APPROT: APPROEN11 Position */ 617 #define FMC_APPROT_APPROEN11_Msk (0x1ul << FMC_APPROT_APPROEN11_Pos) /*!< FMC_T::APPROT: APPROEN11 Mask */ 618 619 #define FMC_APPROT_APPROEN12_Pos (12) /*!< FMC_T::APPROT: APPROEN12 Position */ 620 #define FMC_APPROT_APPROEN12_Msk (0x1ul << FMC_APPROT_APPROEN12_Pos) /*!< FMC_T::APPROT: APPROEN12 Mask */ 621 622 #define FMC_APPROT_APPROEN13_Pos (13) /*!< FMC_T::APPROT: APPROEN13 Position */ 623 #define FMC_APPROT_APPROEN13_Msk (0x1ul << FMC_APPROT_APPROEN13_Pos) /*!< FMC_T::APPROT: APPROEN13 Mask */ 624 625 #define FMC_APPROT_APPROEN14_Pos (14) /*!< FMC_T::APPROT: APPROEN14 Position */ 626 #define FMC_APPROT_APPROEN14_Msk (0x1ul << FMC_APPROT_APPROEN14_Pos) /*!< FMC_T::APPROT: APPROEN14 Mask */ 627 628 #define FMC_APPROT_APPROEN15_Pos (15) /*!< FMC_T::APPROT: APPROEN15 Position */ 629 #define FMC_APPROT_APPROEN15_Msk (0x1ul << FMC_APPROT_APPROEN15_Pos) /*!< FMC_T::APPROT: APPROEN15 Mask */ 630 631 #define FMC_APPROT_APPROEN16_Pos (16) /*!< FMC_T::APPROT: APPROEN16 Position */ 632 #define FMC_APPROT_APPROEN16_Msk (0x1ul << FMC_APPROT_APPROEN16_Pos) /*!< FMC_T::APPROT: APPROEN16 Mask */ 633 634 #define FMC_APPROT_APPROEN17_Pos (17) /*!< FMC_T::APPROT: APPROEN17 Position */ 635 #define FMC_APPROT_APPROEN17_Msk (0x1ul << FMC_APPROT_APPROEN17_Pos) /*!< FMC_T::APPROT: APPROEN17 Mask */ 636 637 #define FMC_APPROT_APPROEN18_Pos (18) /*!< FMC_T::APPROT: APPROEN18 Position */ 638 #define FMC_APPROT_APPROEN18_Msk (0x1ul << FMC_APPROT_APPROEN18_Pos) /*!< FMC_T::APPROT: APPROEN18 Mask */ 639 640 #define FMC_APPROT_APPROEN19_Pos (19) /*!< FMC_T::APPROT: APPROEN19 Position */ 641 #define FMC_APPROT_APPROEN19_Msk (0x1ul << FMC_APPROT_APPROEN19_Pos) /*!< FMC_T::APPROT: APPROEN19 Mask */ 642 643 #define FMC_APPROT_APPROEN20_Pos (20) /*!< FMC_T::APPROT: APPROEN20 Position */ 644 #define FMC_APPROT_APPROEN20_Msk (0x1ul << FMC_APPROT_APPROEN20_Pos) /*!< FMC_T::APPROT: APPROEN20 Mask */ 645 646 #define FMC_APPROT_APPROEN21_Pos (21) /*!< FMC_T::APPROT: APPROEN21 Position */ 647 #define FMC_APPROT_APPROEN21_Msk (0x1ul << FMC_APPROT_APPROEN21_Pos) /*!< FMC_T::APPROT: APPROEN21 Mask */ 648 649 #define FMC_APPROT_APPROEN22_Pos (22) /*!< FMC_T::APPROT: APPROEN22 Position */ 650 #define FMC_APPROT_APPROEN22_Msk (0x1ul << FMC_APPROT_APPROEN22_Pos) /*!< FMC_T::APPROT: APPROEN22 Mask */ 651 652 #define FMC_APPROT_APPROEN23_Pos (23) /*!< FMC_T::APPROT: APPROEN23 Position */ 653 #define FMC_APPROT_APPROEN23_Msk (0x1ul << FMC_APPROT_APPROEN23_Pos) /*!< FMC_T::APPROT: APPROEN23 Mask */ 654 655 #define FMC_APPROT_APPROEN24_Pos (24) /*!< FMC_T::APPROT: APPROEN24 Position */ 656 #define FMC_APPROT_APPROEN24_Msk (0x1ul << FMC_APPROT_APPROEN24_Pos) /*!< FMC_T::APPROT: APPROEN24 Mask */ 657 658 #define FMC_APPROT_APPROEN25_Pos (25) /*!< FMC_T::APPROT: APPROEN25 Position */ 659 #define FMC_APPROT_APPROEN25_Msk (0x1ul << FMC_APPROT_APPROEN25_Pos) /*!< FMC_T::APPROT: APPROEN25 Mask */ 660 661 #define FMC_APPROT_APPROEN26_Pos (26) /*!< FMC_T::APPROT: APPROEN26 Position */ 662 #define FMC_APPROT_APPROEN26_Msk (0x1ul << FMC_APPROT_APPROEN26_Pos) /*!< FMC_T::APPROT: APPROEN26 Mask */ 663 664 #define FMC_APPROT_APPROEN27_Pos (27) /*!< FMC_T::APPROT: APPROEN27 Position */ 665 #define FMC_APPROT_APPROEN27_Msk (0x1ul << FMC_APPROT_APPROEN27_Pos) /*!< FMC_T::APPROT: APPROEN27 Mask */ 666 667 #define FMC_APPROT_APPROEN28_Pos (28) /*!< FMC_T::APPROT: APPROEN28 Position */ 668 #define FMC_APPROT_APPROEN28_Msk (0x1ul << FMC_APPROT_APPROEN28_Pos) /*!< FMC_T::APPROT: APPROEN28 Mask */ 669 670 #define FMC_APPROT_APPROEN29_Pos (29) /*!< FMC_T::APPROT: APPROEN29 Position */ 671 #define FMC_APPROT_APPROEN29_Msk (0x1ul << FMC_APPROT_APPROEN29_Pos) /*!< FMC_T::APPROT: APPROEN29 Mask */ 672 673 #define FMC_APPROT_APPROEN30_Pos (30) /*!< FMC_T::APPROT: APPROEN30 Position */ 674 #define FMC_APPROT_APPROEN30_Msk (0x1ul << FMC_APPROT_APPROEN30_Pos) /*!< FMC_T::APPROT: APPROEN30 Mask */ 675 676 #define FMC_APPROT_APPROEN31_Pos (31) /*!< FMC_T::APPROT: APPROEN31 Position */ 677 #define FMC_APPROT_APPROEN31_Msk (0x1ul << FMC_APPROT_APPROEN31_Pos) /*!< FMC_T::APPROT: APPROEN31 Mask */ 678 679 /**@}*/ /* FMC_CONST */ 680 /**@}*/ /* end of FMC register group */ 681 /**@}*/ /* end of REGISTER group */ 682 683 #if defined ( __CC_ARM ) 684 #pragma no_anon_unions 685 #endif 686 687 #endif /* __FMC_REG_H__ */ 688