1 /* 2 ** ################################################################### 3 ** Processor: LPC811M001JDH16 4 ** Compilers: GNU C Compiler 5 ** IAR ANSI C/C++ Compiler for ARM 6 ** Keil ARM C/C++ Compiler 7 ** MCUXpresso Compiler 8 ** 9 ** Reference manual: LPC81x User manual Rev.1.6 2 April 2014 10 ** Version: rev. 1.2, 2017-06-08 11 ** Build: b200513 12 ** 13 ** Abstract: 14 ** CMSIS Peripheral Access Layer for LPC811 15 ** 16 ** Copyright 1997-2016 Freescale Semiconductor, Inc. 17 ** Copyright 2016-2020 NXP 18 ** All rights reserved. 19 ** 20 ** SPDX-License-Identifier: BSD-3-Clause 21 ** 22 ** http: www.nxp.com 23 ** mail: support@nxp.com 24 ** 25 ** Revisions: 26 ** - rev. 1.0 (2016-08-12) 27 ** Initial version. 28 ** - rev. 1.1 (2016-11-25) 29 ** Update CANFD and Classic CAN register. 30 ** Add MAC TIMERSTAMP registers. 31 ** - rev. 1.2 (2017-06-08) 32 ** Remove RTC_CTRL_RTC_OSC_BYPASS. 33 ** SYSCON_ARMTRCLKDIV rename to SYSCON_ARMTRACECLKDIV. 34 ** Remove RESET and HALT from SYSCON_AHBCLKDIV. 35 ** 36 ** ################################################################### 37 */ 38 39 /*! 40 * @file LPC811.h 41 * @version 1.2 42 * @date 2017-06-08 43 * @brief CMSIS Peripheral Access Layer for LPC811 44 * 45 * CMSIS Peripheral Access Layer for LPC811 46 */ 47 48 #ifndef _LPC811_H_ 49 #define _LPC811_H_ /**< Symbol preventing repeated inclusion */ 50 51 /** Memory map major version (memory maps with equal major version number are 52 * compatible) */ 53 #define MCU_MEM_MAP_VERSION 0x0100U 54 /** Memory map minor version */ 55 #define MCU_MEM_MAP_VERSION_MINOR 0x0002U 56 57 58 /* ---------------------------------------------------------------------------- 59 -- Interrupt vector numbers 60 ---------------------------------------------------------------------------- */ 61 62 /*! 63 * @addtogroup Interrupt_vector_numbers Interrupt vector numbers 64 * @{ 65 */ 66 67 /** Interrupt Number Definitions */ 68 #define NUMBER_OF_INT_VECTORS 48 /**< Number of interrupts in the Vector table */ 69 70 typedef enum IRQn { 71 /* Auxiliary constants */ 72 NotAvail_IRQn = -128, /**< Not available device specific interrupt */ 73 74 /* Core interrupts */ 75 NonMaskableInt_IRQn = -14, /**< Non Maskable Interrupt */ 76 HardFault_IRQn = -13, /**< Cortex-M0 SV Hard Fault Interrupt */ 77 SVCall_IRQn = -5, /**< Cortex-M0 SV Call Interrupt */ 78 PendSV_IRQn = -2, /**< Cortex-M0 Pend SV Interrupt */ 79 SysTick_IRQn = -1, /**< Cortex-M0 System Tick Interrupt */ 80 81 /* Device specific interrupts */ 82 SPI0_IRQn = 0, /**< SPI0 interrupt */ 83 SPI1_IRQn = 1, /**< SPI1 interrupt */ 84 Reserved18_IRQn = 2, /**< Reserved interrupt */ 85 USART0_IRQn = 3, /**< USART0 interrupt */ 86 USART1_IRQn = 4, /**< USART1 interrupt */ 87 USART2_IRQn = 5, /**< USART2 interrupt */ 88 Reserved22_IRQn = 6, /**< Reserved interrupt */ 89 Reserved23_IRQn = 7, /**< Reserved interrupt */ 90 I2C0_IRQn = 8, /**< I2C0 interrupt */ 91 SCT0_IRQn = 9, /**< State configurable timer interrupt */ 92 MRT0_IRQn = 10, /**< Multi-rate timer interrupt */ 93 CMP_IRQn = 11, /**< Analog comparator interrupt or Capacitive Touch interrupt */ 94 WDT_IRQn = 12, /**< Windowed watchdog timer interrupt */ 95 BOD_IRQn = 13, /**< BOD interrupts */ 96 Reserved30_IRQn = 14, /**< Reserved interrupt */ 97 WKT_IRQn = 15, /**< Self-wake-up timer interrupt */ 98 Reserved32_IRQn = 16, /**< Reserved interrupt */ 99 Reserved33_IRQn = 17, /**< Reserved interrupt */ 100 Reserved34_IRQn = 18, /**< Reserved interrupt */ 101 Reserved35_IRQn = 19, /**< Reserved interrupt */ 102 Reserved36_IRQn = 20, /**< Reserved interrupt */ 103 Reserved37_IRQn = 21, /**< Reserved interrupt */ 104 Reserved38_IRQn = 22, /**< Reserved interrupt */ 105 Reserved39_IRQn = 23, /**< Reserved interrupt */ 106 PIN_INT0_IRQn = 24, /**< Pin interrupt 0 or pattern match engine slice 0 interrupt */ 107 PIN_INT1_IRQn = 25, /**< Pin interrupt 1 or pattern match engine slice 1 interrupt */ 108 PIN_INT2_IRQn = 26, /**< Pin interrupt 2 or pattern match engine slice 2 interrupt */ 109 PIN_INT3_IRQn = 27, /**< Pin interrupt 3 or pattern match engine slice 3 interrupt */ 110 PIN_INT4_IRQn = 28, /**< Pin interrupt 4 or pattern match engine slice 4 interrupt */ 111 PIN_INT5_IRQn = 29, /**< Pin interrupt 5 or pattern match engine slice 5 interrupt */ 112 PIN_INT6_IRQn = 30, /**< Pin interrupt 6 or pattern match engine slice 6 interrupt */ 113 PIN_INT7_IRQn = 31 /**< Pin interrupt 7 or pattern match engine slice 7 interrupt */ 114 } IRQn_Type; 115 116 /*! 117 * @} 118 */ /* end of group Interrupt_vector_numbers */ 119 120 121 /* ---------------------------------------------------------------------------- 122 -- Cortex M0 Core Configuration 123 ---------------------------------------------------------------------------- */ 124 125 /*! 126 * @addtogroup Cortex_Core_Configuration Cortex M0 Core Configuration 127 * @{ 128 */ 129 130 #define __CM0PLUS_REV 0x0000 /**< Core revision r0p0 */ 131 #define __MPU_PRESENT 0 /**< Defines if an MPU is present or not */ 132 #define __VTOR_PRESENT 1 /**< Defines if VTOR is present or not */ 133 #define __NVIC_PRIO_BITS 2 /**< Number of priority bits implemented in the NVIC */ 134 #define __Vendor_SysTickConfig 0 /**< Vendor specific implementation of SysTickConfig is defined */ 135 136 #include "core_cm0plus.h" /* Core Peripheral Access Layer */ 137 #include "system_LPC811.h" /* Device specific configuration file */ 138 139 /*! 140 * @} 141 */ /* end of group Cortex_Core_Configuration */ 142 143 144 /* ---------------------------------------------------------------------------- 145 -- Device Peripheral Access Layer 146 ---------------------------------------------------------------------------- */ 147 148 /*! 149 * @addtogroup Peripheral_access_layer Device Peripheral Access Layer 150 * @{ 151 */ 152 153 154 /* 155 ** Start of section using anonymous unions 156 */ 157 158 #if defined(__ARMCC_VERSION) 159 #if (__ARMCC_VERSION >= 6010050) 160 #pragma clang diagnostic push 161 #else 162 #pragma push 163 #pragma anon_unions 164 #endif 165 #elif defined(__GNUC__) 166 /* anonymous unions are enabled by default */ 167 #elif defined(__IAR_SYSTEMS_ICC__) 168 #pragma language=extended 169 #else 170 #error Not supported compiler type 171 #endif 172 173 /* ---------------------------------------------------------------------------- 174 -- ACOMP Peripheral Access Layer 175 ---------------------------------------------------------------------------- */ 176 177 /*! 178 * @addtogroup ACOMP_Peripheral_Access_Layer ACOMP Peripheral Access Layer 179 * @{ 180 */ 181 182 /** ACOMP - Register Layout Typedef */ 183 typedef struct { 184 __IO uint32_t CTRL; /**< Comparator control register, offset: 0x0 */ 185 __IO uint32_t LAD; /**< Voltage ladder register, offset: 0x4 */ 186 } ACOMP_Type; 187 188 /* ---------------------------------------------------------------------------- 189 -- ACOMP Register Masks 190 ---------------------------------------------------------------------------- */ 191 192 /*! 193 * @addtogroup ACOMP_Register_Masks ACOMP Register Masks 194 * @{ 195 */ 196 197 /*! @name CTRL - Comparator control register */ 198 /*! @{ */ 199 #define ACOMP_CTRL_EDGESEL_MASK (0x18U) 200 #define ACOMP_CTRL_EDGESEL_SHIFT (3U) 201 /*! EDGESEL - This field controls which edges on the comparator output set the COMPEDGE bit (bit 23 below): 202 * 0b00..Falling edges 203 * 0b01..Rising edges 204 * 0b10..Both edges 205 * 0b11..Both edges 206 */ 207 #define ACOMP_CTRL_EDGESEL(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_CTRL_EDGESEL_SHIFT)) & ACOMP_CTRL_EDGESEL_MASK) 208 #define ACOMP_CTRL_COMPSA_MASK (0x40U) 209 #define ACOMP_CTRL_COMPSA_SHIFT (6U) 210 /*! COMPSA - Comparator output control 211 * 0b0..Comparator output is used directly. 212 * 0b1..Comparator output is synchronized to the bus clock for output to other modules. 213 */ 214 #define ACOMP_CTRL_COMPSA(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_CTRL_COMPSA_SHIFT)) & ACOMP_CTRL_COMPSA_MASK) 215 #define ACOMP_CTRL_COMP_VP_SEL_MASK (0x700U) 216 #define ACOMP_CTRL_COMP_VP_SEL_SHIFT (8U) 217 /*! COMP_VP_SEL - Selects positive voltage input 218 * 0b000..VOLTAGE_LADDER_OUTPUT 219 * 0b001..ACMP_I1 220 * 0b010..ACMP_I2 221 * 0b011..ACMP_I3 222 * 0b100..ACMP_I4 223 * 0b101..ACMP_I5 224 * 0b110..Band gap. Internal reference voltage. 225 * 0b111..DAC0 output 226 */ 227 #define ACOMP_CTRL_COMP_VP_SEL(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_CTRL_COMP_VP_SEL_SHIFT)) & ACOMP_CTRL_COMP_VP_SEL_MASK) 228 #define ACOMP_CTRL_COMP_VM_SEL_MASK (0x3800U) 229 #define ACOMP_CTRL_COMP_VM_SEL_SHIFT (11U) 230 /*! COMP_VM_SEL - Selects negative voltage input 231 * 0b000..VOLTAGE_LADDER_OUTPUT 232 * 0b001..ACMP_I1 233 * 0b010..ACMP_I2 234 * 0b011..ACMP_I3 235 * 0b100..ACMP_I4 236 * 0b101..ACMP_I5 237 * 0b110..Band gap. Internal reference voltage. 238 * 0b111..DAC0 output 239 */ 240 #define ACOMP_CTRL_COMP_VM_SEL(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_CTRL_COMP_VM_SEL_SHIFT)) & ACOMP_CTRL_COMP_VM_SEL_MASK) 241 #define ACOMP_CTRL_EDGECLR_MASK (0x100000U) 242 #define ACOMP_CTRL_EDGECLR_SHIFT (20U) 243 /*! EDGECLR - Interrupt clear bit. To clear the COMPEDGE bit and thus negate the interrupt request, 244 * toggle the EDGECLR bit by first writing a 1 and then a 0. 245 */ 246 #define ACOMP_CTRL_EDGECLR(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_CTRL_EDGECLR_SHIFT)) & ACOMP_CTRL_EDGECLR_MASK) 247 #define ACOMP_CTRL_COMPSTAT_MASK (0x200000U) 248 #define ACOMP_CTRL_COMPSTAT_SHIFT (21U) 249 /*! COMPSTAT - Comparator status. This bit reflects the state of the comparator output. 250 */ 251 #define ACOMP_CTRL_COMPSTAT(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_CTRL_COMPSTAT_SHIFT)) & ACOMP_CTRL_COMPSTAT_MASK) 252 #define ACOMP_CTRL_COMPEDGE_MASK (0x800000U) 253 #define ACOMP_CTRL_COMPEDGE_SHIFT (23U) 254 /*! COMPEDGE - Comparator edge-detect status. 255 */ 256 #define ACOMP_CTRL_COMPEDGE(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_CTRL_COMPEDGE_SHIFT)) & ACOMP_CTRL_COMPEDGE_MASK) 257 #define ACOMP_CTRL_HYS_MASK (0x6000000U) 258 #define ACOMP_CTRL_HYS_SHIFT (25U) 259 /*! HYS - Controls the hysteresis of the comparator. When the comparator is outputting a certain 260 * state, this is the difference between the selected signals, in the opposite direction from the 261 * state being output, that will switch the output. 262 * 0b00..None (the output will switch as the voltages cross) 263 * 0b01..5 mv 264 * 0b10..10 mv 265 * 0b11..20 mv 266 */ 267 #define ACOMP_CTRL_HYS(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_CTRL_HYS_SHIFT)) & ACOMP_CTRL_HYS_MASK) 268 /*! @} */ 269 270 /*! @name LAD - Voltage ladder register */ 271 /*! @{ */ 272 #define ACOMP_LAD_LADEN_MASK (0x1U) 273 #define ACOMP_LAD_LADEN_SHIFT (0U) 274 /*! LADEN - Voltage ladder enable 275 */ 276 #define ACOMP_LAD_LADEN(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_LAD_LADEN_SHIFT)) & ACOMP_LAD_LADEN_MASK) 277 #define ACOMP_LAD_LADSEL_MASK (0x3EU) 278 #define ACOMP_LAD_LADSEL_SHIFT (1U) 279 /*! LADSEL - Voltage ladder value. The reference voltage Vref depends on the LADREF bit below. 00000 280 * = VSS 00001 = 1 x Vref/31 00010 = 2 x Vref/31 ... 11111 = Vref 281 */ 282 #define ACOMP_LAD_LADSEL(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_LAD_LADSEL_SHIFT)) & ACOMP_LAD_LADSEL_MASK) 283 #define ACOMP_LAD_LADREF_MASK (0x40U) 284 #define ACOMP_LAD_LADREF_SHIFT (6U) 285 /*! LADREF - Selects the reference voltage Vref for the voltage ladder. 286 * 0b0..Supply pin VDD 287 * 0b1..VDDCMP pin 288 */ 289 #define ACOMP_LAD_LADREF(x) (((uint32_t)(((uint32_t)(x)) << ACOMP_LAD_LADREF_SHIFT)) & ACOMP_LAD_LADREF_MASK) 290 /*! @} */ 291 292 293 /*! 294 * @} 295 */ /* end of group ACOMP_Register_Masks */ 296 297 298 /* ACOMP - Peripheral instance base addresses */ 299 /** Peripheral ACOMP base address */ 300 #define ACOMP_BASE (0x40024000u) 301 /** Peripheral ACOMP base pointer */ 302 #define ACOMP ((ACOMP_Type *)ACOMP_BASE) 303 /** Array initializer of ACOMP peripheral base addresses */ 304 #define ACOMP_BASE_ADDRS { ACOMP_BASE } 305 /** Array initializer of ACOMP peripheral base pointers */ 306 #define ACOMP_BASE_PTRS { ACOMP } 307 308 /*! 309 * @} 310 */ /* end of group ACOMP_Peripheral_Access_Layer */ 311 312 313 /* ---------------------------------------------------------------------------- 314 -- CRC Peripheral Access Layer 315 ---------------------------------------------------------------------------- */ 316 317 /*! 318 * @addtogroup CRC_Peripheral_Access_Layer CRC Peripheral Access Layer 319 * @{ 320 */ 321 322 /** CRC - Register Layout Typedef */ 323 typedef struct { 324 __IO uint32_t MODE; /**< CRC mode register, offset: 0x0 */ 325 __IO uint32_t SEED; /**< CRC seed register, offset: 0x4 */ 326 union { /* offset: 0x8 */ 327 __I uint32_t SUM; /**< CRC checksum register, offset: 0x8 */ 328 __O uint32_t WR_DATA; /**< CRC data register, offset: 0x8 */ 329 }; 330 } CRC_Type; 331 332 /* ---------------------------------------------------------------------------- 333 -- CRC Register Masks 334 ---------------------------------------------------------------------------- */ 335 336 /*! 337 * @addtogroup CRC_Register_Masks CRC Register Masks 338 * @{ 339 */ 340 341 /*! @name MODE - CRC mode register */ 342 /*! @{ */ 343 #define CRC_MODE_CRC_POLY_MASK (0x3U) 344 #define CRC_MODE_CRC_POLY_SHIFT (0U) 345 /*! CRC_POLY - CRC polynomial: 1X = CRC-32 polynomial 01 = CRC-16 polynomial 00 = CRC-CCITT polynomial 346 */ 347 #define CRC_MODE_CRC_POLY(x) (((uint32_t)(((uint32_t)(x)) << CRC_MODE_CRC_POLY_SHIFT)) & CRC_MODE_CRC_POLY_MASK) 348 #define CRC_MODE_BIT_RVS_WR_MASK (0x4U) 349 #define CRC_MODE_BIT_RVS_WR_SHIFT (2U) 350 /*! BIT_RVS_WR - Data bit order: 1 = Bit order reverse for CRC_WR_DATA (per byte) 0 = No bit order reverse for CRC_WR_DATA (per byte) 351 */ 352 #define CRC_MODE_BIT_RVS_WR(x) (((uint32_t)(((uint32_t)(x)) << CRC_MODE_BIT_RVS_WR_SHIFT)) & CRC_MODE_BIT_RVS_WR_MASK) 353 #define CRC_MODE_CMPL_WR_MASK (0x8U) 354 #define CRC_MODE_CMPL_WR_SHIFT (3U) 355 /*! CMPL_WR - Data complement: 1 = 1's complement for CRC_WR_DATA 0 = No 1's complement for CRC_WR_DATA 356 */ 357 #define CRC_MODE_CMPL_WR(x) (((uint32_t)(((uint32_t)(x)) << CRC_MODE_CMPL_WR_SHIFT)) & CRC_MODE_CMPL_WR_MASK) 358 #define CRC_MODE_BIT_RVS_SUM_MASK (0x10U) 359 #define CRC_MODE_BIT_RVS_SUM_SHIFT (4U) 360 /*! BIT_RVS_SUM - CRC sum bit order: 1 = Bit order reverse for CRC_SUM 0 = No bit order reverse for CRC_SUM 361 */ 362 #define CRC_MODE_BIT_RVS_SUM(x) (((uint32_t)(((uint32_t)(x)) << CRC_MODE_BIT_RVS_SUM_SHIFT)) & CRC_MODE_BIT_RVS_SUM_MASK) 363 #define CRC_MODE_CMPL_SUM_MASK (0x20U) 364 #define CRC_MODE_CMPL_SUM_SHIFT (5U) 365 /*! CMPL_SUM - CRC sum complement: 1 = 1's complement for CRC_SUM 0 = No 1's complement for CRC_SUM 366 */ 367 #define CRC_MODE_CMPL_SUM(x) (((uint32_t)(((uint32_t)(x)) << CRC_MODE_CMPL_SUM_SHIFT)) & CRC_MODE_CMPL_SUM_MASK) 368 /*! @} */ 369 370 /*! @name SEED - CRC seed register */ 371 /*! @{ */ 372 #define CRC_SEED_CRC_SEED_MASK (0xFFFFFFFFU) 373 #define CRC_SEED_CRC_SEED_SHIFT (0U) 374 /*! CRC_SEED - A write access to this register will load CRC seed value to CRC_SUM register with 375 * selected bit order and 1's complement pre-processes. A write access to this register will 376 * overrule the CRC calculation in progresses. 377 */ 378 #define CRC_SEED_CRC_SEED(x) (((uint32_t)(((uint32_t)(x)) << CRC_SEED_CRC_SEED_SHIFT)) & CRC_SEED_CRC_SEED_MASK) 379 /*! @} */ 380 381 /*! @name SUM - CRC checksum register */ 382 /*! @{ */ 383 #define CRC_SUM_CRC_SUM_MASK (0xFFFFFFFFU) 384 #define CRC_SUM_CRC_SUM_SHIFT (0U) 385 /*! CRC_SUM - The most recent CRC sum can be read through this register with selected bit order and 1's complement post-processes. 386 */ 387 #define CRC_SUM_CRC_SUM(x) (((uint32_t)(((uint32_t)(x)) << CRC_SUM_CRC_SUM_SHIFT)) & CRC_SUM_CRC_SUM_MASK) 388 /*! @} */ 389 390 /*! @name WR_DATA - CRC data register */ 391 /*! @{ */ 392 #define CRC_WR_DATA_CRC_WR_DATA_MASK (0xFFFFFFFFU) 393 #define CRC_WR_DATA_CRC_WR_DATA_SHIFT (0U) 394 /*! CRC_WR_DATA - Data written to this register will be taken to perform CRC calculation with 395 * selected bit order and 1's complement pre-process. Any write size 8, 16 or 32-bit are allowed and 396 * accept back-to-back transactions. 397 */ 398 #define CRC_WR_DATA_CRC_WR_DATA(x) (((uint32_t)(((uint32_t)(x)) << CRC_WR_DATA_CRC_WR_DATA_SHIFT)) & CRC_WR_DATA_CRC_WR_DATA_MASK) 399 /*! @} */ 400 401 402 /*! 403 * @} 404 */ /* end of group CRC_Register_Masks */ 405 406 407 /* CRC - Peripheral instance base addresses */ 408 /** Peripheral CRC base address */ 409 #define CRC_BASE (0x50000000u) 410 /** Peripheral CRC base pointer */ 411 #define CRC ((CRC_Type *)CRC_BASE) 412 /** Array initializer of CRC peripheral base addresses */ 413 #define CRC_BASE_ADDRS { CRC_BASE } 414 /** Array initializer of CRC peripheral base pointers */ 415 #define CRC_BASE_PTRS { CRC } 416 417 /*! 418 * @} 419 */ /* end of group CRC_Peripheral_Access_Layer */ 420 421 422 /* ---------------------------------------------------------------------------- 423 -- FLASH_CTRL Peripheral Access Layer 424 ---------------------------------------------------------------------------- */ 425 426 /*! 427 * @addtogroup FLASH_CTRL_Peripheral_Access_Layer FLASH_CTRL Peripheral Access Layer 428 * @{ 429 */ 430 431 /** FLASH_CTRL - Register Layout Typedef */ 432 typedef struct { 433 uint8_t RESERVED_0[16]; 434 __IO uint32_t FLASHCFG; /**< Flash configuration register, offset: 0x10 */ 435 uint8_t RESERVED_1[12]; 436 __IO uint32_t FMSSTART; /**< Flash signature start address register, offset: 0x20 */ 437 __IO uint32_t FMSSTOP; /**< Flash signaure stop address register, offset: 0x24 */ 438 uint8_t RESERVED_2[4]; 439 __I uint32_t FMSW0; /**< Flash signature generation result register returns the flash signature produced by the embedded signature generator.., offset: 0x2C */ 440 } FLASH_CTRL_Type; 441 442 /* ---------------------------------------------------------------------------- 443 -- FLASH_CTRL Register Masks 444 ---------------------------------------------------------------------------- */ 445 446 /*! 447 * @addtogroup FLASH_CTRL_Register_Masks FLASH_CTRL Register Masks 448 * @{ 449 */ 450 451 /*! @name FLASHCFG - Flash configuration register */ 452 /*! @{ */ 453 #define FLASH_CTRL_FLASHCFG_FLASHTIM_MASK (0x3U) 454 #define FLASH_CTRL_FLASHCFG_FLASHTIM_SHIFT (0U) 455 /*! FLASHTIM - Flash memory access time. FLASHTIM +1 is equal to the number of system clocks used for flash access. 456 * 0b00..1 system clock flash access time. 457 * 0b01..2 system clock flash access time. 458 * 0b10..3 system clock flash access time. 459 * 0b11..Reserved. 460 */ 461 #define FLASH_CTRL_FLASHCFG_FLASHTIM(x) (((uint32_t)(((uint32_t)(x)) << FLASH_CTRL_FLASHCFG_FLASHTIM_SHIFT)) & FLASH_CTRL_FLASHCFG_FLASHTIM_MASK) 462 /*! @} */ 463 464 /*! @name FMSSTART - Flash signature start address register */ 465 /*! @{ */ 466 #define FLASH_CTRL_FMSSTART_START_MASK (0x1FFFFU) 467 #define FLASH_CTRL_FMSSTART_START_SHIFT (0U) 468 /*! START - Signature generation start address (corresponds to AHB byte address bits[18:2]). 469 */ 470 #define FLASH_CTRL_FMSSTART_START(x) (((uint32_t)(((uint32_t)(x)) << FLASH_CTRL_FMSSTART_START_SHIFT)) & FLASH_CTRL_FMSSTART_START_MASK) 471 /*! @} */ 472 473 /*! @name FMSSTOP - Flash signaure stop address register */ 474 /*! @{ */ 475 #define FLASH_CTRL_FMSSTOP_STOPA_MASK (0x1FFFFU) 476 #define FLASH_CTRL_FMSSTOP_STOPA_SHIFT (0U) 477 /*! STOPA - Stop address for signature generation (the word specified by STOP is included in the 478 * address range). The address is in units of memory words, not bytes. 479 */ 480 #define FLASH_CTRL_FMSSTOP_STOPA(x) (((uint32_t)(((uint32_t)(x)) << FLASH_CTRL_FMSSTOP_STOPA_SHIFT)) & FLASH_CTRL_FMSSTOP_STOPA_MASK) 481 #define FLASH_CTRL_FMSSTOP_STRTBIST_MASK (0x80000000U) 482 #define FLASH_CTRL_FMSSTOP_STRTBIST_SHIFT (31U) 483 /*! STRTBIST - When this bit is written to 1, signature generation starts. At the end of signature 484 * generation, this bit is automatically cleared. 485 */ 486 #define FLASH_CTRL_FMSSTOP_STRTBIST(x) (((uint32_t)(((uint32_t)(x)) << FLASH_CTRL_FMSSTOP_STRTBIST_SHIFT)) & FLASH_CTRL_FMSSTOP_STRTBIST_MASK) 487 /*! @} */ 488 489 /*! @name FMSW0 - Flash signature generation result register returns the flash signature produced by the embedded signature generator.. */ 490 /*! @{ */ 491 #define FLASH_CTRL_FMSW0_SIG_MASK (0xFFFFFFFFU) 492 #define FLASH_CTRL_FMSW0_SIG_SHIFT (0U) 493 /*! SIG - 32-bit signature. 494 */ 495 #define FLASH_CTRL_FMSW0_SIG(x) (((uint32_t)(((uint32_t)(x)) << FLASH_CTRL_FMSW0_SIG_SHIFT)) & FLASH_CTRL_FMSW0_SIG_MASK) 496 /*! @} */ 497 498 499 /*! 500 * @} 501 */ /* end of group FLASH_CTRL_Register_Masks */ 502 503 504 /* FLASH_CTRL - Peripheral instance base addresses */ 505 /** Peripheral FLASH_CTRL base address */ 506 #define FLASH_CTRL_BASE (0x40040000u) 507 /** Peripheral FLASH_CTRL base pointer */ 508 #define FLASH_CTRL ((FLASH_CTRL_Type *)FLASH_CTRL_BASE) 509 /** Array initializer of FLASH_CTRL peripheral base addresses */ 510 #define FLASH_CTRL_BASE_ADDRS { FLASH_CTRL_BASE } 511 /** Array initializer of FLASH_CTRL peripheral base pointers */ 512 #define FLASH_CTRL_BASE_PTRS { FLASH_CTRL } 513 514 /*! 515 * @} 516 */ /* end of group FLASH_CTRL_Peripheral_Access_Layer */ 517 518 519 /* ---------------------------------------------------------------------------- 520 -- GPIO Peripheral Access Layer 521 ---------------------------------------------------------------------------- */ 522 523 /*! 524 * @addtogroup GPIO_Peripheral_Access_Layer GPIO Peripheral Access Layer 525 * @{ 526 */ 527 528 /** GPIO - Register Layout Typedef */ 529 typedef struct { 530 __IO uint8_t B[1][18]; /**< Byte pin registers for all port 0 and 1 GPIO pins, array offset: 0x0, array step: index*0x12, index2*0x1 */ 531 uint8_t RESERVED_0[4078]; 532 __IO uint32_t W[1][18]; /**< Word pin registers for all port 0 and 1 GPIO pins, array offset: 0x1000, array step: index*0x48, index2*0x4 */ 533 uint8_t RESERVED_1[4024]; 534 __IO uint32_t DIR[1]; /**< Direction registers, array offset: 0x2000, array step: 0x4 */ 535 uint8_t RESERVED_2[124]; 536 __IO uint32_t MASK[1]; /**< Mask register, array offset: 0x2080, array step: 0x4 */ 537 uint8_t RESERVED_3[124]; 538 __IO uint32_t PIN[1]; /**< Port pin register, array offset: 0x2100, array step: 0x4 */ 539 uint8_t RESERVED_4[124]; 540 __IO uint32_t MPIN[1]; /**< Masked port register, array offset: 0x2180, array step: 0x4 */ 541 uint8_t RESERVED_5[124]; 542 __IO uint32_t SET[1]; /**< Write: Set register for port Read: output bits for port, array offset: 0x2200, array step: 0x4 */ 543 uint8_t RESERVED_6[124]; 544 __O uint32_t CLR[1]; /**< Clear port, array offset: 0x2280, array step: 0x4 */ 545 uint8_t RESERVED_7[124]; 546 __O uint32_t NOT[1]; /**< Toggle port, array offset: 0x2300, array step: 0x4 */ 547 } GPIO_Type; 548 549 /* ---------------------------------------------------------------------------- 550 -- GPIO Register Masks 551 ---------------------------------------------------------------------------- */ 552 553 /*! 554 * @addtogroup GPIO_Register_Masks GPIO Register Masks 555 * @{ 556 */ 557 558 /*! @name B - Byte pin registers for all port 0 and 1 GPIO pins */ 559 /*! @{ */ 560 #define GPIO_B_PBYTE_MASK (0x1U) 561 #define GPIO_B_PBYTE_SHIFT (0U) 562 /*! PBYTE - Read: state of the pin PIOm_n, regardless of direction, masking, or alternate function, 563 * except that pins configured as analog I/O always read as 0. One register for each port pin. 564 * Supported pins depends on the specific device and package. Write: loads the pin's output bit. 565 * One register for each port pin. Supported pins depends on the specific device and package. 566 */ 567 #define GPIO_B_PBYTE(x) (((uint8_t)(((uint8_t)(x)) << GPIO_B_PBYTE_SHIFT)) & GPIO_B_PBYTE_MASK) 568 /*! @} */ 569 570 /* The count of GPIO_B */ 571 #define GPIO_B_COUNT (1U) 572 573 /* The count of GPIO_B */ 574 #define GPIO_B_COUNT2 (18U) 575 576 /*! @name W - Word pin registers for all port 0 and 1 GPIO pins */ 577 /*! @{ */ 578 #define GPIO_W_PWORD_MASK (0xFFFFFFFFU) 579 #define GPIO_W_PWORD_SHIFT (0U) 580 /*! PWORD - Read 0: pin PIOm_n is LOW. Write 0: clear output bit. Read 0xFFFF FFFF: pin PIOm_n is 581 * HIGH. Write any value 0x0000 0001 to 0xFFFF FFFF: set output bit. Only 0 or 0xFFFF FFFF can be 582 * read. Writing any value other than 0 will set the output bit. One register for each port pin. 583 * Supported pins depends on the specific device and package. 584 */ 585 #define GPIO_W_PWORD(x) (((uint32_t)(((uint32_t)(x)) << GPIO_W_PWORD_SHIFT)) & GPIO_W_PWORD_MASK) 586 /*! @} */ 587 588 /* The count of GPIO_W */ 589 #define GPIO_W_COUNT (1U) 590 591 /* The count of GPIO_W */ 592 #define GPIO_W_COUNT2 (18U) 593 594 /*! @name DIR - Direction registers */ 595 /*! @{ */ 596 #define GPIO_DIR_DIRP_MASK (0x3FFFFU) 597 #define GPIO_DIR_DIRP_SHIFT (0U) 598 /*! DIRP - Selects pin direction for pin PIOm_n (bit 0 = PIOn_0, bit 1 = PIOn_1, etc.). Supported 599 * pins depends on the specific device and package. 0 = input. 1 = output. 600 */ 601 #define GPIO_DIR_DIRP(x) (((uint32_t)(((uint32_t)(x)) << GPIO_DIR_DIRP_SHIFT)) & GPIO_DIR_DIRP_MASK) 602 /*! @} */ 603 604 /* The count of GPIO_DIR */ 605 #define GPIO_DIR_COUNT (1U) 606 607 /*! @name MASK - Mask register */ 608 /*! @{ */ 609 #define GPIO_MASK_MASKP_MASK (0x3FFFFU) 610 #define GPIO_MASK_MASKP_SHIFT (0U) 611 /*! MASKP - Controls which bits corresponding to PIOm_n are active in the MPORT register (bit 0 = 612 * PIOn_0, bit 1 = PIOn_1, etc.). Supported pins depends on the specific device and package. 0 = 613 * Read MPORT: pin state; write MPORT: load output bit. 1 = Read MPORT: 0; write MPORT: output bit 614 * not affected. 615 */ 616 #define GPIO_MASK_MASKP(x) (((uint32_t)(((uint32_t)(x)) << GPIO_MASK_MASKP_SHIFT)) & GPIO_MASK_MASKP_MASK) 617 /*! @} */ 618 619 /* The count of GPIO_MASK */ 620 #define GPIO_MASK_COUNT (1U) 621 622 /*! @name PIN - Port pin register */ 623 /*! @{ */ 624 #define GPIO_PIN_PORT_MASK (0x3FFFFU) 625 #define GPIO_PIN_PORT_SHIFT (0U) 626 /*! PORT - Reads pin states or loads output bits (bit 0 = PIOn_0, bit 1 = PIOn_1, etc.). Supported 627 * pins depends on the specific device and package. 0 = Read: pin is low; write: clear output bit. 628 * 1 = Read: pin is high; write: set output bit. 629 */ 630 #define GPIO_PIN_PORT(x) (((uint32_t)(((uint32_t)(x)) << GPIO_PIN_PORT_SHIFT)) & GPIO_PIN_PORT_MASK) 631 /*! @} */ 632 633 /* The count of GPIO_PIN */ 634 #define GPIO_PIN_COUNT (1U) 635 636 /*! @name MPIN - Masked port register */ 637 /*! @{ */ 638 #define GPIO_MPIN_MPORTP_MASK (0x3FFFFU) 639 #define GPIO_MPIN_MPORTP_SHIFT (0U) 640 /*! MPORTP - Masked port register (bit 0 = PIOn_0, bit 1 = PIOn_1, etc.). Supported pins depends on 641 * the specific device and package. 0 = Read: pin is LOW and/or the corresponding bit in the MASK 642 * register is 1; write: clear output bit if the corresponding bit in the MASK register is 0. 1 643 * = Read: pin is HIGH and the corresponding bit in the MASK register is 0; write: set output bit 644 * if the corresponding bit in the MASK register is 0. 645 */ 646 #define GPIO_MPIN_MPORTP(x) (((uint32_t)(((uint32_t)(x)) << GPIO_MPIN_MPORTP_SHIFT)) & GPIO_MPIN_MPORTP_MASK) 647 /*! @} */ 648 649 /* The count of GPIO_MPIN */ 650 #define GPIO_MPIN_COUNT (1U) 651 652 /*! @name SET - Write: Set register for port Read: output bits for port */ 653 /*! @{ */ 654 #define GPIO_SET_SETP_MASK (0x3FFFFU) 655 #define GPIO_SET_SETP_SHIFT (0U) 656 /*! SETP - Read or set output bits (bit 0 = PIOn_0, bit 1 = PIOn_1, etc.). Supported pins depends on 657 * the specific device and package. 0 = Read: output bit: write: no operation. 1 = Read: output 658 * bit; write: set output bit. 659 */ 660 #define GPIO_SET_SETP(x) (((uint32_t)(((uint32_t)(x)) << GPIO_SET_SETP_SHIFT)) & GPIO_SET_SETP_MASK) 661 /*! @} */ 662 663 /* The count of GPIO_SET */ 664 #define GPIO_SET_COUNT (1U) 665 666 /*! @name CLR - Clear port */ 667 /*! @{ */ 668 #define GPIO_CLR_CLRP_MASK (0x3FFFFU) 669 #define GPIO_CLR_CLRP_SHIFT (0U) 670 /*! CLRP - Clear output bits (bit 0 = PIOn_0, bit 1 = PIOn_1, etc.). Supported pins depends on the 671 * specific device and package. 0 = No operation. 1 = Clear output bit. 672 */ 673 #define GPIO_CLR_CLRP(x) (((uint32_t)(((uint32_t)(x)) << GPIO_CLR_CLRP_SHIFT)) & GPIO_CLR_CLRP_MASK) 674 /*! @} */ 675 676 /* The count of GPIO_CLR */ 677 #define GPIO_CLR_COUNT (1U) 678 679 /*! @name NOT - Toggle port */ 680 /*! @{ */ 681 #define GPIO_NOT_NOTP_MASK (0x3FFFFU) 682 #define GPIO_NOT_NOTP_SHIFT (0U) 683 /*! NOTP - Toggle output bits (bit 0 = PIOn_0, bit 1 = PIOn_1, etc.). Supported pins depends on the 684 * specific device and package. 0 = no operation. 1 = Toggle output bit. 685 */ 686 #define GPIO_NOT_NOTP(x) (((uint32_t)(((uint32_t)(x)) << GPIO_NOT_NOTP_SHIFT)) & GPIO_NOT_NOTP_MASK) 687 /*! @} */ 688 689 /* The count of GPIO_NOT */ 690 #define GPIO_NOT_COUNT (1U) 691 692 693 /*! 694 * @} 695 */ /* end of group GPIO_Register_Masks */ 696 697 698 /* GPIO - Peripheral instance base addresses */ 699 /** Peripheral GPIO base address */ 700 #define GPIO_BASE (0xA0000000u) 701 /** Peripheral GPIO base pointer */ 702 #define GPIO ((GPIO_Type *)GPIO_BASE) 703 /** Array initializer of GPIO peripheral base addresses */ 704 #define GPIO_BASE_ADDRS { GPIO_BASE } 705 /** Array initializer of GPIO peripheral base pointers */ 706 #define GPIO_BASE_PTRS { GPIO } 707 708 /*! 709 * @} 710 */ /* end of group GPIO_Peripheral_Access_Layer */ 711 712 713 /* ---------------------------------------------------------------------------- 714 -- I2C Peripheral Access Layer 715 ---------------------------------------------------------------------------- */ 716 717 /*! 718 * @addtogroup I2C_Peripheral_Access_Layer I2C Peripheral Access Layer 719 * @{ 720 */ 721 722 /** I2C - Register Layout Typedef */ 723 typedef struct { 724 __IO uint32_t CFG; /**< Configuration for shared functions., offset: 0x0 */ 725 __IO uint32_t STAT; /**< Status register for Master, Slave, and Monitor functions., offset: 0x4 */ 726 __IO uint32_t INTENSET; /**< Interrupt Enable Set and read register., offset: 0x8 */ 727 __O uint32_t INTENCLR; /**< Interrupt Enable Clear register., offset: 0xC */ 728 __IO uint32_t TIMEOUT; /**< Time-out value register., offset: 0x10 */ 729 __IO uint32_t CLKDIV; /**< Clock pre-divider for the entire I2C interface. This determines what time increments are used for the MSTTIME register, and controls some timing of the Slave function., offset: 0x14 */ 730 __I uint32_t INTSTAT; /**< Interrupt Status register for Master, Slave, and Monitor functions., offset: 0x18 */ 731 uint8_t RESERVED_0[4]; 732 __IO uint32_t MSTCTL; /**< Master control register., offset: 0x20 */ 733 __IO uint32_t MSTTIME; /**< Master timing configuration., offset: 0x24 */ 734 __IO uint32_t MSTDAT; /**< Combined Master receiver and transmitter data register., offset: 0x28 */ 735 uint8_t RESERVED_1[20]; 736 __IO uint32_t SLVCTL; /**< Slave control register., offset: 0x40 */ 737 __IO uint32_t SLVDAT; /**< Combined Slave receiver and transmitter data register., offset: 0x44 */ 738 __IO uint32_t SLVADR[4]; /**< Slave address register., array offset: 0x48, array step: 0x4 */ 739 __IO uint32_t SLVQUAL0; /**< Slave Qualification for address 0., offset: 0x58 */ 740 uint8_t RESERVED_2[36]; 741 __I uint32_t MONRXDAT; /**< Monitor receiver data register., offset: 0x80 */ 742 } I2C_Type; 743 744 /* ---------------------------------------------------------------------------- 745 -- I2C Register Masks 746 ---------------------------------------------------------------------------- */ 747 748 /*! 749 * @addtogroup I2C_Register_Masks I2C Register Masks 750 * @{ 751 */ 752 753 /*! @name CFG - Configuration for shared functions. */ 754 /*! @{ */ 755 #define I2C_CFG_MSTEN_MASK (0x1U) 756 #define I2C_CFG_MSTEN_SHIFT (0U) 757 /*! MSTEN - Master Enable. When disabled, configurations settings for the Master function are not 758 * changed, but the Master function is internally reset. 759 * 0b0..Disabled. The I2C Master function is disabled. 760 * 0b1..Enabled. The I2C Master function is enabled. 761 */ 762 #define I2C_CFG_MSTEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_CFG_MSTEN_SHIFT)) & I2C_CFG_MSTEN_MASK) 763 #define I2C_CFG_SLVEN_MASK (0x2U) 764 #define I2C_CFG_SLVEN_SHIFT (1U) 765 /*! SLVEN - Slave Enable. When disabled, configurations settings for the Slave function are not 766 * changed, but the Slave function is internally reset. 767 * 0b0..Disabled. The I2C slave function is disabled. 768 * 0b1..Enabled. The I2C slave function is enabled. 769 */ 770 #define I2C_CFG_SLVEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_CFG_SLVEN_SHIFT)) & I2C_CFG_SLVEN_MASK) 771 #define I2C_CFG_MONEN_MASK (0x4U) 772 #define I2C_CFG_MONEN_SHIFT (2U) 773 /*! MONEN - Monitor Enable. When disabled, configurations settings for the Monitor function are not 774 * changed, but the Monitor function is internally reset. 775 * 0b0..Disabled. The I2C Monitor function is disabled. 776 * 0b1..Enabled. The I2C Monitor function is enabled. 777 */ 778 #define I2C_CFG_MONEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_CFG_MONEN_SHIFT)) & I2C_CFG_MONEN_MASK) 779 #define I2C_CFG_TIMEOUTEN_MASK (0x8U) 780 #define I2C_CFG_TIMEOUTEN_SHIFT (3U) 781 /*! TIMEOUTEN - I2C bus Time-out Enable. When disabled, the time-out function is internally reset. 782 * 0b0..Disabled. Time-out function is disabled. 783 * 0b1..Enabled. Time-out function is enabled. Both types of time-out flags will be generated and will cause 784 * interrupts if they are enabled. Typically, only one time-out will be used in a system. 785 */ 786 #define I2C_CFG_TIMEOUTEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_CFG_TIMEOUTEN_SHIFT)) & I2C_CFG_TIMEOUTEN_MASK) 787 #define I2C_CFG_MONCLKSTR_MASK (0x10U) 788 #define I2C_CFG_MONCLKSTR_SHIFT (4U) 789 /*! MONCLKSTR - Monitor function Clock Stretching. 790 * 0b0..Disabled. The Monitor function will not perform clock stretching. Software or DMA may not always be able 791 * to read data provided by the Monitor function before it is overwritten. This mode may be used when 792 * non-invasive monitoring is critical. 793 * 0b1..Enabled. The Monitor function will perform clock stretching in order to ensure that software or DMA can 794 * read all incoming data supplied by the Monitor function. 795 */ 796 #define I2C_CFG_MONCLKSTR(x) (((uint32_t)(((uint32_t)(x)) << I2C_CFG_MONCLKSTR_SHIFT)) & I2C_CFG_MONCLKSTR_MASK) 797 /*! @} */ 798 799 /*! @name STAT - Status register for Master, Slave, and Monitor functions. */ 800 /*! @{ */ 801 #define I2C_STAT_MSTPENDING_MASK (0x1U) 802 #define I2C_STAT_MSTPENDING_SHIFT (0U) 803 /*! MSTPENDING - Master Pending. Indicates that the Master is waiting to continue communication on 804 * the I2C-bus (pending) or is idle. When the master is pending, the MSTSTATE bits indicate what 805 * type of software service if any the master expects. This flag will cause an interrupt when set 806 * if, enabled via the INTENSET register. The MSTPENDING flag is not set when the DMA is handling 807 * an event (if the MSTDMA bit in the MSTCTL register is set). If the master is in the idle 808 * state, and no communication is needed, mask this interrupt. 809 * 0b0..In progress. Communication is in progress and the Master function is busy and cannot currently accept a command. 810 * 0b1..Pending. The Master function needs software service or is in the idle state. If the master is not in the 811 * idle state, it is waiting to receive or transmit data or the NACK bit. 812 */ 813 #define I2C_STAT_MSTPENDING(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_MSTPENDING_SHIFT)) & I2C_STAT_MSTPENDING_MASK) 814 #define I2C_STAT_MSTSTATE_MASK (0xEU) 815 #define I2C_STAT_MSTSTATE_SHIFT (1U) 816 /*! MSTSTATE - Master State code. The master state code reflects the master state when the 817 * MSTPENDING bit is set, that is the master is pending or in the idle state. Each value of this field 818 * indicates a specific required service for the Master function. All other values are reserved. See 819 * Table 400 for details of state values and appropriate responses. 820 * 0b000..Idle. The Master function is available to be used for a new transaction. 821 * 0b001..Receive ready. Received data available (Master Receiver mode). Address plus Read was previously sent and Acknowledged by slave. 822 * 0b010..Transmit ready. Data can be transmitted (Master Transmitter mode). Address plus Write was previously sent and Acknowledged by slave. 823 * 0b011..NACK Address. Slave NACKed address. 824 * 0b100..NACK Data. Slave NACKed transmitted data. 825 */ 826 #define I2C_STAT_MSTSTATE(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_MSTSTATE_SHIFT)) & I2C_STAT_MSTSTATE_MASK) 827 #define I2C_STAT_MSTARBLOSS_MASK (0x10U) 828 #define I2C_STAT_MSTARBLOSS_SHIFT (4U) 829 /*! MSTARBLOSS - Master Arbitration Loss flag. This flag can be cleared by software writing a 1 to 830 * this bit. It is also cleared automatically a 1 is written to MSTCONTINUE. 831 * 0b0..No Arbitration Loss has occurred. 832 * 0b1..Arbitration loss. The Master function has experienced an Arbitration Loss. At this point, the Master 833 * function has already stopped driving the bus and gone to an idle state. Software can respond by doing nothing, 834 * or by sending a Start in order to attempt to gain control of the bus when it next becomes idle. 835 */ 836 #define I2C_STAT_MSTARBLOSS(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_MSTARBLOSS_SHIFT)) & I2C_STAT_MSTARBLOSS_MASK) 837 #define I2C_STAT_MSTSTSTPERR_MASK (0x40U) 838 #define I2C_STAT_MSTSTSTPERR_SHIFT (6U) 839 /*! MSTSTSTPERR - Master Start/Stop Error flag. This flag can be cleared by software writing a 1 to 840 * this bit. It is also cleared automatically a 1 is written to MSTCONTINUE. 841 * 0b0..No Start/Stop Error has occurred. 842 * 0b1..The Master function has experienced a Start/Stop Error. A Start or Stop was detected at a time when it is 843 * not allowed by the I2C specification. The Master interface has stopped driving the bus and gone to an 844 * idle state, no action is required. A request for a Start could be made, or software could attempt to insure 845 * that the bus has not stalled. 846 */ 847 #define I2C_STAT_MSTSTSTPERR(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_MSTSTSTPERR_SHIFT)) & I2C_STAT_MSTSTSTPERR_MASK) 848 #define I2C_STAT_SLVPENDING_MASK (0x100U) 849 #define I2C_STAT_SLVPENDING_SHIFT (8U) 850 /*! SLVPENDING - Slave Pending. Indicates that the Slave function is waiting to continue 851 * communication on the I2C-bus and needs software service. This flag will cause an interrupt when set if 852 * enabled via INTENSET. The SLVPENDING flag is not set when the DMA is handling an event (if the 853 * SLVDMA bit in the SLVCTL register is set). The SLVPENDING flag is read-only and is 854 * automatically cleared when a 1 is written to the SLVCONTINUE bit in the SLVCTL register. The point in time 855 * when SlvPending is set depends on whether the I2C interface is in HSCAPABLE mode. See Section 856 * 25.7.2.2.2. When the I2C interface is configured to be HSCAPABLE, HS master codes are 857 * detected automatically. Due to the requirements of the HS I2C specification, slave addresses must 858 * also be detected automatically, since the address must be acknowledged before the clock can be 859 * stretched. 860 * 0b0..In progress. The Slave function does not currently need service. 861 * 0b1..Pending. The Slave function needs service. Information on what is needed can be found in the adjacent SLVSTATE field. 862 */ 863 #define I2C_STAT_SLVPENDING(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_SLVPENDING_SHIFT)) & I2C_STAT_SLVPENDING_MASK) 864 #define I2C_STAT_SLVSTATE_MASK (0x600U) 865 #define I2C_STAT_SLVSTATE_SHIFT (9U) 866 /*! SLVSTATE - Slave State code. Each value of this field indicates a specific required service for 867 * the Slave function. All other values are reserved. See Table 401 for state values and actions. 868 * note that the occurrence of some states and how they are handled are affected by DMA mode and 869 * Automatic Operation modes. 870 * 0b00..Slave address. Address plus R/W received. At least one of the four slave addresses has been matched by hardware. 871 * 0b01..Slave receive. Received data is available (Slave Receiver mode). 872 * 0b10..Slave transmit. Data can be transmitted (Slave Transmitter mode). 873 */ 874 #define I2C_STAT_SLVSTATE(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_SLVSTATE_SHIFT)) & I2C_STAT_SLVSTATE_MASK) 875 #define I2C_STAT_SLVNOTSTR_MASK (0x800U) 876 #define I2C_STAT_SLVNOTSTR_SHIFT (11U) 877 /*! SLVNOTSTR - Slave Not Stretching. Indicates when the slave function is stretching the I2C clock. 878 * This is needed in order to gracefully invoke Deep Sleep or Power-down modes during slave 879 * operation. This read-only flag reflects the slave function status in real time. 880 * 0b0..Stretching. The slave function is currently stretching the I2C bus clock. Deep-Sleep or Power-down mode cannot be entered at this time. 881 * 0b1..Not stretching. The slave function is not currently stretching the I 2C bus clock. Deep-sleep or 882 * Power-down mode could be entered at this time. 883 */ 884 #define I2C_STAT_SLVNOTSTR(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_SLVNOTSTR_SHIFT)) & I2C_STAT_SLVNOTSTR_MASK) 885 #define I2C_STAT_SLVIDX_MASK (0x3000U) 886 #define I2C_STAT_SLVIDX_SHIFT (12U) 887 /*! SLVIDX - Slave address match Index. This field is valid when the I2C slave function has been 888 * selected by receiving an address that matches one of the slave addresses defined by any enabled 889 * slave address registers, and provides an identification of the address that was matched. It is 890 * possible that more than one address could be matched, but only one match can be reported here. 891 * 0b00..Address 0. Slave address 0 was matched. 892 * 0b01..Address 1. Slave address 1 was matched. 893 * 0b10..Address 2. Slave address 2 was matched. 894 * 0b11..Address 3. Slave address 3 was matched. 895 */ 896 #define I2C_STAT_SLVIDX(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_SLVIDX_SHIFT)) & I2C_STAT_SLVIDX_MASK) 897 #define I2C_STAT_SLVSEL_MASK (0x4000U) 898 #define I2C_STAT_SLVSEL_SHIFT (14U) 899 /*! SLVSEL - Slave selected flag. SLVSEL is set after an address match when software tells the Slave 900 * function to acknowledge the address, or when the address has been automatically acknowledged. 901 * It is cleared when another address cycle presents an address that does not match an enabled 902 * address on the Slave function, when slave software decides to NACK a matched address, when 903 * there is a Stop detected on the bus, when the master NACKs slave data, and in some combinations of 904 * Automatic Operation. SLVSEL is not cleared if software NACKs data. 905 * 0b0..Not selected. The Slave function is not currently selected. 906 * 0b1..Selected. The Slave function is currently selected. 907 */ 908 #define I2C_STAT_SLVSEL(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_SLVSEL_SHIFT)) & I2C_STAT_SLVSEL_MASK) 909 #define I2C_STAT_SLVDESEL_MASK (0x8000U) 910 #define I2C_STAT_SLVDESEL_SHIFT (15U) 911 /*! SLVDESEL - Slave Deselected flag. This flag will cause an interrupt when set if enabled via 912 * INTENSET. This flag can be cleared by writing a 1 to this bit. 913 * 0b0..Not deselected. The Slave function has not become deselected. This does not mean that it is currently 914 * selected. That information can be found in the SLVSEL flag. 915 * 0b1..Deselected. The Slave function has become deselected. This is specifically caused by the SLVSEL flag 916 * changing from 1 to 0. See the description of SLVSEL for details on when that event occurs. 917 */ 918 #define I2C_STAT_SLVDESEL(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_SLVDESEL_SHIFT)) & I2C_STAT_SLVDESEL_MASK) 919 #define I2C_STAT_MONRDY_MASK (0x10000U) 920 #define I2C_STAT_MONRDY_SHIFT (16U) 921 /*! MONRDY - Monitor Ready. This flag is cleared when the MONRXDAT register is read. 922 * 0b0..No data. The Monitor function does not currently have data available. 923 * 0b1..Data waiting. The Monitor function has data waiting to be read. 924 */ 925 #define I2C_STAT_MONRDY(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_MONRDY_SHIFT)) & I2C_STAT_MONRDY_MASK) 926 #define I2C_STAT_MONOV_MASK (0x20000U) 927 #define I2C_STAT_MONOV_SHIFT (17U) 928 /*! MONOV - Monitor Overflow flag. 929 * 0b0..No overrun. Monitor data has not overrun. 930 * 0b1..Overrun. A Monitor data overrun has occurred. This can only happen when Monitor clock stretching not 931 * enabled via the MONCLKSTR bit in the CFG register. Writing 1 to this bit clears the flag. 932 */ 933 #define I2C_STAT_MONOV(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_MONOV_SHIFT)) & I2C_STAT_MONOV_MASK) 934 #define I2C_STAT_MONACTIVE_MASK (0x40000U) 935 #define I2C_STAT_MONACTIVE_SHIFT (18U) 936 /*! MONACTIVE - Monitor Active flag. Indicates when the Monitor function considers the I 2C bus to 937 * be active. Active is defined here as when some Master is on the bus: a bus Start has occurred 938 * more recently than a bus Stop. 939 * 0b0..Inactive. The Monitor function considers the I2C bus to be inactive. 940 * 0b1..Active. The Monitor function considers the I2C bus to be active. 941 */ 942 #define I2C_STAT_MONACTIVE(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_MONACTIVE_SHIFT)) & I2C_STAT_MONACTIVE_MASK) 943 #define I2C_STAT_MONIDLE_MASK (0x80000U) 944 #define I2C_STAT_MONIDLE_SHIFT (19U) 945 /*! MONIDLE - Monitor Idle flag. This flag is set when the Monitor function sees the I2C bus change 946 * from active to inactive. This can be used by software to decide when to process data 947 * accumulated by the Monitor function. This flag will cause an interrupt when set if enabled via the 948 * INTENSET register. The flag can be cleared by writing a 1 to this bit. 949 * 0b0..Not idle. The I2C bus is not idle, or this flag has been cleared by software. 950 * 0b1..Idle. The I2C bus has gone idle at least once since the last time this flag was cleared by software. 951 */ 952 #define I2C_STAT_MONIDLE(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_MONIDLE_SHIFT)) & I2C_STAT_MONIDLE_MASK) 953 #define I2C_STAT_EVENTTIMEOUT_MASK (0x1000000U) 954 #define I2C_STAT_EVENTTIMEOUT_SHIFT (24U) 955 /*! EVENTTIMEOUT - Event Time-out Interrupt flag. Indicates when the time between events has been 956 * longer than the time specified by the TIMEOUT register. Events include Start, Stop, and clock 957 * edges. The flag is cleared by writing a 1 to this bit. No time-out is created when the I2C-bus 958 * is idle. 959 * 0b0..No time-out. I2C bus events have not caused a time-out. 960 * 0b1..Event time-out. The time between I2C bus events has been longer than the time specified by the TIMEOUT register. 961 */ 962 #define I2C_STAT_EVENTTIMEOUT(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_EVENTTIMEOUT_SHIFT)) & I2C_STAT_EVENTTIMEOUT_MASK) 963 #define I2C_STAT_SCLTIMEOUT_MASK (0x2000000U) 964 #define I2C_STAT_SCLTIMEOUT_SHIFT (25U) 965 /*! SCLTIMEOUT - SCL Time-out Interrupt flag. Indicates when SCL has remained low longer than the 966 * time specific by the TIMEOUT register. The flag is cleared by writing a 1 to this bit. 967 * 0b0..No time-out. SCL low time has not caused a time-out. 968 * 0b1..Time-out. SCL low time has caused a time-out. 969 */ 970 #define I2C_STAT_SCLTIMEOUT(x) (((uint32_t)(((uint32_t)(x)) << I2C_STAT_SCLTIMEOUT_SHIFT)) & I2C_STAT_SCLTIMEOUT_MASK) 971 /*! @} */ 972 973 /*! @name INTENSET - Interrupt Enable Set and read register. */ 974 /*! @{ */ 975 #define I2C_INTENSET_MSTPENDINGEN_MASK (0x1U) 976 #define I2C_INTENSET_MSTPENDINGEN_SHIFT (0U) 977 /*! MSTPENDINGEN - Master Pending interrupt Enable. 978 * 0b0..Disabled. The MstPending interrupt is disabled. 979 * 0b1..Enabled. The MstPending interrupt is enabled. 980 */ 981 #define I2C_INTENSET_MSTPENDINGEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_MSTPENDINGEN_SHIFT)) & I2C_INTENSET_MSTPENDINGEN_MASK) 982 #define I2C_INTENSET_MSTARBLOSSEN_MASK (0x10U) 983 #define I2C_INTENSET_MSTARBLOSSEN_SHIFT (4U) 984 /*! MSTARBLOSSEN - Master Arbitration Loss interrupt Enable. 985 * 0b0..Disabled. The MstArbLoss interrupt is disabled. 986 * 0b1..Enabled. The MstArbLoss interrupt is enabled. 987 */ 988 #define I2C_INTENSET_MSTARBLOSSEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_MSTARBLOSSEN_SHIFT)) & I2C_INTENSET_MSTARBLOSSEN_MASK) 989 #define I2C_INTENSET_MSTSTSTPERREN_MASK (0x40U) 990 #define I2C_INTENSET_MSTSTSTPERREN_SHIFT (6U) 991 /*! MSTSTSTPERREN - Master Start/Stop Error interrupt Enable. 992 * 0b0..Disabled. The MstStStpErr interrupt is disabled. 993 * 0b1..Enabled. The MstStStpErr interrupt is enabled. 994 */ 995 #define I2C_INTENSET_MSTSTSTPERREN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_MSTSTSTPERREN_SHIFT)) & I2C_INTENSET_MSTSTSTPERREN_MASK) 996 #define I2C_INTENSET_SLVPENDINGEN_MASK (0x100U) 997 #define I2C_INTENSET_SLVPENDINGEN_SHIFT (8U) 998 /*! SLVPENDINGEN - Slave Pending interrupt Enable. 999 * 0b0..Disabled. The SlvPending interrupt is disabled. 1000 * 0b1..Enabled. The SlvPending interrupt is enabled. 1001 */ 1002 #define I2C_INTENSET_SLVPENDINGEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_SLVPENDINGEN_SHIFT)) & I2C_INTENSET_SLVPENDINGEN_MASK) 1003 #define I2C_INTENSET_SLVNOTSTREN_MASK (0x800U) 1004 #define I2C_INTENSET_SLVNOTSTREN_SHIFT (11U) 1005 /*! SLVNOTSTREN - Slave Not Stretching interrupt Enable. 1006 * 0b0..Disabled. The SlvNotStr interrupt is disabled. 1007 * 0b1..Enabled. The SlvNotStr interrupt is enabled. 1008 */ 1009 #define I2C_INTENSET_SLVNOTSTREN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_SLVNOTSTREN_SHIFT)) & I2C_INTENSET_SLVNOTSTREN_MASK) 1010 #define I2C_INTENSET_SLVDESELEN_MASK (0x8000U) 1011 #define I2C_INTENSET_SLVDESELEN_SHIFT (15U) 1012 /*! SLVDESELEN - Slave Deselect interrupt Enable. 1013 * 0b0..Disabled. The SlvDeSel interrupt is disabled. 1014 * 0b1..Enabled. The SlvDeSel interrupt is enabled. 1015 */ 1016 #define I2C_INTENSET_SLVDESELEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_SLVDESELEN_SHIFT)) & I2C_INTENSET_SLVDESELEN_MASK) 1017 #define I2C_INTENSET_MONRDYEN_MASK (0x10000U) 1018 #define I2C_INTENSET_MONRDYEN_SHIFT (16U) 1019 /*! MONRDYEN - Monitor data Ready interrupt Enable. 1020 * 0b0..Disabled. The MonRdy interrupt is disabled. 1021 * 0b1..Enabled. The MonRdy interrupt is enabled. 1022 */ 1023 #define I2C_INTENSET_MONRDYEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_MONRDYEN_SHIFT)) & I2C_INTENSET_MONRDYEN_MASK) 1024 #define I2C_INTENSET_MONOVEN_MASK (0x20000U) 1025 #define I2C_INTENSET_MONOVEN_SHIFT (17U) 1026 /*! MONOVEN - Monitor Overrun interrupt Enable. 1027 * 0b0..Disabled. The MonOv interrupt is disabled. 1028 * 0b1..Enabled. The MonOv interrupt is enabled. 1029 */ 1030 #define I2C_INTENSET_MONOVEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_MONOVEN_SHIFT)) & I2C_INTENSET_MONOVEN_MASK) 1031 #define I2C_INTENSET_MONIDLEEN_MASK (0x80000U) 1032 #define I2C_INTENSET_MONIDLEEN_SHIFT (19U) 1033 /*! MONIDLEEN - Monitor Idle interrupt Enable. 1034 * 0b0..Disabled. The MonIdle interrupt is disabled. 1035 * 0b1..Enabled. The MonIdle interrupt is enabled. 1036 */ 1037 #define I2C_INTENSET_MONIDLEEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_MONIDLEEN_SHIFT)) & I2C_INTENSET_MONIDLEEN_MASK) 1038 #define I2C_INTENSET_EVENTTIMEOUTEN_MASK (0x1000000U) 1039 #define I2C_INTENSET_EVENTTIMEOUTEN_SHIFT (24U) 1040 /*! EVENTTIMEOUTEN - Event time-out interrupt Enable. 1041 * 0b0..Disabled. The Event time-out interrupt is disabled. 1042 * 0b1..Enabled. The Event time-out interrupt is enabled. 1043 */ 1044 #define I2C_INTENSET_EVENTTIMEOUTEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_EVENTTIMEOUTEN_SHIFT)) & I2C_INTENSET_EVENTTIMEOUTEN_MASK) 1045 #define I2C_INTENSET_SCLTIMEOUTEN_MASK (0x2000000U) 1046 #define I2C_INTENSET_SCLTIMEOUTEN_SHIFT (25U) 1047 /*! SCLTIMEOUTEN - SCL time-out interrupt Enable. 1048 * 0b0..Disabled. The SCL time-out interrupt is disabled. 1049 * 0b1..Enabled. The SCL time-out interrupt is enabled. 1050 */ 1051 #define I2C_INTENSET_SCLTIMEOUTEN(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENSET_SCLTIMEOUTEN_SHIFT)) & I2C_INTENSET_SCLTIMEOUTEN_MASK) 1052 /*! @} */ 1053 1054 /*! @name INTENCLR - Interrupt Enable Clear register. */ 1055 /*! @{ */ 1056 #define I2C_INTENCLR_MSTPENDINGCLR_MASK (0x1U) 1057 #define I2C_INTENCLR_MSTPENDINGCLR_SHIFT (0U) 1058 /*! MSTPENDINGCLR - Master Pending interrupt clear. Writing 1 to this bit clears the corresponding 1059 * bit in the INTENSET register if implemented. 1060 */ 1061 #define I2C_INTENCLR_MSTPENDINGCLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_MSTPENDINGCLR_SHIFT)) & I2C_INTENCLR_MSTPENDINGCLR_MASK) 1062 #define I2C_INTENCLR_MSTARBLOSSCLR_MASK (0x10U) 1063 #define I2C_INTENCLR_MSTARBLOSSCLR_SHIFT (4U) 1064 /*! MSTARBLOSSCLR - Master Arbitration Loss interrupt clear. 1065 */ 1066 #define I2C_INTENCLR_MSTARBLOSSCLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_MSTARBLOSSCLR_SHIFT)) & I2C_INTENCLR_MSTARBLOSSCLR_MASK) 1067 #define I2C_INTENCLR_MSTSTSTPERRCLR_MASK (0x40U) 1068 #define I2C_INTENCLR_MSTSTSTPERRCLR_SHIFT (6U) 1069 /*! MSTSTSTPERRCLR - Master Start/Stop Error interrupt clear. 1070 */ 1071 #define I2C_INTENCLR_MSTSTSTPERRCLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_MSTSTSTPERRCLR_SHIFT)) & I2C_INTENCLR_MSTSTSTPERRCLR_MASK) 1072 #define I2C_INTENCLR_SLVPENDINGCLR_MASK (0x100U) 1073 #define I2C_INTENCLR_SLVPENDINGCLR_SHIFT (8U) 1074 /*! SLVPENDINGCLR - Slave Pending interrupt clear. 1075 */ 1076 #define I2C_INTENCLR_SLVPENDINGCLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_SLVPENDINGCLR_SHIFT)) & I2C_INTENCLR_SLVPENDINGCLR_MASK) 1077 #define I2C_INTENCLR_SLVNOTSTRCLR_MASK (0x800U) 1078 #define I2C_INTENCLR_SLVNOTSTRCLR_SHIFT (11U) 1079 /*! SLVNOTSTRCLR - Slave Not Stretching interrupt clear. 1080 */ 1081 #define I2C_INTENCLR_SLVNOTSTRCLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_SLVNOTSTRCLR_SHIFT)) & I2C_INTENCLR_SLVNOTSTRCLR_MASK) 1082 #define I2C_INTENCLR_SLVDESELCLR_MASK (0x8000U) 1083 #define I2C_INTENCLR_SLVDESELCLR_SHIFT (15U) 1084 /*! SLVDESELCLR - Slave Deselect interrupt clear. 1085 */ 1086 #define I2C_INTENCLR_SLVDESELCLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_SLVDESELCLR_SHIFT)) & I2C_INTENCLR_SLVDESELCLR_MASK) 1087 #define I2C_INTENCLR_MONRDYCLR_MASK (0x10000U) 1088 #define I2C_INTENCLR_MONRDYCLR_SHIFT (16U) 1089 /*! MONRDYCLR - Monitor data Ready interrupt clear. 1090 */ 1091 #define I2C_INTENCLR_MONRDYCLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_MONRDYCLR_SHIFT)) & I2C_INTENCLR_MONRDYCLR_MASK) 1092 #define I2C_INTENCLR_MONOVCLR_MASK (0x20000U) 1093 #define I2C_INTENCLR_MONOVCLR_SHIFT (17U) 1094 /*! MONOVCLR - Monitor Overrun interrupt clear. 1095 */ 1096 #define I2C_INTENCLR_MONOVCLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_MONOVCLR_SHIFT)) & I2C_INTENCLR_MONOVCLR_MASK) 1097 #define I2C_INTENCLR_MONIDLECLR_MASK (0x80000U) 1098 #define I2C_INTENCLR_MONIDLECLR_SHIFT (19U) 1099 /*! MONIDLECLR - Monitor Idle interrupt clear. 1100 */ 1101 #define I2C_INTENCLR_MONIDLECLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_MONIDLECLR_SHIFT)) & I2C_INTENCLR_MONIDLECLR_MASK) 1102 #define I2C_INTENCLR_EVENTTIMEOUTCLR_MASK (0x1000000U) 1103 #define I2C_INTENCLR_EVENTTIMEOUTCLR_SHIFT (24U) 1104 /*! EVENTTIMEOUTCLR - Event time-out interrupt clear. 1105 */ 1106 #define I2C_INTENCLR_EVENTTIMEOUTCLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_EVENTTIMEOUTCLR_SHIFT)) & I2C_INTENCLR_EVENTTIMEOUTCLR_MASK) 1107 #define I2C_INTENCLR_SCLTIMEOUTCLR_MASK (0x2000000U) 1108 #define I2C_INTENCLR_SCLTIMEOUTCLR_SHIFT (25U) 1109 /*! SCLTIMEOUTCLR - SCL time-out interrupt clear. 1110 */ 1111 #define I2C_INTENCLR_SCLTIMEOUTCLR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTENCLR_SCLTIMEOUTCLR_SHIFT)) & I2C_INTENCLR_SCLTIMEOUTCLR_MASK) 1112 /*! @} */ 1113 1114 /*! @name TIMEOUT - Time-out value register. */ 1115 /*! @{ */ 1116 #define I2C_TIMEOUT_TOMIN_MASK (0xFU) 1117 #define I2C_TIMEOUT_TOMIN_SHIFT (0U) 1118 /*! TOMIN - Time-out time value, bottom four bits. These are hard-wired to 0xF. This gives a minimum 1119 * time-out of 16 I2C function clocks and also a time-out resolution of 16 I2C function clocks. 1120 */ 1121 #define I2C_TIMEOUT_TOMIN(x) (((uint32_t)(((uint32_t)(x)) << I2C_TIMEOUT_TOMIN_SHIFT)) & I2C_TIMEOUT_TOMIN_MASK) 1122 #define I2C_TIMEOUT_TO_MASK (0xFFF0U) 1123 #define I2C_TIMEOUT_TO_SHIFT (4U) 1124 /*! TO - Time-out time value. Specifies the time-out interval value in increments of 16 I 2C 1125 * function clocks, as defined by the CLKDIV register. To change this value while I2C is in operation, 1126 * disable all time-outs, write a new value to TIMEOUT, then re-enable time-outs. 0x000 = A 1127 * time-out will occur after 16 counts of the I2C function clock. 0x001 = A time-out will occur after 1128 * 32 counts of the I2C function clock. 0xFFF = A time-out will occur after 65,536 counts of the 1129 * I2C function clock. 1130 */ 1131 #define I2C_TIMEOUT_TO(x) (((uint32_t)(((uint32_t)(x)) << I2C_TIMEOUT_TO_SHIFT)) & I2C_TIMEOUT_TO_MASK) 1132 /*! @} */ 1133 1134 /*! @name CLKDIV - Clock pre-divider for the entire I2C interface. This determines what time increments are used for the MSTTIME register, and controls some timing of the Slave function. */ 1135 /*! @{ */ 1136 #define I2C_CLKDIV_DIVVAL_MASK (0xFFFFU) 1137 #define I2C_CLKDIV_DIVVAL_SHIFT (0U) 1138 /*! DIVVAL - This field controls how the Flexcomm clock (FCLK) is used by the I2C functions that 1139 * need an internal clock in order to operate. 0x0000 = FCLK is used directly by the I2C. 0x0001 = 1140 * FCLK is divided by 2 before use. 0x0002 = FCLK is divided by 3 before use. 0xFFFF = FCLK is 1141 * divided by 65,536 before use. 1142 */ 1143 #define I2C_CLKDIV_DIVVAL(x) (((uint32_t)(((uint32_t)(x)) << I2C_CLKDIV_DIVVAL_SHIFT)) & I2C_CLKDIV_DIVVAL_MASK) 1144 /*! @} */ 1145 1146 /*! @name INTSTAT - Interrupt Status register for Master, Slave, and Monitor functions. */ 1147 /*! @{ */ 1148 #define I2C_INTSTAT_MSTPENDING_MASK (0x1U) 1149 #define I2C_INTSTAT_MSTPENDING_SHIFT (0U) 1150 /*! MSTPENDING - Master Pending. 1151 */ 1152 #define I2C_INTSTAT_MSTPENDING(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_MSTPENDING_SHIFT)) & I2C_INTSTAT_MSTPENDING_MASK) 1153 #define I2C_INTSTAT_MSTARBLOSS_MASK (0x10U) 1154 #define I2C_INTSTAT_MSTARBLOSS_SHIFT (4U) 1155 /*! MSTARBLOSS - Master Arbitration Loss flag. 1156 */ 1157 #define I2C_INTSTAT_MSTARBLOSS(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_MSTARBLOSS_SHIFT)) & I2C_INTSTAT_MSTARBLOSS_MASK) 1158 #define I2C_INTSTAT_MSTSTSTPERR_MASK (0x40U) 1159 #define I2C_INTSTAT_MSTSTSTPERR_SHIFT (6U) 1160 /*! MSTSTSTPERR - Master Start/Stop Error flag. 1161 */ 1162 #define I2C_INTSTAT_MSTSTSTPERR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_MSTSTSTPERR_SHIFT)) & I2C_INTSTAT_MSTSTSTPERR_MASK) 1163 #define I2C_INTSTAT_SLVPENDING_MASK (0x100U) 1164 #define I2C_INTSTAT_SLVPENDING_SHIFT (8U) 1165 /*! SLVPENDING - Slave Pending. 1166 */ 1167 #define I2C_INTSTAT_SLVPENDING(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_SLVPENDING_SHIFT)) & I2C_INTSTAT_SLVPENDING_MASK) 1168 #define I2C_INTSTAT_SLVNOTSTR_MASK (0x800U) 1169 #define I2C_INTSTAT_SLVNOTSTR_SHIFT (11U) 1170 /*! SLVNOTSTR - Slave Not Stretching status. 1171 */ 1172 #define I2C_INTSTAT_SLVNOTSTR(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_SLVNOTSTR_SHIFT)) & I2C_INTSTAT_SLVNOTSTR_MASK) 1173 #define I2C_INTSTAT_SLVDESEL_MASK (0x8000U) 1174 #define I2C_INTSTAT_SLVDESEL_SHIFT (15U) 1175 /*! SLVDESEL - Slave Deselected flag. 1176 */ 1177 #define I2C_INTSTAT_SLVDESEL(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_SLVDESEL_SHIFT)) & I2C_INTSTAT_SLVDESEL_MASK) 1178 #define I2C_INTSTAT_MONRDY_MASK (0x10000U) 1179 #define I2C_INTSTAT_MONRDY_SHIFT (16U) 1180 /*! MONRDY - Monitor Ready. 1181 */ 1182 #define I2C_INTSTAT_MONRDY(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_MONRDY_SHIFT)) & I2C_INTSTAT_MONRDY_MASK) 1183 #define I2C_INTSTAT_MONOV_MASK (0x20000U) 1184 #define I2C_INTSTAT_MONOV_SHIFT (17U) 1185 /*! MONOV - Monitor Overflow flag. 1186 */ 1187 #define I2C_INTSTAT_MONOV(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_MONOV_SHIFT)) & I2C_INTSTAT_MONOV_MASK) 1188 #define I2C_INTSTAT_MONIDLE_MASK (0x80000U) 1189 #define I2C_INTSTAT_MONIDLE_SHIFT (19U) 1190 /*! MONIDLE - Monitor Idle flag. 1191 */ 1192 #define I2C_INTSTAT_MONIDLE(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_MONIDLE_SHIFT)) & I2C_INTSTAT_MONIDLE_MASK) 1193 #define I2C_INTSTAT_EVENTTIMEOUT_MASK (0x1000000U) 1194 #define I2C_INTSTAT_EVENTTIMEOUT_SHIFT (24U) 1195 /*! EVENTTIMEOUT - Event time-out Interrupt flag. 1196 */ 1197 #define I2C_INTSTAT_EVENTTIMEOUT(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_EVENTTIMEOUT_SHIFT)) & I2C_INTSTAT_EVENTTIMEOUT_MASK) 1198 #define I2C_INTSTAT_SCLTIMEOUT_MASK (0x2000000U) 1199 #define I2C_INTSTAT_SCLTIMEOUT_SHIFT (25U) 1200 /*! SCLTIMEOUT - SCL time-out Interrupt flag. 1201 */ 1202 #define I2C_INTSTAT_SCLTIMEOUT(x) (((uint32_t)(((uint32_t)(x)) << I2C_INTSTAT_SCLTIMEOUT_SHIFT)) & I2C_INTSTAT_SCLTIMEOUT_MASK) 1203 /*! @} */ 1204 1205 /*! @name MSTCTL - Master control register. */ 1206 /*! @{ */ 1207 #define I2C_MSTCTL_MSTCONTINUE_MASK (0x1U) 1208 #define I2C_MSTCTL_MSTCONTINUE_SHIFT (0U) 1209 /*! MSTCONTINUE - Master Continue. 1210 * 0b0..No effect. 1211 * 0b1..Informs the Master function to continue to the next operation. 1212 */ 1213 #define I2C_MSTCTL_MSTCONTINUE(x) (((uint32_t)(((uint32_t)(x)) << I2C_MSTCTL_MSTCONTINUE_SHIFT)) & I2C_MSTCTL_MSTCONTINUE_MASK) 1214 #define I2C_MSTCTL_MSTSTART_MASK (0x2U) 1215 #define I2C_MSTCTL_MSTSTART_SHIFT (1U) 1216 /*! MSTSTART - Master Start control. 1217 * 0b0..No effect. 1218 * 0b1..Start. A Start will be generated on the I2C bus at the next allowed time. 1219 */ 1220 #define I2C_MSTCTL_MSTSTART(x) (((uint32_t)(((uint32_t)(x)) << I2C_MSTCTL_MSTSTART_SHIFT)) & I2C_MSTCTL_MSTSTART_MASK) 1221 #define I2C_MSTCTL_MSTSTOP_MASK (0x4U) 1222 #define I2C_MSTCTL_MSTSTOP_SHIFT (2U) 1223 /*! MSTSTOP - Master Stop control. 1224 * 0b0..No effect. 1225 * 0b1..Stop. A Stop will be generated on the I2C bus at the next allowed time, preceded by a NACK to the slave 1226 * if the master is receiving data from the slave (Master Receiver mode). 1227 */ 1228 #define I2C_MSTCTL_MSTSTOP(x) (((uint32_t)(((uint32_t)(x)) << I2C_MSTCTL_MSTSTOP_SHIFT)) & I2C_MSTCTL_MSTSTOP_MASK) 1229 /*! @} */ 1230 1231 /*! @name MSTTIME - Master timing configuration. */ 1232 /*! @{ */ 1233 #define I2C_MSTTIME_MSTSCLLOW_MASK (0x7U) 1234 #define I2C_MSTTIME_MSTSCLLOW_SHIFT (0U) 1235 /*! MSTSCLLOW - Master SCL Low time. Specifies the minimum low time that will be asserted by this 1236 * master on SCL. Other devices on the bus (masters or slaves) could lengthen this time. This 1237 * corresponds to the parameter t LOW in the I2C bus specification. I2C bus specification parameters 1238 * tBUF and tSU;STA have the same values and are also controlled by MSTSCLLOW. 1239 * 0b000..2 clocks. Minimum SCL low time is 2 clocks of the I2C clock pre-divider. 1240 * 0b001..3 clocks. Minimum SCL low time is 3 clocks of the I2C clock pre-divider. 1241 * 0b010..4 clocks. Minimum SCL low time is 4 clocks of the I2C clock pre-divider. 1242 * 0b011..5 clocks. Minimum SCL low time is 5 clocks of the I2C clock pre-divider. 1243 * 0b100..6 clocks. Minimum SCL low time is 6 clocks of the I2C clock pre-divider. 1244 * 0b101..7 clocks. Minimum SCL low time is 7 clocks of the I2C clock pre-divider. 1245 * 0b110..8 clocks. Minimum SCL low time is 8 clocks of the I2C clock pre-divider. 1246 * 0b111..9 clocks. Minimum SCL low time is 9 clocks of the I2C clock pre-divider. 1247 */ 1248 #define I2C_MSTTIME_MSTSCLLOW(x) (((uint32_t)(((uint32_t)(x)) << I2C_MSTTIME_MSTSCLLOW_SHIFT)) & I2C_MSTTIME_MSTSCLLOW_MASK) 1249 #define I2C_MSTTIME_MSTSCLHIGH_MASK (0x70U) 1250 #define I2C_MSTTIME_MSTSCLHIGH_SHIFT (4U) 1251 /*! MSTSCLHIGH - Master SCL High time. Specifies the minimum high time that will be asserted by this 1252 * master on SCL. Other masters in a multi-master system could shorten this time. This 1253 * corresponds to the parameter tHIGH in the I2C bus specification. I2C bus specification parameters 1254 * tSU;STO and tHD;STA have the same values and are also controlled by MSTSCLHIGH. 1255 * 0b000..2 clocks. Minimum SCL high time is 2 clock of the I2C clock pre-divider. 1256 * 0b001..3 clocks. Minimum SCL high time is 3 clocks of the I2C clock pre-divider . 1257 * 0b010..4 clocks. Minimum SCL high time is 4 clock of the I2C clock pre-divider. 1258 * 0b011..5 clocks. Minimum SCL high time is 5 clock of the I2C clock pre-divider. 1259 * 0b100..6 clocks. Minimum SCL high time is 6 clock of the I2C clock pre-divider. 1260 * 0b101..7 clocks. Minimum SCL high time is 7 clock of the I2C clock pre-divider. 1261 * 0b110..8 clocks. Minimum SCL high time is 8 clock of the I2C clock pre-divider. 1262 * 0b111..9 clocks. Minimum SCL high time is 9 clocks of the I2C clock pre-divider. 1263 */ 1264 #define I2C_MSTTIME_MSTSCLHIGH(x) (((uint32_t)(((uint32_t)(x)) << I2C_MSTTIME_MSTSCLHIGH_SHIFT)) & I2C_MSTTIME_MSTSCLHIGH_MASK) 1265 /*! @} */ 1266 1267 /*! @name MSTDAT - Combined Master receiver and transmitter data register. */ 1268 /*! @{ */ 1269 #define I2C_MSTDAT_DATA_MASK (0xFFU) 1270 #define I2C_MSTDAT_DATA_SHIFT (0U) 1271 /*! DATA - Master function data register. Read: read the most recently received data for the Master 1272 * function. Write: transmit data using the Master function. 1273 */ 1274 #define I2C_MSTDAT_DATA(x) (((uint32_t)(((uint32_t)(x)) << I2C_MSTDAT_DATA_SHIFT)) & I2C_MSTDAT_DATA_MASK) 1275 /*! @} */ 1276 1277 /*! @name SLVCTL - Slave control register. */ 1278 /*! @{ */ 1279 #define I2C_SLVCTL_SLVCONTINUE_MASK (0x1U) 1280 #define I2C_SLVCTL_SLVCONTINUE_SHIFT (0U) 1281 /*! SLVCONTINUE - Slave Continue. 1282 * 0b0..No effect. 1283 * 0b1..Continue. Informs the Slave function to continue to the next operation. This must done after writing 1284 * transmit data, reading received data, or any other housekeeping related to the next bus operation. 1285 */ 1286 #define I2C_SLVCTL_SLVCONTINUE(x) (((uint32_t)(((uint32_t)(x)) << I2C_SLVCTL_SLVCONTINUE_SHIFT)) & I2C_SLVCTL_SLVCONTINUE_MASK) 1287 #define I2C_SLVCTL_SLVNACK_MASK (0x2U) 1288 #define I2C_SLVCTL_SLVNACK_SHIFT (1U) 1289 /*! SLVNACK - Slave NACK. 1290 * 0b0..No effect. 1291 * 0b1..NACK. Causes the Slave function to NACK the master when the slave is receiving data from the master (Slave Receiver mode). 1292 */ 1293 #define I2C_SLVCTL_SLVNACK(x) (((uint32_t)(((uint32_t)(x)) << I2C_SLVCTL_SLVNACK_SHIFT)) & I2C_SLVCTL_SLVNACK_MASK) 1294 /*! @} */ 1295 1296 /*! @name SLVDAT - Combined Slave receiver and transmitter data register. */ 1297 /*! @{ */ 1298 #define I2C_SLVDAT_DATA_MASK (0xFFU) 1299 #define I2C_SLVDAT_DATA_SHIFT (0U) 1300 /*! DATA - Slave function data register. Read: read the most recently received data for the Slave 1301 * function. Write: transmit data using the Slave function. 1302 */ 1303 #define I2C_SLVDAT_DATA(x) (((uint32_t)(((uint32_t)(x)) << I2C_SLVDAT_DATA_SHIFT)) & I2C_SLVDAT_DATA_MASK) 1304 /*! @} */ 1305 1306 /*! @name SLVADR - Slave address register. */ 1307 /*! @{ */ 1308 #define I2C_SLVADR_SADISABLE_MASK (0x1U) 1309 #define I2C_SLVADR_SADISABLE_SHIFT (0U) 1310 /*! SADISABLE - Slave Address n Disable. 1311 * 0b0..Enabled. Slave Address n is enabled. 1312 * 0b1..Ignored Slave Address n is ignored. 1313 */ 1314 #define I2C_SLVADR_SADISABLE(x) (((uint32_t)(((uint32_t)(x)) << I2C_SLVADR_SADISABLE_SHIFT)) & I2C_SLVADR_SADISABLE_MASK) 1315 #define I2C_SLVADR_SLVADR_MASK (0xFEU) 1316 #define I2C_SLVADR_SLVADR_SHIFT (1U) 1317 /*! SLVADR - Slave Address. Seven bit slave address that is compared to received addresses if enabled. 1318 */ 1319 #define I2C_SLVADR_SLVADR(x) (((uint32_t)(((uint32_t)(x)) << I2C_SLVADR_SLVADR_SHIFT)) & I2C_SLVADR_SLVADR_MASK) 1320 /*! @} */ 1321 1322 /* The count of I2C_SLVADR */ 1323 #define I2C_SLVADR_COUNT (4U) 1324 1325 /*! @name SLVQUAL0 - Slave Qualification for address 0. */ 1326 /*! @{ */ 1327 #define I2C_SLVQUAL0_QUALMODE0_MASK (0x1U) 1328 #define I2C_SLVQUAL0_QUALMODE0_SHIFT (0U) 1329 /*! QUALMODE0 - Qualify mode for slave address 0. 1330 * 0b0..Mask. The SLVQUAL0 field is used as a logical mask for matching address 0. 1331 * 0b1..Extend. The SLVQUAL0 field is used to extend address 0 matching in a range of addresses. 1332 */ 1333 #define I2C_SLVQUAL0_QUALMODE0(x) (((uint32_t)(((uint32_t)(x)) << I2C_SLVQUAL0_QUALMODE0_SHIFT)) & I2C_SLVQUAL0_QUALMODE0_MASK) 1334 #define I2C_SLVQUAL0_SLVQUAL0_MASK (0xFEU) 1335 #define I2C_SLVQUAL0_SLVQUAL0_SHIFT (1U) 1336 /*! SLVQUAL0 - Slave address Qualifier for address 0. A value of 0 causes the address in SLVADR0 to 1337 * be used as-is, assuming that it is enabled. If QUALMODE0 = 0, any bit in this field which is 1338 * set to 1 will cause an automatic match of the corresponding bit of the received address when it 1339 * is compared to the SLVADR0 register. If QUALMODE0 = 1, an address range is matched for 1340 * address 0. This range extends from the value defined by SLVADR0 to the address defined by SLVQUAL0 1341 * (address matches when SLVADR0[7:1] <= received address <= SLVQUAL0[7:1]). 1342 */ 1343 #define I2C_SLVQUAL0_SLVQUAL0(x) (((uint32_t)(((uint32_t)(x)) << I2C_SLVQUAL0_SLVQUAL0_SHIFT)) & I2C_SLVQUAL0_SLVQUAL0_MASK) 1344 /*! @} */ 1345 1346 /*! @name MONRXDAT - Monitor receiver data register. */ 1347 /*! @{ */ 1348 #define I2C_MONRXDAT_MONRXDAT_MASK (0xFFU) 1349 #define I2C_MONRXDAT_MONRXDAT_SHIFT (0U) 1350 /*! MONRXDAT - Monitor function Receiver Data. This reflects every data byte that passes on the I2C pins. 1351 */ 1352 #define I2C_MONRXDAT_MONRXDAT(x) (((uint32_t)(((uint32_t)(x)) << I2C_MONRXDAT_MONRXDAT_SHIFT)) & I2C_MONRXDAT_MONRXDAT_MASK) 1353 #define I2C_MONRXDAT_MONSTART_MASK (0x100U) 1354 #define I2C_MONRXDAT_MONSTART_SHIFT (8U) 1355 /*! MONSTART - Monitor Received Start. 1356 * 0b0..No start detected. The Monitor function has not detected a Start event on the I2C bus. 1357 * 0b1..Start detected. The Monitor function has detected a Start event on the I2C bus. 1358 */ 1359 #define I2C_MONRXDAT_MONSTART(x) (((uint32_t)(((uint32_t)(x)) << I2C_MONRXDAT_MONSTART_SHIFT)) & I2C_MONRXDAT_MONSTART_MASK) 1360 #define I2C_MONRXDAT_MONRESTART_MASK (0x200U) 1361 #define I2C_MONRXDAT_MONRESTART_SHIFT (9U) 1362 /*! MONRESTART - Monitor Received Repeated Start. 1363 * 0b0..No repeated start detected. The Monitor function has not detected a Repeated Start event on the I2C bus. 1364 * 0b1..Repeated start detected. The Monitor function has detected a Repeated Start event on the I2C bus. 1365 */ 1366 #define I2C_MONRXDAT_MONRESTART(x) (((uint32_t)(((uint32_t)(x)) << I2C_MONRXDAT_MONRESTART_SHIFT)) & I2C_MONRXDAT_MONRESTART_MASK) 1367 #define I2C_MONRXDAT_MONNACK_MASK (0x400U) 1368 #define I2C_MONRXDAT_MONNACK_SHIFT (10U) 1369 /*! MONNACK - Monitor Received NACK. 1370 * 0b0..Acknowledged. The data currently being provided by the Monitor function was acknowledged by at least one master or slave receiver. 1371 * 0b1..Not acknowledged. The data currently being provided by the Monitor function was not acknowledged by any receiver. 1372 */ 1373 #define I2C_MONRXDAT_MONNACK(x) (((uint32_t)(((uint32_t)(x)) << I2C_MONRXDAT_MONNACK_SHIFT)) & I2C_MONRXDAT_MONNACK_MASK) 1374 /*! @} */ 1375 1376 1377 /*! 1378 * @} 1379 */ /* end of group I2C_Register_Masks */ 1380 1381 1382 /* I2C - Peripheral instance base addresses */ 1383 /** Peripheral I2C0 base address */ 1384 #define I2C0_BASE (0x40050000u) 1385 /** Peripheral I2C0 base pointer */ 1386 #define I2C0 ((I2C_Type *)I2C0_BASE) 1387 /** Array initializer of I2C peripheral base addresses */ 1388 #define I2C_BASE_ADDRS { I2C0_BASE } 1389 /** Array initializer of I2C peripheral base pointers */ 1390 #define I2C_BASE_PTRS { I2C0 } 1391 /** Interrupt vectors for the I2C peripheral type */ 1392 #define I2C_IRQS { I2C0_IRQn } 1393 1394 /*! 1395 * @} 1396 */ /* end of group I2C_Peripheral_Access_Layer */ 1397 1398 1399 /* ---------------------------------------------------------------------------- 1400 -- IOCON Peripheral Access Layer 1401 ---------------------------------------------------------------------------- */ 1402 1403 /*! 1404 * @addtogroup IOCON_Peripheral_Access_Layer IOCON Peripheral Access Layer 1405 * @{ 1406 */ 1407 1408 /** IOCON - Register Layout Typedef */ 1409 typedef struct { 1410 __IO uint32_t PIO[19]; /**< Digital I/O control for pins PIO0_17..Digital I/O control for pins PIO0_14, array offset: 0x0, array step: 0x4 */ 1411 } IOCON_Type; 1412 1413 /* ---------------------------------------------------------------------------- 1414 -- IOCON Register Masks 1415 ---------------------------------------------------------------------------- */ 1416 1417 /*! 1418 * @addtogroup IOCON_Register_Masks IOCON Register Masks 1419 * @{ 1420 */ 1421 1422 /*! @name PIO - Digital I/O control for pins PIO0_17..Digital I/O control for pins PIO0_14 */ 1423 /*! @{ */ 1424 #define IOCON_PIO_MODE_MASK (0x18U) 1425 #define IOCON_PIO_MODE_SHIFT (3U) 1426 /*! MODE - Selects function mode (on-chip pull-up/pull-down resistor control). 1427 * 0b00..Inactive. Inactive (no pull-down/pull-up resistor enabled). 1428 * 0b01..Pull-down. Pull-down resistor enabled. 1429 * 0b10..Pull-up. Pull-up resistor enabled. 1430 * 0b11..Repeater. Repeater mode. 1431 */ 1432 #define IOCON_PIO_MODE(x) (((uint32_t)(((uint32_t)(x)) << IOCON_PIO_MODE_SHIFT)) & IOCON_PIO_MODE_MASK) 1433 #define IOCON_PIO_HYS_MASK (0x20U) 1434 #define IOCON_PIO_HYS_SHIFT (5U) 1435 /*! HYS - Hysteresis. 1436 * 0b0..Disable 1437 * 0b1..Enable 1438 */ 1439 #define IOCON_PIO_HYS(x) (((uint32_t)(((uint32_t)(x)) << IOCON_PIO_HYS_SHIFT)) & IOCON_PIO_HYS_MASK) 1440 #define IOCON_PIO_INV_MASK (0x40U) 1441 #define IOCON_PIO_INV_SHIFT (6U) 1442 /*! INV - Invert input 1443 * 0b0..Input not inverted (HIGH on pin reads as 1; LOW on pin reads as 0). 1444 * 0b1..Input inverted (HIGH on pin reads as 0, LOW on pin reads as 1). 1445 */ 1446 #define IOCON_PIO_INV(x) (((uint32_t)(((uint32_t)(x)) << IOCON_PIO_INV_SHIFT)) & IOCON_PIO_INV_MASK) 1447 #define IOCON_PIO_I2CMODE_MASK (0x300U) 1448 #define IOCON_PIO_I2CMODE_SHIFT (8U) 1449 /*! I2CMODE - Selects I2C mode. 1450 * 0b00..Standard mode/ Fast-mode I2C. 1451 * 0b01..Standard GPIO functionality. Requires external pull-up for GPIO output function. 1452 * 0b10..Fast-mode Plus I2C 1453 * 0b11..Reserved 1454 */ 1455 #define IOCON_PIO_I2CMODE(x) (((uint32_t)(((uint32_t)(x)) << IOCON_PIO_I2CMODE_SHIFT)) & IOCON_PIO_I2CMODE_MASK) 1456 #define IOCON_PIO_OD_MASK (0x400U) 1457 #define IOCON_PIO_OD_SHIFT (10U) 1458 /*! OD - Open-drain mode. 1459 * 0b0..Disable. 1460 * 0b1..Open-drain mode enabled. Remark: This is not a true open-drain mode. 1461 */ 1462 #define IOCON_PIO_OD(x) (((uint32_t)(((uint32_t)(x)) << IOCON_PIO_OD_SHIFT)) & IOCON_PIO_OD_MASK) 1463 #define IOCON_PIO_S_MODE_MASK (0x1800U) 1464 #define IOCON_PIO_S_MODE_SHIFT (11U) 1465 /*! S_MODE - Digital filter sample mode. 1466 * 0b00..Bypass input filter. 1467 * 0b01..1 clock cycle. Input pulses shorter than one filter clock are rejected. 1468 * 0b10..2 clock cycles. Input pulses shorter than two filter clocks are rejected. 1469 * 0b11..3 clock cycles. Input pulses shorter than three filter clocks are rejected. 1470 */ 1471 #define IOCON_PIO_S_MODE(x) (((uint32_t)(((uint32_t)(x)) << IOCON_PIO_S_MODE_SHIFT)) & IOCON_PIO_S_MODE_MASK) 1472 #define IOCON_PIO_CLK_DIV_MASK (0xE000U) 1473 #define IOCON_PIO_CLK_DIV_SHIFT (13U) 1474 /*! CLK_DIV - Select peripheral clock divider for input filter sampling clock. Value 0x7 is reserved. 1475 * 0b000..IOCONCLKDIV0 1476 * 0b001..IOCONCLKDIV1 1477 * 0b010..IOCONCLKDIV2 1478 * 0b011..IOCONCLKDIV3 1479 * 0b100..IOCONCLKDIV4 1480 * 0b101..IOCONCLKDIV5 1481 * 0b110..IOCONCLKDIV6 1482 */ 1483 #define IOCON_PIO_CLK_DIV(x) (((uint32_t)(((uint32_t)(x)) << IOCON_PIO_CLK_DIV_SHIFT)) & IOCON_PIO_CLK_DIV_MASK) 1484 /*! @} */ 1485 1486 /* The count of IOCON_PIO */ 1487 #define IOCON_PIO_COUNT (19U) 1488 1489 1490 /*! 1491 * @} 1492 */ /* end of group IOCON_Register_Masks */ 1493 1494 1495 /* IOCON - Peripheral instance base addresses */ 1496 /** Peripheral IOCON base address */ 1497 #define IOCON_BASE (0x40044000u) 1498 /** Peripheral IOCON base pointer */ 1499 #define IOCON ((IOCON_Type *)IOCON_BASE) 1500 /** Array initializer of IOCON peripheral base addresses */ 1501 #define IOCON_BASE_ADDRS { IOCON_BASE } 1502 /** Array initializer of IOCON peripheral base pointers */ 1503 #define IOCON_BASE_PTRS { IOCON } 1504 1505 #define IOCON_INDEX_PIO0_17 (0 ) 1506 #define IOCON_INDEX_PIO0_13 (1 ) 1507 #define IOCON_INDEX_PIO0_12 (2 ) 1508 #define IOCON_INDEX_PIO0_5 (3 ) 1509 #define IOCON_INDEX_PIO0_4 (4 ) 1510 #define IOCON_INDEX_PIO0_3 (5 ) 1511 #define IOCON_INDEX_PIO0_2 (6 ) 1512 #define IOCON_INDEX_PIO0_11 (7 ) 1513 #define IOCON_INDEX_PIO0_10 (8 ) 1514 #define IOCON_INDEX_PIO0_16 (9 ) 1515 #define IOCON_INDEX_PIO0_15 (10) 1516 #define IOCON_INDEX_PIO0_1 (11) 1517 #define IOCON_INDEX_PIO0_9 (13) 1518 #define IOCON_INDEX_PIO0_8 (14) 1519 #define IOCON_INDEX_PIO0_7 (15) 1520 #define IOCON_INDEX_PIO0_6 (16) 1521 #define IOCON_INDEX_PIO0_0 (17) 1522 #define IOCON_INDEX_PIO0_14 (18) 1523 1524 1525 /*! 1526 * @} 1527 */ /* end of group IOCON_Peripheral_Access_Layer */ 1528 1529 1530 /* ---------------------------------------------------------------------------- 1531 -- MRT Peripheral Access Layer 1532 ---------------------------------------------------------------------------- */ 1533 1534 /*! 1535 * @addtogroup MRT_Peripheral_Access_Layer MRT Peripheral Access Layer 1536 * @{ 1537 */ 1538 1539 /** MRT - Register Layout Typedef */ 1540 typedef struct { 1541 struct { /* offset: 0x0, array step: 0x10 */ 1542 __IO uint32_t INTVAL; /**< MRT Time interval value register. This value is loaded into the TIMER register., array offset: 0x0, array step: 0x10 */ 1543 __I uint32_t TIMER; /**< MRT Timer register. This register reads the value of the down-counter., array offset: 0x4, array step: 0x10 */ 1544 __IO uint32_t CTRL; /**< MRT Control register. This register controls the MRT modes., array offset: 0x8, array step: 0x10 */ 1545 __IO uint32_t STAT; /**< MRT Status register., array offset: 0xC, array step: 0x10 */ 1546 } CHANNEL[4]; 1547 uint8_t RESERVED_0[176]; 1548 __I uint32_t MODCFG; /**< Module Configuration register. This register provides information about this particular MRT instance., offset: 0xF0 */ 1549 __I uint32_t IDLE_CH; /**< Idle channel register. This register returns the number of the first idle channel., offset: 0xF4 */ 1550 __IO uint32_t IRQ_FLAG; /**< Global interrupt flag register, offset: 0xF8 */ 1551 } MRT_Type; 1552 1553 /* ---------------------------------------------------------------------------- 1554 -- MRT Register Masks 1555 ---------------------------------------------------------------------------- */ 1556 1557 /*! 1558 * @addtogroup MRT_Register_Masks MRT Register Masks 1559 * @{ 1560 */ 1561 1562 /*! @name CHANNEL_INTVAL - MRT Time interval value register. This value is loaded into the TIMER register. */ 1563 /*! @{ */ 1564 #define MRT_CHANNEL_INTVAL_IVALUE_MASK (0x7FFFFFFFU) 1565 #define MRT_CHANNEL_INTVAL_IVALUE_SHIFT (0U) 1566 /*! IVALUE - Time interval load value. This value is loaded into the TIMERn register and the MRT 1567 * channel n starts counting down from IVALUE -1. If the timer is idle, writing a non-zero value to 1568 * this bit field starts the timer immediately. If the timer is running, writing a zero to this 1569 * bit field does the following: If LOAD = 1, the timer stops immediately. If LOAD = 0, the timer 1570 * stops at the end of the time interval. 1571 */ 1572 #define MRT_CHANNEL_INTVAL_IVALUE(x) (((uint32_t)(((uint32_t)(x)) << MRT_CHANNEL_INTVAL_IVALUE_SHIFT)) & MRT_CHANNEL_INTVAL_IVALUE_MASK) 1573 #define MRT_CHANNEL_INTVAL_LOAD_MASK (0x80000000U) 1574 #define MRT_CHANNEL_INTVAL_LOAD_SHIFT (31U) 1575 /*! LOAD - Determines how the timer interval value IVALUE -1 is loaded into the TIMERn register. 1576 * This bit is write-only. Reading this bit always returns 0. 1577 * 0b0..No force load. The load from the INTVALn register to the TIMERn register is processed at the end of the 1578 * time interval if the repeat mode is selected. 1579 * 0b1..Force load. The INTVALn interval value IVALUE -1 is immediately loaded into the TIMERn register while TIMERn is running. 1580 */ 1581 #define MRT_CHANNEL_INTVAL_LOAD(x) (((uint32_t)(((uint32_t)(x)) << MRT_CHANNEL_INTVAL_LOAD_SHIFT)) & MRT_CHANNEL_INTVAL_LOAD_MASK) 1582 /*! @} */ 1583 1584 /* The count of MRT_CHANNEL_INTVAL */ 1585 #define MRT_CHANNEL_INTVAL_COUNT (4U) 1586 1587 /*! @name CHANNEL_TIMER - MRT Timer register. This register reads the value of the down-counter. */ 1588 /*! @{ */ 1589 #define MRT_CHANNEL_TIMER_VALUE_MASK (0x7FFFFFFFU) 1590 #define MRT_CHANNEL_TIMER_VALUE_SHIFT (0U) 1591 /*! VALUE - Holds the current timer value of the down-counter. The initial value of the TIMERn 1592 * register is loaded as IVALUE - 1 from the INTVALn register either at the end of the time interval 1593 * or immediately in the following cases: INTVALn register is updated in the idle state. INTVALn 1594 * register is updated with LOAD = 1. When the timer is in idle state, reading this bit fields 1595 * returns -1 (0x00FF FFFF). 1596 */ 1597 #define MRT_CHANNEL_TIMER_VALUE(x) (((uint32_t)(((uint32_t)(x)) << MRT_CHANNEL_TIMER_VALUE_SHIFT)) & MRT_CHANNEL_TIMER_VALUE_MASK) 1598 /*! @} */ 1599 1600 /* The count of MRT_CHANNEL_TIMER */ 1601 #define MRT_CHANNEL_TIMER_COUNT (4U) 1602 1603 /*! @name CHANNEL_CTRL - MRT Control register. This register controls the MRT modes. */ 1604 /*! @{ */ 1605 #define MRT_CHANNEL_CTRL_INTEN_MASK (0x1U) 1606 #define MRT_CHANNEL_CTRL_INTEN_SHIFT (0U) 1607 /*! INTEN - Enable the TIMERn interrupt. 1608 * 0b0..Disabled. TIMERn interrupt is disabled. 1609 * 0b1..Enabled. TIMERn interrupt is enabled. 1610 */ 1611 #define MRT_CHANNEL_CTRL_INTEN(x) (((uint32_t)(((uint32_t)(x)) << MRT_CHANNEL_CTRL_INTEN_SHIFT)) & MRT_CHANNEL_CTRL_INTEN_MASK) 1612 #define MRT_CHANNEL_CTRL_MODE_MASK (0x6U) 1613 #define MRT_CHANNEL_CTRL_MODE_SHIFT (1U) 1614 /*! MODE - Selects timer mode. 1615 * 0b00..Repeat interrupt mode. 1616 * 0b01..One-shot interrupt mode. 1617 * 0b10..One-shot stall mode. 1618 * 0b11..Reserved. 1619 */ 1620 #define MRT_CHANNEL_CTRL_MODE(x) (((uint32_t)(((uint32_t)(x)) << MRT_CHANNEL_CTRL_MODE_SHIFT)) & MRT_CHANNEL_CTRL_MODE_MASK) 1621 /*! @} */ 1622 1623 /* The count of MRT_CHANNEL_CTRL */ 1624 #define MRT_CHANNEL_CTRL_COUNT (4U) 1625 1626 /*! @name CHANNEL_STAT - MRT Status register. */ 1627 /*! @{ */ 1628 #define MRT_CHANNEL_STAT_INTFLAG_MASK (0x1U) 1629 #define MRT_CHANNEL_STAT_INTFLAG_SHIFT (0U) 1630 /*! INTFLAG - Monitors the interrupt flag. 1631 * 0b0..No pending interrupt. Writing a zero is equivalent to no operation. 1632 * 0b1..Pending interrupt. The interrupt is pending because TIMERn has reached the end of the time interval. If 1633 * the INTEN bit in the CONTROLn is also set to 1, the interrupt for timer channel n and the global interrupt 1634 * are raised. Writing a 1 to this bit clears the interrupt request. 1635 */ 1636 #define MRT_CHANNEL_STAT_INTFLAG(x) (((uint32_t)(((uint32_t)(x)) << MRT_CHANNEL_STAT_INTFLAG_SHIFT)) & MRT_CHANNEL_STAT_INTFLAG_MASK) 1637 #define MRT_CHANNEL_STAT_RUN_MASK (0x2U) 1638 #define MRT_CHANNEL_STAT_RUN_SHIFT (1U) 1639 /*! RUN - Indicates the state of TIMERn. This bit is read-only. 1640 * 0b0..Idle state. TIMERn is stopped. 1641 * 0b1..Running. TIMERn is running. 1642 */ 1643 #define MRT_CHANNEL_STAT_RUN(x) (((uint32_t)(((uint32_t)(x)) << MRT_CHANNEL_STAT_RUN_SHIFT)) & MRT_CHANNEL_STAT_RUN_MASK) 1644 /*! @} */ 1645 1646 /* The count of MRT_CHANNEL_STAT */ 1647 #define MRT_CHANNEL_STAT_COUNT (4U) 1648 1649 /*! @name MODCFG - Module Configuration register. This register provides information about this particular MRT instance. */ 1650 /*! @{ */ 1651 #define MRT_MODCFG_NOC_MASK (0xFU) 1652 #define MRT_MODCFG_NOC_SHIFT (0U) 1653 /*! NOC - Identifies the number of channels in this MRT.(4 channels on this device.) 1654 */ 1655 #define MRT_MODCFG_NOC(x) (((uint32_t)(((uint32_t)(x)) << MRT_MODCFG_NOC_SHIFT)) & MRT_MODCFG_NOC_MASK) 1656 #define MRT_MODCFG_NOB_MASK (0x1F0U) 1657 #define MRT_MODCFG_NOB_SHIFT (4U) 1658 /*! NOB - Identifies the number of timer bits in this MRT. (31 bits wide on this device.) 1659 */ 1660 #define MRT_MODCFG_NOB(x) (((uint32_t)(((uint32_t)(x)) << MRT_MODCFG_NOB_SHIFT)) & MRT_MODCFG_NOB_MASK) 1661 /*! @} */ 1662 1663 /*! @name IDLE_CH - Idle channel register. This register returns the number of the first idle channel. */ 1664 /*! @{ */ 1665 #define MRT_IDLE_CH_CHAN_MASK (0xF0U) 1666 #define MRT_IDLE_CH_CHAN_SHIFT (4U) 1667 /*! CHAN - Idle channel. Reading the CHAN bits, returns the lowest idle timer channel. The number is 1668 * positioned such that it can be used as an offset from the MRT base address in order to access 1669 * the registers for the allocated channel. If all timer channels are running, CHAN = 0xF. See 1670 * text above for more details. 1671 */ 1672 #define MRT_IDLE_CH_CHAN(x) (((uint32_t)(((uint32_t)(x)) << MRT_IDLE_CH_CHAN_SHIFT)) & MRT_IDLE_CH_CHAN_MASK) 1673 /*! @} */ 1674 1675 /*! @name IRQ_FLAG - Global interrupt flag register */ 1676 /*! @{ */ 1677 #define MRT_IRQ_FLAG_GFLAG0_MASK (0x1U) 1678 #define MRT_IRQ_FLAG_GFLAG0_SHIFT (0U) 1679 /*! GFLAG0 - Monitors the interrupt flag of TIMER0. 1680 * 0b0..No pending interrupt. Writing a zero is equivalent to no operation. 1681 * 0b1..Pending interrupt. The interrupt is pending because TIMER0 has reached the end of the time interval. If 1682 * the INTEN bit in the CONTROL0 register is also set to 1, the interrupt for timer channel 0 and the global 1683 * interrupt are raised. Writing a 1 to this bit clears the interrupt request. 1684 */ 1685 #define MRT_IRQ_FLAG_GFLAG0(x) (((uint32_t)(((uint32_t)(x)) << MRT_IRQ_FLAG_GFLAG0_SHIFT)) & MRT_IRQ_FLAG_GFLAG0_MASK) 1686 #define MRT_IRQ_FLAG_GFLAG1_MASK (0x2U) 1687 #define MRT_IRQ_FLAG_GFLAG1_SHIFT (1U) 1688 /*! GFLAG1 - Monitors the interrupt flag of TIMER1. See description of channel 0. 1689 */ 1690 #define MRT_IRQ_FLAG_GFLAG1(x) (((uint32_t)(((uint32_t)(x)) << MRT_IRQ_FLAG_GFLAG1_SHIFT)) & MRT_IRQ_FLAG_GFLAG1_MASK) 1691 #define MRT_IRQ_FLAG_GFLAG2_MASK (0x4U) 1692 #define MRT_IRQ_FLAG_GFLAG2_SHIFT (2U) 1693 /*! GFLAG2 - Monitors the interrupt flag of TIMER2. See description of channel 0. 1694 */ 1695 #define MRT_IRQ_FLAG_GFLAG2(x) (((uint32_t)(((uint32_t)(x)) << MRT_IRQ_FLAG_GFLAG2_SHIFT)) & MRT_IRQ_FLAG_GFLAG2_MASK) 1696 #define MRT_IRQ_FLAG_GFLAG3_MASK (0x8U) 1697 #define MRT_IRQ_FLAG_GFLAG3_SHIFT (3U) 1698 /*! GFLAG3 - Monitors the interrupt flag of TIMER3. See description of channel 0. 1699 */ 1700 #define MRT_IRQ_FLAG_GFLAG3(x) (((uint32_t)(((uint32_t)(x)) << MRT_IRQ_FLAG_GFLAG3_SHIFT)) & MRT_IRQ_FLAG_GFLAG3_MASK) 1701 /*! @} */ 1702 1703 1704 /*! 1705 * @} 1706 */ /* end of group MRT_Register_Masks */ 1707 1708 1709 /* MRT - Peripheral instance base addresses */ 1710 /** Peripheral MRT0 base address */ 1711 #define MRT0_BASE (0x40004000u) 1712 /** Peripheral MRT0 base pointer */ 1713 #define MRT0 ((MRT_Type *)MRT0_BASE) 1714 /** Array initializer of MRT peripheral base addresses */ 1715 #define MRT_BASE_ADDRS { MRT0_BASE } 1716 /** Array initializer of MRT peripheral base pointers */ 1717 #define MRT_BASE_PTRS { MRT0 } 1718 /** Interrupt vectors for the MRT peripheral type */ 1719 #define MRT_IRQS { MRT0_IRQn } 1720 1721 /*! 1722 * @} 1723 */ /* end of group MRT_Peripheral_Access_Layer */ 1724 1725 1726 /* ---------------------------------------------------------------------------- 1727 -- MTB Peripheral Access Layer 1728 ---------------------------------------------------------------------------- */ 1729 1730 /*! 1731 * @addtogroup MTB_Peripheral_Access_Layer MTB Peripheral Access Layer 1732 * @{ 1733 */ 1734 1735 /** MTB - Register Layout Typedef */ 1736 typedef struct { 1737 __IO uint32_t POSITION; /**< POSITION Register, offset: 0x0 */ 1738 __IO uint32_t MASTER; /**< MASTER Register, offset: 0x4 */ 1739 __IO uint32_t FLOW; /**< FLOW Register, offset: 0x8 */ 1740 __I uint32_t BASE; /**< Indicates where the SRAM is located in the processor memory map. This register is provided to enable auto discovery of the MTB SRAM location, by a debug agent., offset: 0xC */ 1741 } MTB_Type; 1742 1743 /* ---------------------------------------------------------------------------- 1744 -- MTB Register Masks 1745 ---------------------------------------------------------------------------- */ 1746 1747 /*! 1748 * @addtogroup MTB_Register_Masks MTB Register Masks 1749 * @{ 1750 */ 1751 1752 /*! @name POSITION - POSITION Register */ 1753 /*! @{ */ 1754 #define MTB_POSITION_WRAP_MASK (0x4U) 1755 #define MTB_POSITION_WRAP_SHIFT (2U) 1756 /*! WRAP - This bit is set to 1 automatically when the POINTER value wraps as determined by the 1757 * MASTER.MASK field in the MASTER Trace Control Register. 1758 */ 1759 #define MTB_POSITION_WRAP(x) (((uint32_t)(((uint32_t)(x)) << MTB_POSITION_WRAP_SHIFT)) & MTB_POSITION_WRAP_MASK) 1760 #define MTB_POSITION_POINTER_MASK (0xFFFFFFF8U) 1761 #define MTB_POSITION_POINTER_SHIFT (3U) 1762 /*! POINTER - Trace packet location pointer. Because a packet consists of two words, the POINTER 1763 * field is the location of the first word of a packet. This field contains bits [31:3] of the 1764 * address, in the SRAM, where the next trace packet will be written. The field points to an unused 1765 * location and is automatically incremented. A debug agent can calculate the system address, on 1766 * the AHB-Lite bus, of the SRAM location pointed to by the POSITION register using the following 1767 * equation: system address = BASE + ((P + (2AWIDTH - (BASE MOD 2AWIDTH))) MOD 2AWIDTH). Where P = 1768 * POSITION AND 0xFFFF_FFF8. Where BASE is the BASE register value 1769 */ 1770 #define MTB_POSITION_POINTER(x) (((uint32_t)(((uint32_t)(x)) << MTB_POSITION_POINTER_SHIFT)) & MTB_POSITION_POINTER_MASK) 1771 /*! @} */ 1772 1773 /*! @name MASTER - MASTER Register */ 1774 /*! @{ */ 1775 #define MTB_MASTER_MASK_MASK (0x1FU) 1776 #define MTB_MASTER_MASK_SHIFT (0U) 1777 /*! MASK - This value determines the maximum size of the trace buffer in SRAM. It specifies the 1778 * most-significant bit of the POSITION.POINTER field that can be updated by automatic increment. If 1779 * the trace tries to advance past this power of two, the POSITION.WRAP bit is set to 1, the 1780 * POSITION.POINTER[MASK:0] bits are set to zero, and the POSITION.POINTER[AWIDTH-4:MASK+1] bits 1781 * remain unchanged. This field causes the trace packet information to be stored in a circular buffer 1782 * of size 2(MASK+4) bytes, that can be positioned in memory at multiples of this size. Valid 1783 * values of this field are zero to AWIDTH-4. Values greater than the maximum have the same effect 1784 * as the maximum. 1785 */ 1786 #define MTB_MASTER_MASK(x) (((uint32_t)(((uint32_t)(x)) << MTB_MASTER_MASK_SHIFT)) & MTB_MASTER_MASK_MASK) 1787 #define MTB_MASTER_TSTARTEN_MASK (0x20U) 1788 #define MTB_MASTER_TSTARTEN_SHIFT (5U) 1789 /*! TSTARTEN - Trace start input enable. If this bit is 1 and the TSTART signal is HIGH, then the EN 1790 * bit is set to 1. Tracing continues until a stop condition occurs. 1791 */ 1792 #define MTB_MASTER_TSTARTEN(x) (((uint32_t)(((uint32_t)(x)) << MTB_MASTER_TSTARTEN_SHIFT)) & MTB_MASTER_TSTARTEN_MASK) 1793 #define MTB_MASTER_TSTOPEN_MASK (0x40U) 1794 #define MTB_MASTER_TSTOPEN_SHIFT (6U) 1795 /*! TSTOPEN - Trace stop input enable. If this bit is 1 and the TSTOP signal is HIGH, then the EN 1796 * bit is set to 0. If a trace packet is being written to memory, the write is completed before 1797 * tracing is stopped. 1798 */ 1799 #define MTB_MASTER_TSTOPEN(x) (((uint32_t)(((uint32_t)(x)) << MTB_MASTER_TSTOPEN_SHIFT)) & MTB_MASTER_TSTOPEN_MASK) 1800 #define MTB_MASTER_SFRWPRIV_MASK (0x80U) 1801 #define MTB_MASTER_SFRWPRIV_SHIFT (7U) 1802 /*! SFRWPRIV - Special Function Register Write Privilege bit. If this bit is 0, then User or 1803 * Privileged AHB-Lite read and write accesses to the Special Function Registers are permitted. If this 1804 * bit is 1, then only Privileged write accesses are permitted and User write accesses are 1805 * ignored. The HPROT[1] signal determines if an access is User or Privileged. 1806 */ 1807 #define MTB_MASTER_SFRWPRIV(x) (((uint32_t)(((uint32_t)(x)) << MTB_MASTER_SFRWPRIV_SHIFT)) & MTB_MASTER_SFRWPRIV_MASK) 1808 #define MTB_MASTER_RAMPRIV_MASK (0x100U) 1809 #define MTB_MASTER_RAMPRIV_SHIFT (8U) 1810 /*! RAMPRIV - SRAM Privilege bit. If this bit is 0, then User or Privileged AHB-Lite read and write 1811 * accesses to the SRAM are permitted. If this bit is 1, then only Privileged AHB-Lite read and 1812 * write accesses to the SRAM are permitted and User accesses are RAZ/WI. The HPROT[1] signal 1813 * determines if an access is User or Privileged. 1814 */ 1815 #define MTB_MASTER_RAMPRIV(x) (((uint32_t)(((uint32_t)(x)) << MTB_MASTER_RAMPRIV_SHIFT)) & MTB_MASTER_RAMPRIV_MASK) 1816 #define MTB_MASTER_HALTREQ_MASK (0x200U) 1817 #define MTB_MASTER_HALTREQ_SHIFT (9U) 1818 /*! HALTREQ - Halt request bit. This bit is connected to the halt request signal of the trace logic, 1819 * EDBGRQ. When HALTREQ is set to 1, EDBGRQ is asserted if DBGEN is also HIGH. The HALTREQ bit 1820 * can be automatically set to 1 using the FLOW.WATERMARK field. 1821 */ 1822 #define MTB_MASTER_HALTREQ(x) (((uint32_t)(((uint32_t)(x)) << MTB_MASTER_HALTREQ_SHIFT)) & MTB_MASTER_HALTREQ_MASK) 1823 #define MTB_MASTER_EN_MASK (0x80000000U) 1824 #define MTB_MASTER_EN_SHIFT (31U) 1825 /*! EN - Main trace enable bit. When this bit is 1 trace data is written into the SRAM memory 1826 * location addressed by POSITION.POINTER. The POSITION.POINTER value auto increments after the trace 1827 * data packet is written. The EN bit can be automatically set to 0 using the FLOW.WATERMARK field 1828 * and the FLOW.AUTOSTOP bit. The EN bit is automatically set to 1 if the TSTARTEN bit is 1 and 1829 * the TSTART signal is HIGH. The EN bit is automatically set to 0 if TSTOPEN bit is 1 and the 1830 * TSTOP signal is HIGH. 1831 */ 1832 #define MTB_MASTER_EN(x) (((uint32_t)(((uint32_t)(x)) << MTB_MASTER_EN_SHIFT)) & MTB_MASTER_EN_MASK) 1833 /*! @} */ 1834 1835 /*! @name FLOW - FLOW Register */ 1836 /*! @{ */ 1837 #define MTB_FLOW_AUTOSTOP_MASK (0x1U) 1838 #define MTB_FLOW_AUTOSTOP_SHIFT (0U) 1839 /*! AUTOSTOP - If this bit is 1 and WATERMARK is equal to POSITION.POINTER, then the MASTER.EN bit 1840 * is automatically set to 0. This stops tracing. 1841 */ 1842 #define MTB_FLOW_AUTOSTOP(x) (((uint32_t)(((uint32_t)(x)) << MTB_FLOW_AUTOSTOP_SHIFT)) & MTB_FLOW_AUTOSTOP_MASK) 1843 #define MTB_FLOW_AUTOHALT_MASK (0x2U) 1844 #define MTB_FLOW_AUTOHALT_SHIFT (1U) 1845 /*! AUTOHALT - If this bit is 1 and WATERMARK is equal to POSITION.POINTER, then the MASTER.HALTREQ 1846 * bit is automatically set to 1. If the DBGEN signal is HIGH, the MTB asserts this halt request 1847 * to the Cortex-M0+ processor by asserting the EDBGRQ signal. 1848 */ 1849 #define MTB_FLOW_AUTOHALT(x) (((uint32_t)(((uint32_t)(x)) << MTB_FLOW_AUTOHALT_SHIFT)) & MTB_FLOW_AUTOHALT_MASK) 1850 #define MTB_FLOW_WATERMARK_MASK (0xFFFFFFF8U) 1851 #define MTB_FLOW_WATERMARK_SHIFT (3U) 1852 /*! WATERMARK - WATERMARK value. This field contains an address in the same format as the 1853 * POSITION.POINTER field. When the POSITION.POINTER matches the WATERMARK field value, actions defined by 1854 * the AUTOHALT and AUTOSTOP bits are performed. 1855 */ 1856 #define MTB_FLOW_WATERMARK(x) (((uint32_t)(((uint32_t)(x)) << MTB_FLOW_WATERMARK_SHIFT)) & MTB_FLOW_WATERMARK_MASK) 1857 /*! @} */ 1858 1859 /*! @name BASE - Indicates where the SRAM is located in the processor memory map. This register is provided to enable auto discovery of the MTB SRAM location, by a debug agent. */ 1860 /*! @{ */ 1861 #define MTB_BASE_BASE_MASK (0xFFFFFFFFU) 1862 #define MTB_BASE_BASE_SHIFT (0U) 1863 /*! BASE - The value provided is the value of the SRAMBASEADDR[31:0] signal. 1864 */ 1865 #define MTB_BASE_BASE(x) (((uint32_t)(((uint32_t)(x)) << MTB_BASE_BASE_SHIFT)) & MTB_BASE_BASE_MASK) 1866 /*! @} */ 1867 1868 1869 /*! 1870 * @} 1871 */ /* end of group MTB_Register_Masks */ 1872 1873 1874 /* MTB - Peripheral instance base addresses */ 1875 /** Peripheral MTB base address */ 1876 #define MTB_BASE (0x14000000u) 1877 /** Peripheral MTB base pointer */ 1878 #define MTB ((MTB_Type *)MTB_BASE) 1879 /** Array initializer of MTB peripheral base addresses */ 1880 #define MTB_BASE_ADDRS { MTB_BASE } 1881 /** Array initializer of MTB peripheral base pointers */ 1882 #define MTB_BASE_PTRS { MTB } 1883 1884 /*! 1885 * @} 1886 */ /* end of group MTB_Peripheral_Access_Layer */ 1887 1888 1889 /* ---------------------------------------------------------------------------- 1890 -- PINT Peripheral Access Layer 1891 ---------------------------------------------------------------------------- */ 1892 1893 /*! 1894 * @addtogroup PINT_Peripheral_Access_Layer PINT Peripheral Access Layer 1895 * @{ 1896 */ 1897 1898 /** PINT - Register Layout Typedef */ 1899 typedef struct { 1900 __IO uint32_t ISEL; /**< Pin Interrupt Mode register, offset: 0x0 */ 1901 __IO uint32_t IENR; /**< Pin interrupt level or rising edge interrupt enable register, offset: 0x4 */ 1902 __O uint32_t SIENR; /**< Pin interrupt level or rising edge interrupt set register, offset: 0x8 */ 1903 __O uint32_t CIENR; /**< Pin interrupt level (rising edge interrupt) clear register, offset: 0xC */ 1904 __IO uint32_t IENF; /**< Pin interrupt active level or falling edge interrupt enable register, offset: 0x10 */ 1905 __O uint32_t SIENF; /**< Pin interrupt active level or falling edge interrupt set register, offset: 0x14 */ 1906 __O uint32_t CIENF; /**< Pin interrupt active level or falling edge interrupt clear register, offset: 0x18 */ 1907 __IO uint32_t RISE; /**< Pin interrupt rising edge register, offset: 0x1C */ 1908 __IO uint32_t FALL; /**< Pin interrupt falling edge register, offset: 0x20 */ 1909 __IO uint32_t IST; /**< Pin interrupt status register, offset: 0x24 */ 1910 __IO uint32_t PMCTRL; /**< Pattern match interrupt control register, offset: 0x28 */ 1911 __IO uint32_t PMSRC; /**< Pattern match interrupt bit-slice source register, offset: 0x2C */ 1912 __IO uint32_t PMCFG; /**< Pattern match interrupt bit slice configuration register, offset: 0x30 */ 1913 } PINT_Type; 1914 1915 /* ---------------------------------------------------------------------------- 1916 -- PINT Register Masks 1917 ---------------------------------------------------------------------------- */ 1918 1919 /*! 1920 * @addtogroup PINT_Register_Masks PINT Register Masks 1921 * @{ 1922 */ 1923 1924 /*! @name ISEL - Pin Interrupt Mode register */ 1925 /*! @{ */ 1926 #define PINT_ISEL_PMODE_MASK (0xFFU) 1927 #define PINT_ISEL_PMODE_SHIFT (0U) 1928 /*! PMODE - Selects the interrupt mode for each pin interrupt. Bit n configures the pin interrupt 1929 * selected in PINTSELn. 0 = Edge sensitive 1 = Level sensitive 1930 */ 1931 #define PINT_ISEL_PMODE(x) (((uint32_t)(((uint32_t)(x)) << PINT_ISEL_PMODE_SHIFT)) & PINT_ISEL_PMODE_MASK) 1932 /*! @} */ 1933 1934 /*! @name IENR - Pin interrupt level or rising edge interrupt enable register */ 1935 /*! @{ */ 1936 #define PINT_IENR_ENRL_MASK (0xFFU) 1937 #define PINT_IENR_ENRL_SHIFT (0U) 1938 /*! ENRL - Enables the rising edge or level interrupt for each pin interrupt. Bit n configures the 1939 * pin interrupt selected in PINTSELn. 0 = Disable rising edge or level interrupt. 1 = Enable 1940 * rising edge or level interrupt. 1941 */ 1942 #define PINT_IENR_ENRL(x) (((uint32_t)(((uint32_t)(x)) << PINT_IENR_ENRL_SHIFT)) & PINT_IENR_ENRL_MASK) 1943 /*! @} */ 1944 1945 /*! @name SIENR - Pin interrupt level or rising edge interrupt set register */ 1946 /*! @{ */ 1947 #define PINT_SIENR_SETENRL_MASK (0xFFU) 1948 #define PINT_SIENR_SETENRL_SHIFT (0U) 1949 /*! SETENRL - Ones written to this address set bits in the IENR, thus enabling interrupts. Bit n 1950 * sets bit n in the IENR register. 0 = No operation. 1 = Enable rising edge or level interrupt. 1951 */ 1952 #define PINT_SIENR_SETENRL(x) (((uint32_t)(((uint32_t)(x)) << PINT_SIENR_SETENRL_SHIFT)) & PINT_SIENR_SETENRL_MASK) 1953 /*! @} */ 1954 1955 /*! @name CIENR - Pin interrupt level (rising edge interrupt) clear register */ 1956 /*! @{ */ 1957 #define PINT_CIENR_CENRL_MASK (0xFFU) 1958 #define PINT_CIENR_CENRL_SHIFT (0U) 1959 /*! CENRL - Ones written to this address clear bits in the IENR, thus disabling the interrupts. Bit 1960 * n clears bit n in the IENR register. 0 = No operation. 1 = Disable rising edge or level 1961 * interrupt. 1962 */ 1963 #define PINT_CIENR_CENRL(x) (((uint32_t)(((uint32_t)(x)) << PINT_CIENR_CENRL_SHIFT)) & PINT_CIENR_CENRL_MASK) 1964 /*! @} */ 1965 1966 /*! @name IENF - Pin interrupt active level or falling edge interrupt enable register */ 1967 /*! @{ */ 1968 #define PINT_IENF_ENAF_MASK (0xFFU) 1969 #define PINT_IENF_ENAF_SHIFT (0U) 1970 /*! ENAF - Enables the falling edge or configures the active level interrupt for each pin interrupt. 1971 * Bit n configures the pin interrupt selected in PINTSELn. 0 = Disable falling edge interrupt 1972 * or set active interrupt level LOW. 1 = Enable falling edge interrupt enabled or set active 1973 * interrupt level HIGH. 1974 */ 1975 #define PINT_IENF_ENAF(x) (((uint32_t)(((uint32_t)(x)) << PINT_IENF_ENAF_SHIFT)) & PINT_IENF_ENAF_MASK) 1976 /*! @} */ 1977 1978 /*! @name SIENF - Pin interrupt active level or falling edge interrupt set register */ 1979 /*! @{ */ 1980 #define PINT_SIENF_SETENAF_MASK (0xFFU) 1981 #define PINT_SIENF_SETENAF_SHIFT (0U) 1982 /*! SETENAF - Ones written to this address set bits in the IENF, thus enabling interrupts. Bit n 1983 * sets bit n in the IENF register. 0 = No operation. 1 = Select HIGH-active interrupt or enable 1984 * falling edge interrupt. 1985 */ 1986 #define PINT_SIENF_SETENAF(x) (((uint32_t)(((uint32_t)(x)) << PINT_SIENF_SETENAF_SHIFT)) & PINT_SIENF_SETENAF_MASK) 1987 /*! @} */ 1988 1989 /*! @name CIENF - Pin interrupt active level or falling edge interrupt clear register */ 1990 /*! @{ */ 1991 #define PINT_CIENF_CENAF_MASK (0xFFU) 1992 #define PINT_CIENF_CENAF_SHIFT (0U) 1993 /*! CENAF - Ones written to this address clears bits in the IENF, thus disabling interrupts. Bit n 1994 * clears bit n in the IENF register. 0 = No operation. 1 = LOW-active interrupt selected or 1995 * falling edge interrupt disabled. 1996 */ 1997 #define PINT_CIENF_CENAF(x) (((uint32_t)(((uint32_t)(x)) << PINT_CIENF_CENAF_SHIFT)) & PINT_CIENF_CENAF_MASK) 1998 /*! @} */ 1999 2000 /*! @name RISE - Pin interrupt rising edge register */ 2001 /*! @{ */ 2002 #define PINT_RISE_RDET_MASK (0xFFU) 2003 #define PINT_RISE_RDET_SHIFT (0U) 2004 /*! RDET - Rising edge detect. Bit n detects the rising edge of the pin selected in PINTSELn. Read 2005 * 0: No rising edge has been detected on this pin since Reset or the last time a one was written 2006 * to this bit. Write 0: no operation. Read 1: a rising edge has been detected since Reset or the 2007 * last time a one was written to this bit. Write 1: clear rising edge detection for this pin. 2008 */ 2009 #define PINT_RISE_RDET(x) (((uint32_t)(((uint32_t)(x)) << PINT_RISE_RDET_SHIFT)) & PINT_RISE_RDET_MASK) 2010 /*! @} */ 2011 2012 /*! @name FALL - Pin interrupt falling edge register */ 2013 /*! @{ */ 2014 #define PINT_FALL_FDET_MASK (0xFFU) 2015 #define PINT_FALL_FDET_SHIFT (0U) 2016 /*! FDET - Falling edge detect. Bit n detects the falling edge of the pin selected in PINTSELn. Read 2017 * 0: No falling edge has been detected on this pin since Reset or the last time a one was 2018 * written to this bit. Write 0: no operation. Read 1: a falling edge has been detected since Reset or 2019 * the last time a one was written to this bit. Write 1: clear falling edge detection for this 2020 * pin. 2021 */ 2022 #define PINT_FALL_FDET(x) (((uint32_t)(((uint32_t)(x)) << PINT_FALL_FDET_SHIFT)) & PINT_FALL_FDET_MASK) 2023 /*! @} */ 2024 2025 /*! @name IST - Pin interrupt status register */ 2026 /*! @{ */ 2027 #define PINT_IST_PSTAT_MASK (0xFFU) 2028 #define PINT_IST_PSTAT_SHIFT (0U) 2029 /*! PSTAT - Pin interrupt status. Bit n returns the status, clears the edge interrupt, or inverts 2030 * the active level of the pin selected in PINTSELn. Read 0: interrupt is not being requested for 2031 * this interrupt pin. Write 0: no operation. Read 1: interrupt is being requested for this 2032 * interrupt pin. Write 1 (edge-sensitive): clear rising- and falling-edge detection for this pin. 2033 * Write 1 (level-sensitive): switch the active level for this pin (in the IENF register). 2034 */ 2035 #define PINT_IST_PSTAT(x) (((uint32_t)(((uint32_t)(x)) << PINT_IST_PSTAT_SHIFT)) & PINT_IST_PSTAT_MASK) 2036 /*! @} */ 2037 2038 /*! @name PMCTRL - Pattern match interrupt control register */ 2039 /*! @{ */ 2040 #define PINT_PMCTRL_SEL_PMATCH_MASK (0x1U) 2041 #define PINT_PMCTRL_SEL_PMATCH_SHIFT (0U) 2042 /*! SEL_PMATCH - Specifies whether the 8 pin interrupts are controlled by the pin interrupt function or by the pattern match function. 2043 * 0b0..Pin interrupt. Interrupts are driven in response to the standard pin interrupt function. 2044 * 0b1..Pattern match. Interrupts are driven in response to pattern matches. 2045 */ 2046 #define PINT_PMCTRL_SEL_PMATCH(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCTRL_SEL_PMATCH_SHIFT)) & PINT_PMCTRL_SEL_PMATCH_MASK) 2047 #define PINT_PMCTRL_ENA_RXEV_MASK (0x2U) 2048 #define PINT_PMCTRL_ENA_RXEV_SHIFT (1U) 2049 /*! ENA_RXEV - Enables the RXEV output to the CPU and/or to a GPIO output when the specified boolean expression evaluates to true. 2050 * 0b0..Disabled. RXEV output to the CPU is disabled. 2051 * 0b1..Enabled. RXEV output to the CPU is enabled. 2052 */ 2053 #define PINT_PMCTRL_ENA_RXEV(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCTRL_ENA_RXEV_SHIFT)) & PINT_PMCTRL_ENA_RXEV_MASK) 2054 #define PINT_PMCTRL_PMAT_MASK (0xFF000000U) 2055 #define PINT_PMCTRL_PMAT_SHIFT (24U) 2056 /*! PMAT - This field displays the current state of pattern matches. A 1 in any bit of this field 2057 * indicates that the corresponding product term is matched by the current state of the appropriate 2058 * inputs. 2059 */ 2060 #define PINT_PMCTRL_PMAT(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCTRL_PMAT_SHIFT)) & PINT_PMCTRL_PMAT_MASK) 2061 /*! @} */ 2062 2063 /*! @name PMSRC - Pattern match interrupt bit-slice source register */ 2064 /*! @{ */ 2065 #define PINT_PMSRC_SRC0_MASK (0x700U) 2066 #define PINT_PMSRC_SRC0_SHIFT (8U) 2067 /*! SRC0 - Selects the input source for bit slice 0 2068 * 0b000..Input 0. Selects the pin selected in the PINTSEL0 register as the source to bit slice 0. 2069 * 0b001..Input 1. Selects the pin selected in the PINTSEL1 register as the source to bit slice 0. 2070 * 0b010..Input 2. Selects the pin selected in the PINTSEL2 register as the source to bit slice 0. 2071 * 0b011..Input 3. Selects the pin selected in the PINTSEL3 register as the source to bit slice 0. 2072 * 0b100..Input 4. Selects the pin selected in the PINTSEL4 register as the source to bit slice 0. 2073 * 0b101..Input 5. Selects the pin selected in the PINTSEL5 register as the source to bit slice 0. 2074 * 0b110..Input 6. Selects the pin selected in the PINTSEL6 register as the source to bit slice 0. 2075 * 0b111..Input 7. Selects the pin selected in the PINTSEL7 register as the source to bit slice 0. 2076 */ 2077 #define PINT_PMSRC_SRC0(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMSRC_SRC0_SHIFT)) & PINT_PMSRC_SRC0_MASK) 2078 #define PINT_PMSRC_SRC1_MASK (0x3800U) 2079 #define PINT_PMSRC_SRC1_SHIFT (11U) 2080 /*! SRC1 - Selects the input source for bit slice 1 2081 * 0b000..Input 0. Selects the pin selected in the PINTSEL0 register as the source to bit slice 1. 2082 * 0b001..Input 1. Selects the pin selected in the PINTSEL1 register as the source to bit slice 1. 2083 * 0b010..Input 2. Selects the pin selected in the PINTSEL2 register as the source to bit slice 1. 2084 * 0b011..Input 3. Selects the pin selected in the PINTSEL3 register as the source to bit slice 1. 2085 * 0b100..Input 4. Selects the pin selected in the PINTSEL4 register as the source to bit slice 1. 2086 * 0b101..Input 5. Selects the pin selected in the PINTSEL5 register as the source to bit slice 1. 2087 * 0b110..Input 6. Selects the pin selected in the PINTSEL6 register as the source to bit slice 1. 2088 * 0b111..Input 7. Selects the pin selected in the PINTSEL7 register as the source to bit slice 1. 2089 */ 2090 #define PINT_PMSRC_SRC1(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMSRC_SRC1_SHIFT)) & PINT_PMSRC_SRC1_MASK) 2091 #define PINT_PMSRC_SRC2_MASK (0x1C000U) 2092 #define PINT_PMSRC_SRC2_SHIFT (14U) 2093 /*! SRC2 - Selects the input source for bit slice 2 2094 * 0b000..Input 0. Selects the pin selected in the PINTSEL0 register as the source to bit slice 2. 2095 * 0b001..Input 1. Selects the pin selected in the PINTSEL1 register as the source to bit slice 2. 2096 * 0b010..Input 2. Selects the pin selected in the PINTSEL2 register as the source to bit slice 2. 2097 * 0b011..Input 3. Selects the pin selected in the PINTSEL3 register as the source to bit slice 2. 2098 * 0b100..Input 4. Selects the pin selected in the PINTSEL4 register as the source to bit slice 2. 2099 * 0b101..Input 5. Selects the pin selected in the PINTSEL5 register as the source to bit slice 2. 2100 * 0b110..Input 6. Selects the pin selected in the PINTSEL6 register as the source to bit slice 2. 2101 * 0b111..Input 7. Selects the pin selected in the PINTSEL7 register as the source to bit slice 2. 2102 */ 2103 #define PINT_PMSRC_SRC2(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMSRC_SRC2_SHIFT)) & PINT_PMSRC_SRC2_MASK) 2104 #define PINT_PMSRC_SRC3_MASK (0xE0000U) 2105 #define PINT_PMSRC_SRC3_SHIFT (17U) 2106 /*! SRC3 - Selects the input source for bit slice 3 2107 * 0b000..Input 0. Selects the pin selected in the PINTSEL0 register as the source to bit slice 3. 2108 * 0b001..Input 1. Selects the pin selected in the PINTSEL1 register as the source to bit slice 3. 2109 * 0b010..Input 2. Selects the pin selected in the PINTSEL2 register as the source to bit slice 3. 2110 * 0b011..Input 3. Selects the pin selected in the PINTSEL3 register as the source to bit slice 3. 2111 * 0b100..Input 4. Selects the pin selected in the PINTSEL4 register as the source to bit slice 3. 2112 * 0b101..Input 5. Selects the pin selected in the PINTSEL5 register as the source to bit slice 3. 2113 * 0b110..Input 6. Selects the pin selected in the PINTSEL6 register as the source to bit slice 3. 2114 * 0b111..Input 7. Selects the pin selected in the PINTSEL7 register as the source to bit slice 3. 2115 */ 2116 #define PINT_PMSRC_SRC3(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMSRC_SRC3_SHIFT)) & PINT_PMSRC_SRC3_MASK) 2117 #define PINT_PMSRC_SRC4_MASK (0x700000U) 2118 #define PINT_PMSRC_SRC4_SHIFT (20U) 2119 /*! SRC4 - Selects the input source for bit slice 4 2120 * 0b000..Input 0. Selects the pin selected in the PINTSEL0 register as the source to bit slice 4. 2121 * 0b001..Input 1. Selects the pin selected in the PINTSEL1 register as the source to bit slice 4. 2122 * 0b010..Input 2. Selects the pin selected in the PINTSEL2 register as the source to bit slice 4. 2123 * 0b011..Input 3. Selects the pin selected in the PINTSEL3 register as the source to bit slice 4. 2124 * 0b100..Input 4. Selects the pin selected in the PINTSEL4 register as the source to bit slice 4. 2125 * 0b101..Input 5. Selects the pin selected in the PINTSEL5 register as the source to bit slice 4. 2126 * 0b110..Input 6. Selects the pin selected in the PINTSEL6 register as the source to bit slice 4. 2127 * 0b111..Input 7. Selects the pin selected in the PINTSEL7 register as the source to bit slice 4. 2128 */ 2129 #define PINT_PMSRC_SRC4(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMSRC_SRC4_SHIFT)) & PINT_PMSRC_SRC4_MASK) 2130 #define PINT_PMSRC_SRC5_MASK (0x3800000U) 2131 #define PINT_PMSRC_SRC5_SHIFT (23U) 2132 /*! SRC5 - Selects the input source for bit slice 5 2133 * 0b000..Input 0. Selects the pin selected in the PINTSEL0 register as the source to bit slice 5. 2134 * 0b001..Input 1. Selects the pin selected in the PINTSEL1 register as the source to bit slice 5. 2135 * 0b010..Input 2. Selects the pin selected in the PINTSEL2 register as the source to bit slice 5. 2136 * 0b011..Input 3. Selects the pin selected in the PINTSEL3 register as the source to bit slice 5. 2137 * 0b100..Input 4. Selects the pin selected in the PINTSEL4 register as the source to bit slice 5. 2138 * 0b101..Input 5. Selects the pin selected in the PINTSEL5 register as the source to bit slice 5. 2139 * 0b110..Input 6. Selects the pin selected in the PINTSEL6 register as the source to bit slice 5. 2140 * 0b111..Input 7. Selects the pin selected in the PINTSEL7 register as the source to bit slice 5. 2141 */ 2142 #define PINT_PMSRC_SRC5(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMSRC_SRC5_SHIFT)) & PINT_PMSRC_SRC5_MASK) 2143 #define PINT_PMSRC_SRC6_MASK (0x1C000000U) 2144 #define PINT_PMSRC_SRC6_SHIFT (26U) 2145 /*! SRC6 - Selects the input source for bit slice 6 2146 * 0b000..Input 0. Selects the pin selected in the PINTSEL0 register as the source to bit slice 6. 2147 * 0b001..Input 1. Selects the pin selected in the PINTSEL1 register as the source to bit slice 6. 2148 * 0b010..Input 2. Selects the pin selected in the PINTSEL2 register as the source to bit slice 6. 2149 * 0b011..Input 3. Selects the pin selected in the PINTSEL3 register as the source to bit slice 6. 2150 * 0b100..Input 4. Selects the pin selected in the PINTSEL4 register as the source to bit slice 6. 2151 * 0b101..Input 5. Selects the pin selected in the PINTSEL5 register as the source to bit slice 6. 2152 * 0b110..Input 6. Selects the pin selected in the PINTSEL6 register as the source to bit slice 6. 2153 * 0b111..Input 7. Selects the pin selected in the PINTSEL7 register as the source to bit slice 6. 2154 */ 2155 #define PINT_PMSRC_SRC6(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMSRC_SRC6_SHIFT)) & PINT_PMSRC_SRC6_MASK) 2156 #define PINT_PMSRC_SRC7_MASK (0xE0000000U) 2157 #define PINT_PMSRC_SRC7_SHIFT (29U) 2158 /*! SRC7 - Selects the input source for bit slice 7 2159 * 0b000..Input 0. Selects the pin selected in the PINTSEL0 register as the source to bit slice 7. 2160 * 0b001..Input 1. Selects the pin selected in the PINTSEL1 register as the source to bit slice 7. 2161 * 0b010..Input 2. Selects the pin selected in the PINTSEL2 register as the source to bit slice 7. 2162 * 0b011..Input 3. Selects the pin selected in the PINTSEL3 register as the source to bit slice 7. 2163 * 0b100..Input 4. Selects the pin selected in the PINTSEL4 register as the source to bit slice 7. 2164 * 0b101..Input 5. Selects the pin selected in the PINTSEL5 register as the source to bit slice 7. 2165 * 0b110..Input 6. Selects the pin selected in the PINTSEL6 register as the source to bit slice 7. 2166 * 0b111..Input 7. Selects the pin selected in the PINTSEL7 register as the source to bit slice 7. 2167 */ 2168 #define PINT_PMSRC_SRC7(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMSRC_SRC7_SHIFT)) & PINT_PMSRC_SRC7_MASK) 2169 /*! @} */ 2170 2171 /*! @name PMCFG - Pattern match interrupt bit slice configuration register */ 2172 /*! @{ */ 2173 #define PINT_PMCFG_PROD_ENDPTS0_MASK (0x1U) 2174 #define PINT_PMCFG_PROD_ENDPTS0_SHIFT (0U) 2175 /*! PROD_ENDPTS0 - Determines whether slice 0 is an endpoint. 2176 * 0b0..No effect. Slice 0 is not an endpoint. 2177 * 0b1..endpoint. Slice 0 is the endpoint of a product term (minterm). Pin interrupt 0 in the NVIC is raised if the minterm evaluates as true. 2178 */ 2179 #define PINT_PMCFG_PROD_ENDPTS0(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_PROD_ENDPTS0_SHIFT)) & PINT_PMCFG_PROD_ENDPTS0_MASK) 2180 #define PINT_PMCFG_PROD_ENDPTS1_MASK (0x2U) 2181 #define PINT_PMCFG_PROD_ENDPTS1_SHIFT (1U) 2182 /*! PROD_ENDPTS1 - Determines whether slice 1 is an endpoint. 2183 * 0b0..No effect. Slice 1 is not an endpoint. 2184 * 0b1..endpoint. Slice 1 is the endpoint of a product term (minterm). Pin interrupt 1 in the NVIC is raised if the minterm evaluates as true. 2185 */ 2186 #define PINT_PMCFG_PROD_ENDPTS1(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_PROD_ENDPTS1_SHIFT)) & PINT_PMCFG_PROD_ENDPTS1_MASK) 2187 #define PINT_PMCFG_PROD_ENDPTS2_MASK (0x4U) 2188 #define PINT_PMCFG_PROD_ENDPTS2_SHIFT (2U) 2189 /*! PROD_ENDPTS2 - Determines whether slice 2 is an endpoint. 2190 * 0b0..No effect. Slice 2 is not an endpoint. 2191 * 0b1..endpoint. Slice 2 is the endpoint of a product term (minterm). Pin interrupt 2 in the NVIC is raised if the minterm evaluates as true. 2192 */ 2193 #define PINT_PMCFG_PROD_ENDPTS2(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_PROD_ENDPTS2_SHIFT)) & PINT_PMCFG_PROD_ENDPTS2_MASK) 2194 #define PINT_PMCFG_PROD_ENDPTS3_MASK (0x8U) 2195 #define PINT_PMCFG_PROD_ENDPTS3_SHIFT (3U) 2196 /*! PROD_ENDPTS3 - Determines whether slice 3 is an endpoint. 2197 * 0b0..No effect. Slice 3 is not an endpoint. 2198 * 0b1..endpoint. Slice 3 is the endpoint of a product term (minterm). Pin interrupt 3 in the NVIC is raised if the minterm evaluates as true. 2199 */ 2200 #define PINT_PMCFG_PROD_ENDPTS3(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_PROD_ENDPTS3_SHIFT)) & PINT_PMCFG_PROD_ENDPTS3_MASK) 2201 #define PINT_PMCFG_PROD_ENDPTS4_MASK (0x10U) 2202 #define PINT_PMCFG_PROD_ENDPTS4_SHIFT (4U) 2203 /*! PROD_ENDPTS4 - Determines whether slice 4 is an endpoint. 2204 * 0b0..No effect. Slice 4 is not an endpoint. 2205 * 0b1..endpoint. Slice 4 is the endpoint of a product term (minterm). Pin interrupt 4 in the NVIC is raised if the minterm evaluates as true. 2206 */ 2207 #define PINT_PMCFG_PROD_ENDPTS4(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_PROD_ENDPTS4_SHIFT)) & PINT_PMCFG_PROD_ENDPTS4_MASK) 2208 #define PINT_PMCFG_PROD_ENDPTS5_MASK (0x20U) 2209 #define PINT_PMCFG_PROD_ENDPTS5_SHIFT (5U) 2210 /*! PROD_ENDPTS5 - Determines whether slice 5 is an endpoint. 2211 * 0b0..No effect. Slice 5 is not an endpoint. 2212 * 0b1..endpoint. Slice 5 is the endpoint of a product term (minterm). Pin interrupt 5 in the NVIC is raised if the minterm evaluates as true. 2213 */ 2214 #define PINT_PMCFG_PROD_ENDPTS5(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_PROD_ENDPTS5_SHIFT)) & PINT_PMCFG_PROD_ENDPTS5_MASK) 2215 #define PINT_PMCFG_PROD_ENDPTS6_MASK (0x40U) 2216 #define PINT_PMCFG_PROD_ENDPTS6_SHIFT (6U) 2217 /*! PROD_ENDPTS6 - Determines whether slice 6 is an endpoint. 2218 * 0b0..No effect. Slice 6 is not an endpoint. 2219 * 0b1..endpoint. Slice 6 is the endpoint of a product term (minterm). Pin interrupt 6 in the NVIC is raised if the minterm evaluates as true. 2220 */ 2221 #define PINT_PMCFG_PROD_ENDPTS6(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_PROD_ENDPTS6_SHIFT)) & PINT_PMCFG_PROD_ENDPTS6_MASK) 2222 #define PINT_PMCFG_CFG0_MASK (0x700U) 2223 #define PINT_PMCFG_CFG0_SHIFT (8U) 2224 /*! CFG0 - Specifies the match contribution condition for bit slice 0. 2225 * 0b000..Constant HIGH. This bit slice always contributes to a product term match. 2226 * 0b001..Sticky rising edge. Match occurs if a rising edge on the specified input has occurred since the last 2227 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2228 * PMSRC registers are written to. 2229 * 0b010..Sticky falling edge. Match occurs if a falling edge on the specified input has occurred since the last 2230 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2231 * PMSRC registers are written to. 2232 * 0b011..Sticky rising or falling edge. Match occurs if either a rising or falling edge on the specified input 2233 * has occurred since the last time the edge detection for this bit slice was cleared. This bit is only 2234 * cleared when the PMCFG or the PMSRC registers are written to. 2235 * 0b100..High level. Match (for this bit slice) occurs when there is a high level on the input specified for this bit slice in the PMSRC register. 2236 * 0b101..Low level. Match occurs when there is a low level on the specified input. 2237 * 0b110..Constant 0. This bit slice never contributes to a match (should be used to disable any unused bit slices). 2238 * 0b111..Event. Non-sticky rising or falling edge. Match occurs on an event - i.e. when either a rising or 2239 * falling edge is first detected on the specified input (this is a non-sticky version of value 0x3) . This bit 2240 * is cleared after one clock cycle. 2241 */ 2242 #define PINT_PMCFG_CFG0(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_CFG0_SHIFT)) & PINT_PMCFG_CFG0_MASK) 2243 #define PINT_PMCFG_CFG1_MASK (0x3800U) 2244 #define PINT_PMCFG_CFG1_SHIFT (11U) 2245 /*! CFG1 - Specifies the match contribution condition for bit slice 1. 2246 * 0b000..Constant HIGH. This bit slice always contributes to a product term match. 2247 * 0b001..Sticky rising edge. Match occurs if a rising edge on the specified input has occurred since the last 2248 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2249 * PMSRC registers are written to. 2250 * 0b010..Sticky falling edge. Match occurs if a falling edge on the specified input has occurred since the last 2251 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2252 * PMSRC registers are written to. 2253 * 0b011..Sticky rising or falling edge. Match occurs if either a rising or falling edge on the specified input 2254 * has occurred since the last time the edge detection for this bit slice was cleared. This bit is only 2255 * cleared when the PMCFG or the PMSRC registers are written to. 2256 * 0b100..High level. Match (for this bit slice) occurs when there is a high level on the input specified for this bit slice in the PMSRC register. 2257 * 0b101..Low level. Match occurs when there is a low level on the specified input. 2258 * 0b110..Constant 0. This bit slice never contributes to a match (should be used to disable any unused bit slices). 2259 * 0b111..Event. Non-sticky rising or falling edge. Match occurs on an event - i.e. when either a rising or 2260 * falling edge is first detected on the specified input (this is a non-sticky version of value 0x3) . This bit 2261 * is cleared after one clock cycle. 2262 */ 2263 #define PINT_PMCFG_CFG1(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_CFG1_SHIFT)) & PINT_PMCFG_CFG1_MASK) 2264 #define PINT_PMCFG_CFG2_MASK (0x1C000U) 2265 #define PINT_PMCFG_CFG2_SHIFT (14U) 2266 /*! CFG2 - Specifies the match contribution condition for bit slice 2. 2267 * 0b000..Constant HIGH. This bit slice always contributes to a product term match. 2268 * 0b001..Sticky rising edge. Match occurs if a rising edge on the specified input has occurred since the last 2269 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2270 * PMSRC registers are written to. 2271 * 0b010..Sticky falling edge. Match occurs if a falling edge on the specified input has occurred since the last 2272 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2273 * PMSRC registers are written to. 2274 * 0b011..Sticky rising or falling edge. Match occurs if either a rising or falling edge on the specified input 2275 * has occurred since the last time the edge detection for this bit slice was cleared. This bit is only 2276 * cleared when the PMCFG or the PMSRC registers are written to. 2277 * 0b100..High level. Match (for this bit slice) occurs when there is a high level on the input specified for this bit slice in the PMSRC register. 2278 * 0b101..Low level. Match occurs when there is a low level on the specified input. 2279 * 0b110..Constant 0. This bit slice never contributes to a match (should be used to disable any unused bit slices). 2280 * 0b111..Event. Non-sticky rising or falling edge. Match occurs on an event - i.e. when either a rising or 2281 * falling edge is first detected on the specified input (this is a non-sticky version of value 0x3) . This bit 2282 * is cleared after one clock cycle. 2283 */ 2284 #define PINT_PMCFG_CFG2(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_CFG2_SHIFT)) & PINT_PMCFG_CFG2_MASK) 2285 #define PINT_PMCFG_CFG3_MASK (0xE0000U) 2286 #define PINT_PMCFG_CFG3_SHIFT (17U) 2287 /*! CFG3 - Specifies the match contribution condition for bit slice 3. 2288 * 0b000..Constant HIGH. This bit slice always contributes to a product term match. 2289 * 0b001..Sticky rising edge. Match occurs if a rising edge on the specified input has occurred since the last 2290 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2291 * PMSRC registers are written to. 2292 * 0b010..Sticky falling edge. Match occurs if a falling edge on the specified input has occurred since the last 2293 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2294 * PMSRC registers are written to. 2295 * 0b011..Sticky rising or falling edge. Match occurs if either a rising or falling edge on the specified input 2296 * has occurred since the last time the edge detection for this bit slice was cleared. This bit is only 2297 * cleared when the PMCFG or the PMSRC registers are written to. 2298 * 0b100..High level. Match (for this bit slice) occurs when there is a high level on the input specified for this bit slice in the PMSRC register. 2299 * 0b101..Low level. Match occurs when there is a low level on the specified input. 2300 * 0b110..Constant 0. This bit slice never contributes to a match (should be used to disable any unused bit slices). 2301 * 0b111..Event. Non-sticky rising or falling edge. Match occurs on an event - i.e. when either a rising or 2302 * falling edge is first detected on the specified input (this is a non-sticky version of value 0x3) . This bit 2303 * is cleared after one clock cycle. 2304 */ 2305 #define PINT_PMCFG_CFG3(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_CFG3_SHIFT)) & PINT_PMCFG_CFG3_MASK) 2306 #define PINT_PMCFG_CFG4_MASK (0x700000U) 2307 #define PINT_PMCFG_CFG4_SHIFT (20U) 2308 /*! CFG4 - Specifies the match contribution condition for bit slice 4. 2309 * 0b000..Constant HIGH. This bit slice always contributes to a product term match. 2310 * 0b001..Sticky rising edge. Match occurs if a rising edge on the specified input has occurred since the last 2311 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2312 * PMSRC registers are written to. 2313 * 0b010..Sticky falling edge. Match occurs if a falling edge on the specified input has occurred since the last 2314 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2315 * PMSRC registers are written to. 2316 * 0b011..Sticky rising or falling edge. Match occurs if either a rising or falling edge on the specified input 2317 * has occurred since the last time the edge detection for this bit slice was cleared. This bit is only 2318 * cleared when the PMCFG or the PMSRC registers are written to. 2319 * 0b100..High level. Match (for this bit slice) occurs when there is a high level on the input specified for this bit slice in the PMSRC register. 2320 * 0b101..Low level. Match occurs when there is a low level on the specified input. 2321 * 0b110..Constant 0. This bit slice never contributes to a match (should be used to disable any unused bit slices). 2322 * 0b111..Event. Non-sticky rising or falling edge. Match occurs on an event - i.e. when either a rising or 2323 * falling edge is first detected on the specified input (this is a non-sticky version of value 0x3) . This bit 2324 * is cleared after one clock cycle. 2325 */ 2326 #define PINT_PMCFG_CFG4(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_CFG4_SHIFT)) & PINT_PMCFG_CFG4_MASK) 2327 #define PINT_PMCFG_CFG5_MASK (0x3800000U) 2328 #define PINT_PMCFG_CFG5_SHIFT (23U) 2329 /*! CFG5 - Specifies the match contribution condition for bit slice 5. 2330 * 0b000..Constant HIGH. This bit slice always contributes to a product term match. 2331 * 0b001..Sticky rising edge. Match occurs if a rising edge on the specified input has occurred since the last 2332 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2333 * PMSRC registers are written to. 2334 * 0b010..Sticky falling edge. Match occurs if a falling edge on the specified input has occurred since the last 2335 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2336 * PMSRC registers are written to. 2337 * 0b011..Sticky rising or falling edge. Match occurs if either a rising or falling edge on the specified input 2338 * has occurred since the last time the edge detection for this bit slice was cleared. This bit is only 2339 * cleared when the PMCFG or the PMSRC registers are written to. 2340 * 0b100..High level. Match (for this bit slice) occurs when there is a high level on the input specified for this bit slice in the PMSRC register. 2341 * 0b101..Low level. Match occurs when there is a low level on the specified input. 2342 * 0b110..Constant 0. This bit slice never contributes to a match (should be used to disable any unused bit slices). 2343 * 0b111..Event. Non-sticky rising or falling edge. Match occurs on an event - i.e. when either a rising or 2344 * falling edge is first detected on the specified input (this is a non-sticky version of value 0x3) . This bit 2345 * is cleared after one clock cycle. 2346 */ 2347 #define PINT_PMCFG_CFG5(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_CFG5_SHIFT)) & PINT_PMCFG_CFG5_MASK) 2348 #define PINT_PMCFG_CFG6_MASK (0x1C000000U) 2349 #define PINT_PMCFG_CFG6_SHIFT (26U) 2350 /*! CFG6 - Specifies the match contribution condition for bit slice 6. 2351 * 0b000..Constant HIGH. This bit slice always contributes to a product term match. 2352 * 0b001..Sticky rising edge. Match occurs if a rising edge on the specified input has occurred since the last 2353 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2354 * PMSRC registers are written to. 2355 * 0b010..Sticky falling edge. Match occurs if a falling edge on the specified input has occurred since the last 2356 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2357 * PMSRC registers are written to. 2358 * 0b011..Sticky rising or falling edge. Match occurs if either a rising or falling edge on the specified input 2359 * has occurred since the last time the edge detection for this bit slice was cleared. This bit is only 2360 * cleared when the PMCFG or the PMSRC registers are written to. 2361 * 0b100..High level. Match (for this bit slice) occurs when there is a high level on the input specified for this bit slice in the PMSRC register. 2362 * 0b101..Low level. Match occurs when there is a low level on the specified input. 2363 * 0b110..Constant 0. This bit slice never contributes to a match (should be used to disable any unused bit slices). 2364 * 0b111..Event. Non-sticky rising or falling edge. Match occurs on an event - i.e. when either a rising or 2365 * falling edge is first detected on the specified input (this is a non-sticky version of value 0x3) . This bit 2366 * is cleared after one clock cycle. 2367 */ 2368 #define PINT_PMCFG_CFG6(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_CFG6_SHIFT)) & PINT_PMCFG_CFG6_MASK) 2369 #define PINT_PMCFG_CFG7_MASK (0xE0000000U) 2370 #define PINT_PMCFG_CFG7_SHIFT (29U) 2371 /*! CFG7 - Specifies the match contribution condition for bit slice 7. 2372 * 0b000..Constant HIGH. This bit slice always contributes to a product term match. 2373 * 0b001..Sticky rising edge. Match occurs if a rising edge on the specified input has occurred since the last 2374 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2375 * PMSRC registers are written to. 2376 * 0b010..Sticky falling edge. Match occurs if a falling edge on the specified input has occurred since the last 2377 * time the edge detection for this bit slice was cleared. This bit is only cleared when the PMCFG or the 2378 * PMSRC registers are written to. 2379 * 0b011..Sticky rising or falling edge. Match occurs if either a rising or falling edge on the specified input 2380 * has occurred since the last time the edge detection for this bit slice was cleared. This bit is only 2381 * cleared when the PMCFG or the PMSRC registers are written to. 2382 * 0b100..High level. Match (for this bit slice) occurs when there is a high level on the input specified for this bit slice in the PMSRC register. 2383 * 0b101..Low level. Match occurs when there is a low level on the specified input. 2384 * 0b110..Constant 0. This bit slice never contributes to a match (should be used to disable any unused bit slices). 2385 * 0b111..Event. Non-sticky rising or falling edge. Match occurs on an event - i.e. when either a rising or 2386 * falling edge is first detected on the specified input (this is a non-sticky version of value 0x3) . This bit 2387 * is cleared after one clock cycle. 2388 */ 2389 #define PINT_PMCFG_CFG7(x) (((uint32_t)(((uint32_t)(x)) << PINT_PMCFG_CFG7_SHIFT)) & PINT_PMCFG_CFG7_MASK) 2390 /*! @} */ 2391 2392 2393 /*! 2394 * @} 2395 */ /* end of group PINT_Register_Masks */ 2396 2397 2398 /* PINT - Peripheral instance base addresses */ 2399 /** Peripheral PINT base address */ 2400 #define PINT_BASE (0xA0004000u) 2401 /** Peripheral PINT base pointer */ 2402 #define PINT ((PINT_Type *)PINT_BASE) 2403 /** Array initializer of PINT peripheral base addresses */ 2404 #define PINT_BASE_ADDRS { PINT_BASE } 2405 /** Array initializer of PINT peripheral base pointers */ 2406 #define PINT_BASE_PTRS { PINT } 2407 /** Interrupt vectors for the PINT peripheral type */ 2408 #define PINT_IRQS { PIN_INT0_IRQn, PIN_INT1_IRQn, PIN_INT2_IRQn, PIN_INT3_IRQn, PIN_INT4_IRQn, PIN_INT5_IRQn, PIN_INT6_IRQn, PIN_INT7_IRQn } 2409 2410 /*! 2411 * @} 2412 */ /* end of group PINT_Peripheral_Access_Layer */ 2413 2414 2415 /* ---------------------------------------------------------------------------- 2416 -- PMU Peripheral Access Layer 2417 ---------------------------------------------------------------------------- */ 2418 2419 /*! 2420 * @addtogroup PMU_Peripheral_Access_Layer PMU Peripheral Access Layer 2421 * @{ 2422 */ 2423 2424 /** PMU - Register Layout Typedef */ 2425 typedef struct { 2426 __IO uint32_t PCON; /**< Power control register, offset: 0x0 */ 2427 __IO uint32_t GPREG[4]; /**< General purpose register N, array offset: 0x4, array step: 0x4 */ 2428 __IO uint32_t DPDCTRL; /**< Deep power-down control register. Also includes bits for general purpose storage., offset: 0x14 */ 2429 } PMU_Type; 2430 2431 /* ---------------------------------------------------------------------------- 2432 -- PMU Register Masks 2433 ---------------------------------------------------------------------------- */ 2434 2435 /*! 2436 * @addtogroup PMU_Register_Masks PMU Register Masks 2437 * @{ 2438 */ 2439 2440 /*! @name PCON - Power control register */ 2441 /*! @{ */ 2442 #define PMU_PCON_PM_MASK (0x7U) 2443 #define PMU_PCON_PM_SHIFT (0U) 2444 /*! PM - Power mode 2445 * 0b000..Default. The part is in active or sleep mode. 2446 * 0b001..Deep-sleep mode. ARM WFI will enter Deep-sleep mode. 2447 * 0b010..Power-down mode. ARM WFI will enter Power-down mode. 2448 * 0b011..Deep power-down mode. ARM WFI will enter Deep-power down mode (ARM Cortex-M0+ core powered-down). 2449 */ 2450 #define PMU_PCON_PM(x) (((uint32_t)(((uint32_t)(x)) << PMU_PCON_PM_SHIFT)) & PMU_PCON_PM_MASK) 2451 #define PMU_PCON_NODPD_MASK (0x8U) 2452 #define PMU_PCON_NODPD_SHIFT (3U) 2453 /*! NODPD - A 1 in this bit prevents entry to Deep power-down mode when 0x3 is written to the PM 2454 * field above, the SLEEPDEEP bit is set, and a WFI is executed. This bit is cleared only by 2455 * power-on reset, so writing a one to this bit locks the part in a mode in which Deep power-down mode 2456 * is blocked. 2457 */ 2458 #define PMU_PCON_NODPD(x) (((uint32_t)(((uint32_t)(x)) << PMU_PCON_NODPD_SHIFT)) & PMU_PCON_NODPD_MASK) 2459 #define PMU_PCON_SLEEPFLAG_MASK (0x100U) 2460 #define PMU_PCON_SLEEPFLAG_SHIFT (8U) 2461 /*! SLEEPFLAG - Sleep mode flag 2462 * 0b0..Active mode. Read: No power-down mode entered. Part is in Active mode. Write: No effect. 2463 * 0b1..Low power mode. Read: Sleep, Deep-sleep or Power-down mode entered. Write: Writing a 1 clears the SLEEPFLAG bit to 0. 2464 */ 2465 #define PMU_PCON_SLEEPFLAG(x) (((uint32_t)(((uint32_t)(x)) << PMU_PCON_SLEEPFLAG_SHIFT)) & PMU_PCON_SLEEPFLAG_MASK) 2466 #define PMU_PCON_DPDFLAG_MASK (0x800U) 2467 #define PMU_PCON_DPDFLAG_SHIFT (11U) 2468 /*! DPDFLAG - Deep power-down flag 2469 * 0b0..Not Deep power-down. Read: Deep power-down mode not entered. Write: No effect. 2470 * 0b1..Deep power-down. Read: Deep power-down mode entered. Write: Clear the Deep power-down flag. 2471 */ 2472 #define PMU_PCON_DPDFLAG(x) (((uint32_t)(((uint32_t)(x)) << PMU_PCON_DPDFLAG_SHIFT)) & PMU_PCON_DPDFLAG_MASK) 2473 /*! @} */ 2474 2475 /*! @name GPREG - General purpose register N */ 2476 /*! @{ */ 2477 #define PMU_GPREG_GPDATA_MASK (0xFFFFFFFFU) 2478 #define PMU_GPREG_GPDATA_SHIFT (0U) 2479 /*! GPDATA - Data retained during Deep power-down mode. 2480 */ 2481 #define PMU_GPREG_GPDATA(x) (((uint32_t)(((uint32_t)(x)) << PMU_GPREG_GPDATA_SHIFT)) & PMU_GPREG_GPDATA_MASK) 2482 /*! @} */ 2483 2484 /* The count of PMU_GPREG */ 2485 #define PMU_GPREG_COUNT (4U) 2486 2487 /*! @name DPDCTRL - Deep power-down control register. Also includes bits for general purpose storage. */ 2488 /*! @{ */ 2489 #define PMU_DPDCTRL_WAKEUPHYS_MASK (0x1U) 2490 #define PMU_DPDCTRL_WAKEUPHYS_SHIFT (0U) 2491 /*! WAKEUPHYS - WAKEUP pin hysteresis enable 2492 * 0b0..Disabled. Hysteresis for WAKEUP pin disabled. 2493 * 0b1..Enabled. Hysteresis for WAKEUP pin enabled. 2494 */ 2495 #define PMU_DPDCTRL_WAKEUPHYS(x) (((uint32_t)(((uint32_t)(x)) << PMU_DPDCTRL_WAKEUPHYS_SHIFT)) & PMU_DPDCTRL_WAKEUPHYS_MASK) 2496 #define PMU_DPDCTRL_WAKEPAD_DISABLE_MASK (0x2U) 2497 #define PMU_DPDCTRL_WAKEPAD_DISABLE_SHIFT (1U) 2498 /*! WAKEPAD_DISABLE - WAKEUP pin disable. Setting this bit disables the wake-up pin, so it can be 2499 * used for other purposes. Remark: Never set this bit if you intend to use a pin to wake up the 2500 * part from Deep power-down mode. You can only disable the wake-up pin if the self wake-up timer 2501 * is enabled and configured. Remark: Setting this bit is not necessary if Deep power-down mode is 2502 * not used. 2503 * 0b0..Enabled. The wake-up function is enabled on pin PIO0_4. 2504 * 0b1..Disabled. Setting this bit disables the wake-up function on pin PIO0_4. 2505 */ 2506 #define PMU_DPDCTRL_WAKEPAD_DISABLE(x) (((uint32_t)(((uint32_t)(x)) << PMU_DPDCTRL_WAKEPAD_DISABLE_SHIFT)) & PMU_DPDCTRL_WAKEPAD_DISABLE_MASK) 2507 #define PMU_DPDCTRL_LPOSCEN_MASK (0x4U) 2508 #define PMU_DPDCTRL_LPOSCEN_SHIFT (2U) 2509 /*! LPOSCEN - Enable the low-power oscillator for use with the 10 kHz self wake-up timer clock. You 2510 * must set this bit if the CLKSEL bit in the self wake-up timer CTRL bit is set. Do not enable 2511 * the low-power oscillator if the self wake-up timer is clocked by the divided IRC or the 2512 * external clock input. 2513 * 0b0..Disabled. 2514 * 0b1..Enabled. 2515 */ 2516 #define PMU_DPDCTRL_LPOSCEN(x) (((uint32_t)(((uint32_t)(x)) << PMU_DPDCTRL_LPOSCEN_SHIFT)) & PMU_DPDCTRL_LPOSCEN_MASK) 2517 #define PMU_DPDCTRL_LPOSCDPDEN_MASK (0x8U) 2518 #define PMU_DPDCTRL_LPOSCDPDEN_SHIFT (3U) 2519 /*! LPOSCDPDEN - causes the low-power oscillator to remain running during Deep power-down mode 2520 * provided that bit 2 in this register is set as well. You must set this bit for the self wake-up 2521 * timer to be able to wake up the part from Deep power-down mode. Remark: Do not set this bit 2522 * unless you use the self wake-up timer with the low-power oscillator clock source to wake up from 2523 * Deep power-down mode. 2524 * 0b0..Disabled. 2525 * 0b1..Enabled. 2526 */ 2527 #define PMU_DPDCTRL_LPOSCDPDEN(x) (((uint32_t)(((uint32_t)(x)) << PMU_DPDCTRL_LPOSCDPDEN_SHIFT)) & PMU_DPDCTRL_LPOSCDPDEN_MASK) 2528 #define PMU_DPDCTRL_GPDATA_MASK (0xFFFFFFF0U) 2529 #define PMU_DPDCTRL_GPDATA_SHIFT (4U) 2530 /*! GPDATA - Data retained during Deep power-down mode. 2531 */ 2532 #define PMU_DPDCTRL_GPDATA(x) (((uint32_t)(((uint32_t)(x)) << PMU_DPDCTRL_GPDATA_SHIFT)) & PMU_DPDCTRL_GPDATA_MASK) 2533 /*! @} */ 2534 2535 2536 /*! 2537 * @} 2538 */ /* end of group PMU_Register_Masks */ 2539 2540 2541 /* PMU - Peripheral instance base addresses */ 2542 /** Peripheral PMU base address */ 2543 #define PMU_BASE (0x40020000u) 2544 /** Peripheral PMU base pointer */ 2545 #define PMU ((PMU_Type *)PMU_BASE) 2546 /** Array initializer of PMU peripheral base addresses */ 2547 #define PMU_BASE_ADDRS { PMU_BASE } 2548 /** Array initializer of PMU peripheral base pointers */ 2549 #define PMU_BASE_PTRS { PMU } 2550 2551 /*! 2552 * @} 2553 */ /* end of group PMU_Peripheral_Access_Layer */ 2554 2555 2556 /* ---------------------------------------------------------------------------- 2557 -- SCT Peripheral Access Layer 2558 ---------------------------------------------------------------------------- */ 2559 2560 /*! 2561 * @addtogroup SCT_Peripheral_Access_Layer SCT Peripheral Access Layer 2562 * @{ 2563 */ 2564 2565 /** SCT - Register Layout Typedef */ 2566 typedef struct { 2567 __IO uint32_t CONFIG; /**< SCT configuration register, offset: 0x0 */ 2568 union { /* offset: 0x4 */ 2569 struct { /* offset: 0x4 */ 2570 __IO uint16_t CTRLL; /**< SCT_CTRLL register, offset: 0x4 */ 2571 __IO uint16_t CTRLH; /**< SCT_CTRLH register, offset: 0x6 */ 2572 } CTRL_ACCESS16BIT; 2573 __IO uint32_t CTRL; /**< SCT control register, offset: 0x4 */ 2574 }; 2575 union { /* offset: 0x8 */ 2576 struct { /* offset: 0x8 */ 2577 __IO uint16_t LIMITL; /**< SCT_LIMITL register, offset: 0x8 */ 2578 __IO uint16_t LIMITH; /**< SCT_LIMITH register, offset: 0xA */ 2579 } LIMIT_ACCESS16BIT; 2580 __IO uint32_t LIMIT; /**< SCT limit event select register, offset: 0x8 */ 2581 }; 2582 union { /* offset: 0xC */ 2583 struct { /* offset: 0xC */ 2584 __IO uint16_t HALTL; /**< SCT_HALTL register, offset: 0xC */ 2585 __IO uint16_t HALTH; /**< SCT_HALTH register, offset: 0xE */ 2586 } HALT_ACCESS16BIT; 2587 __IO uint32_t HALT; /**< SCT halt event select register, offset: 0xC */ 2588 }; 2589 union { /* offset: 0x10 */ 2590 struct { /* offset: 0x10 */ 2591 __IO uint16_t STOPL; /**< SCT_STOPL register, offset: 0x10 */ 2592 __IO uint16_t STOPH; /**< SCT_STOPH register, offset: 0x12 */ 2593 } STOP_ACCESS16BIT; 2594 __IO uint32_t STOP; /**< SCT stop event select register, offset: 0x10 */ 2595 }; 2596 union { /* offset: 0x14 */ 2597 struct { /* offset: 0x14 */ 2598 __IO uint16_t STARTL; /**< SCT_STARTL register, offset: 0x14 */ 2599 __IO uint16_t STARTH; /**< SCT_STARTH register, offset: 0x16 */ 2600 } START_ACCESS16BIT; 2601 __IO uint32_t START; /**< SCT start event select register, offset: 0x14 */ 2602 }; 2603 uint8_t RESERVED_0[40]; 2604 union { /* offset: 0x40 */ 2605 struct { /* offset: 0x40 */ 2606 __IO uint16_t COUNTL; /**< SCT_COUNTL register, offset: 0x40 */ 2607 __IO uint16_t COUNTH; /**< SCT_COUNTH register, offset: 0x42 */ 2608 } COUNT_ACCESS16BIT; 2609 __IO uint32_t COUNT; /**< SCT counter register, offset: 0x40 */ 2610 }; 2611 union { /* offset: 0x44 */ 2612 struct { /* offset: 0x44 */ 2613 __IO uint16_t STATEL; /**< SCT_STATEL register, offset: 0x44 */ 2614 __IO uint16_t STATEH; /**< SCT_STATEH register, offset: 0x46 */ 2615 } STATE_ACCESS16BIT; 2616 __IO uint32_t STATE; /**< SCT state register, offset: 0x44 */ 2617 }; 2618 __I uint32_t INPUT; /**< SCT input register, offset: 0x48 */ 2619 union { /* offset: 0x4C */ 2620 struct { /* offset: 0x4C */ 2621 __IO uint16_t REGMODEL; /**< SCT_REGMODEL register, offset: 0x4C */ 2622 __IO uint16_t REGMODEH; /**< SCT_REGMODEH register, offset: 0x4E */ 2623 } REGMODE_ACCESS16BIT; 2624 __IO uint32_t REGMODE; /**< SCT match/capture mode register, offset: 0x4C */ 2625 }; 2626 __IO uint32_t OUTPUT; /**< SCT output register, offset: 0x50 */ 2627 __IO uint32_t OUTPUTDIRCTRL; /**< SCT output counter direction control register, offset: 0x54 */ 2628 __IO uint32_t RES; /**< SCT conflict resolution register, offset: 0x58 */ 2629 uint8_t RESERVED_1[148]; 2630 __IO uint32_t EVEN; /**< SCT event interrupt enable register, offset: 0xF0 */ 2631 __IO uint32_t EVFLAG; /**< SCT event flag register, offset: 0xF4 */ 2632 __IO uint32_t CONEN; /**< SCT conflict interrupt enable register, offset: 0xF8 */ 2633 __IO uint32_t CONFLAG; /**< SCT conflict flag register, offset: 0xFC */ 2634 union { /* offset: 0x100 */ 2635 union { /* offset: 0x100, array step: 0x4 */ 2636 struct { /* offset: 0x100, array step: 0x4 */ 2637 __IO uint16_t CAPL; /**< SCT_CAPL register, array offset: 0x100, array step: 0x4 */ 2638 __IO uint16_t CAPH; /**< SCT_CAPH register, array offset: 0x102, array step: 0x4 */ 2639 } CAP_ACCESS16BIT[5]; 2640 __IO uint32_t CAP[5]; /**< SCT capture register of capture channel, array offset: 0x100, array step: 0x4 */ 2641 }; 2642 union { /* offset: 0x100, array step: 0x4 */ 2643 struct { /* offset: 0x100, array step: 0x4 */ 2644 __IO uint16_t MATCHL; /**< SCT_MATCHL register, array offset: 0x100, array step: 0x4 */ 2645 __IO uint16_t MATCHH; /**< SCT_MATCHH register, array offset: 0x102, array step: 0x4 */ 2646 } MATCH_ACCESS16BIT[5]; 2647 __IO uint32_t MATCH[5]; /**< SCT match value register of match channels, array offset: 0x100, array step: 0x4 */ 2648 }; 2649 }; 2650 uint8_t RESERVED_2[236]; 2651 union { /* offset: 0x200 */ 2652 union { /* offset: 0x200, array step: 0x4 */ 2653 struct { /* offset: 0x200, array step: 0x4 */ 2654 __IO uint16_t CAPCTRLL; /**< SCT_CAPCTRLL register, array offset: 0x200, array step: 0x4 */ 2655 __IO uint16_t CAPCTRLH; /**< SCT_CAPCTRLH register, array offset: 0x202, array step: 0x4 */ 2656 } CAPCTRL_ACCESS16BIT[5]; 2657 __IO uint32_t CAPCTRL[5]; /**< SCT capture control register, array offset: 0x200, array step: 0x4 */ 2658 }; 2659 union { /* offset: 0x200, array step: 0x4 */ 2660 struct { /* offset: 0x200, array step: 0x4 */ 2661 __IO uint16_t MATCHRELL; /**< SCT_MATCHRELL register, array offset: 0x200, array step: 0x4 */ 2662 __IO uint16_t MATCHRELH; /**< SCT_MATCHRELH register, array offset: 0x202, array step: 0x4 */ 2663 } MATCHREL_ACCESS16BIT[5]; 2664 __IO uint32_t MATCHREL[5]; /**< SCT match reload value register, array offset: 0x200, array step: 0x4 */ 2665 }; 2666 }; 2667 uint8_t RESERVED_3[236]; 2668 struct { /* offset: 0x300, array step: 0x8 */ 2669 __IO uint32_t STATE; /**< SCT event state register 0, array offset: 0x300, array step: 0x8 */ 2670 __IO uint32_t CTRL; /**< SCT event control register 0, array offset: 0x304, array step: 0x8 */ 2671 } EV[6]; 2672 uint8_t RESERVED_4[464]; 2673 struct { /* offset: 0x500, array step: 0x8 */ 2674 __IO uint32_t SET; /**< SCT output 0 set register, array offset: 0x500, array step: 0x8 */ 2675 __IO uint32_t CLR; /**< SCT output 0 clear register, array offset: 0x504, array step: 0x8 */ 2676 } OUT[4]; 2677 } SCT_Type; 2678 2679 /* ---------------------------------------------------------------------------- 2680 -- SCT Register Masks 2681 ---------------------------------------------------------------------------- */ 2682 2683 /*! 2684 * @addtogroup SCT_Register_Masks SCT Register Masks 2685 * @{ 2686 */ 2687 2688 /*! @name CONFIG - SCT configuration register */ 2689 /*! @{ */ 2690 #define SCT_CONFIG_UNIFY_MASK (0x1U) 2691 #define SCT_CONFIG_UNIFY_SHIFT (0U) 2692 /*! UNIFY - SCT operation 2693 * 0b0..The SCT operates as two 16-bit counters named COUNTER_L and COUNTER_H. 2694 * 0b1..The SCT operates as a unified 32-bit counter. 2695 */ 2696 #define SCT_CONFIG_UNIFY(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFIG_UNIFY_SHIFT)) & SCT_CONFIG_UNIFY_MASK) 2697 #define SCT_CONFIG_CLKMODE_MASK (0x6U) 2698 #define SCT_CONFIG_CLKMODE_SHIFT (1U) 2699 /*! CLKMODE - SCT clock mode 2700 * 0b00..System Clock Mode. The system clock clocks the entire SCT module including the counter(s) and counter prescalers. 2701 * 0b01..Sampled System Clock Mode. The system clock clocks the SCT module, but the counter and prescalers are 2702 * only enabled to count when the designated edge is detected on the input selected by the CKSEL field. The 2703 * minimum pulse width on the selected clock-gate input is 1 bus clock period. This mode is the 2704 * high-performance, sampled-clock mode. 2705 * 0b10..SCT Input Clock Mode. The input/edge selected by the CKSEL field clocks the SCT module, including the 2706 * counters and prescalers, after first being synchronized to the system clock. The minimum pulse width on the 2707 * clock input is 1 bus clock period. This mode is the low-power, sampled-clock mode. 2708 * 0b11..Asynchronous Mode. The entire SCT module is clocked directly by the input/edge selected by the CKSEL 2709 * field. In this mode, the SCT outputs are switched synchronously to the SCT input clock - not the system 2710 * clock. The input clock rate must be at least half the system clock rate and can be the same or faster than 2711 * the system clock. 2712 */ 2713 #define SCT_CONFIG_CLKMODE(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFIG_CLKMODE_SHIFT)) & SCT_CONFIG_CLKMODE_MASK) 2714 #define SCT_CONFIG_CKSEL_MASK (0x78U) 2715 #define SCT_CONFIG_CKSEL_SHIFT (3U) 2716 /*! CKSEL - SCT clock select. The specific functionality of the designated input/edge is dependent 2717 * on the CLKMODE bit selection in this register. 2718 * 0b0000..Rising edges on input 0. 2719 * 0b0001..Falling edges on input 0. 2720 * 0b0010..Rising edges on input 1. 2721 * 0b0011..Falling edges on input 1. 2722 * 0b0100..Rising edges on input 2. 2723 * 0b0101..Falling edges on input 2. 2724 * 0b0110..Rising edges on input 3. 2725 * 0b0111..Falling edges on input 3. 2726 */ 2727 #define SCT_CONFIG_CKSEL(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFIG_CKSEL_SHIFT)) & SCT_CONFIG_CKSEL_MASK) 2728 #define SCT_CONFIG_NORELOAD_L_MASK (0x80U) 2729 #define SCT_CONFIG_NORELOAD_L_SHIFT (7U) 2730 /*! NORELOAD_L - A 1 in this bit prevents the lower match registers from being reloaded from their 2731 * respective reload registers. Setting this bit eliminates the need to write to the reload 2732 * registers MATCHREL if the match values are fixed. Software can write to set or clear this bit at any 2733 * time. This bit applies to both the higher and lower registers when the UNIFY bit is set. 2734 */ 2735 #define SCT_CONFIG_NORELOAD_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFIG_NORELOAD_L_SHIFT)) & SCT_CONFIG_NORELOAD_L_MASK) 2736 #define SCT_CONFIG_NORELOAD_H_MASK (0x100U) 2737 #define SCT_CONFIG_NORELOAD_H_SHIFT (8U) 2738 /*! NORELOAD_H - A 1 in this bit prevents the higher match registers from being reloaded from their 2739 * respective reload registers. Setting this bit eliminates the need to write to the reload 2740 * registers MATCHREL if the match values are fixed. Software can write to set or clear this bit at 2741 * any time. This bit is not used when the UNIFY bit is set. 2742 */ 2743 #define SCT_CONFIG_NORELOAD_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFIG_NORELOAD_H_SHIFT)) & SCT_CONFIG_NORELOAD_H_MASK) 2744 #define SCT_CONFIG_INSYNC_MASK (0x1FE00U) 2745 #define SCT_CONFIG_INSYNC_SHIFT (9U) 2746 /*! INSYNC - Synchronization for input N (bit 9 = input 0, bit 10 = input 1,, bit 12 = input 3); all 2747 * other bits are reserved. A 1 in one of these bits subjects the corresponding input to 2748 * synchronization to the SCT clock, before it is used to create an event. If an input is known to 2749 * already be synchronous to the SCT clock, this bit may be set to 0 for faster input response. (Note: 2750 * The SCT clock is the system clock for CKMODEs 0-2. It is the selected, asynchronous SCT input 2751 * clock for CKMODE3). Note that the INSYNC field only affects inputs used for event generation. 2752 * It does not apply to the clock input specified in the CKSEL field. 2753 */ 2754 #define SCT_CONFIG_INSYNC(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFIG_INSYNC_SHIFT)) & SCT_CONFIG_INSYNC_MASK) 2755 #define SCT_CONFIG_AUTOLIMIT_L_MASK (0x20000U) 2756 #define SCT_CONFIG_AUTOLIMIT_L_SHIFT (17U) 2757 /*! AUTOLIMIT_L - A one in this bit causes a match on match register 0 to be treated as a de-facto 2758 * LIMIT condition without the need to define an associated event. As with any LIMIT event, this 2759 * automatic limit causes the counter to be cleared to zero in unidirectional mode or to change 2760 * the direction of count in bi-directional mode. Software can write to set or clear this bit at 2761 * any time. This bit applies to both the higher and lower registers when the UNIFY bit is set. 2762 */ 2763 #define SCT_CONFIG_AUTOLIMIT_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFIG_AUTOLIMIT_L_SHIFT)) & SCT_CONFIG_AUTOLIMIT_L_MASK) 2764 #define SCT_CONFIG_AUTOLIMIT_H_MASK (0x40000U) 2765 #define SCT_CONFIG_AUTOLIMIT_H_SHIFT (18U) 2766 /*! AUTOLIMIT_H - A one in this bit will cause a match on match register 0 to be treated as a 2767 * de-facto LIMIT condition without the need to define an associated event. As with any LIMIT event, 2768 * this automatic limit causes the counter to be cleared to zero in unidirectional mode or to 2769 * change the direction of count in bi-directional mode. Software can write to set or clear this bit 2770 * at any time. This bit is not used when the UNIFY bit is set. 2771 */ 2772 #define SCT_CONFIG_AUTOLIMIT_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFIG_AUTOLIMIT_H_SHIFT)) & SCT_CONFIG_AUTOLIMIT_H_MASK) 2773 /*! @} */ 2774 2775 /*! @name CTRLL - SCT_CTRLL register */ 2776 /*! @{ */ 2777 #define SCT_CTRLL_DOWN_L_MASK (0x1U) 2778 #define SCT_CTRLL_DOWN_L_SHIFT (0U) 2779 /*! DOWN_L - This bit is 1 when the L or unified counter is counting down. Hardware sets this bit 2780 * when the counter is counting up, counter limit occurs, and BIDIR = 1.Hardware clears this bit 2781 * when the counter is counting down and a limit condition occurs or when the counter reaches 0. 2782 */ 2783 #define SCT_CTRLL_DOWN_L(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLL_DOWN_L_SHIFT)) & SCT_CTRLL_DOWN_L_MASK) 2784 #define SCT_CTRLL_STOP_L_MASK (0x2U) 2785 #define SCT_CTRLL_STOP_L_SHIFT (1U) 2786 /*! STOP_L - When this bit is 1 and HALT is 0, the L or unified counter does not run, but I/O events 2787 * related to the counter can occur. If a designated start event occurs, this bit is cleared and 2788 * counting resumes. 2789 */ 2790 #define SCT_CTRLL_STOP_L(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLL_STOP_L_SHIFT)) & SCT_CTRLL_STOP_L_MASK) 2791 #define SCT_CTRLL_HALT_L_MASK (0x4U) 2792 #define SCT_CTRLL_HALT_L_SHIFT (2U) 2793 /*! HALT_L - When this bit is 1, the L or unified counter does not run and no events can occur. A 2794 * reset sets this bit. When the HALT_L bit is one, the STOP_L bit is cleared. It is possible to 2795 * remove the halt condition while keeping the SCT in the stop condition (not running) with a 2796 * single write to this register to simultaneously clear the HALT bit and set the STOP bit. Once set, 2797 * only software can clear this bit to restore counter operation. This bit is set on reset. 2798 */ 2799 #define SCT_CTRLL_HALT_L(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLL_HALT_L_SHIFT)) & SCT_CTRLL_HALT_L_MASK) 2800 #define SCT_CTRLL_CLRCTR_L_MASK (0x8U) 2801 #define SCT_CTRLL_CLRCTR_L_SHIFT (3U) 2802 /*! CLRCTR_L - Writing a 1 to this bit clears the L or unified counter. This bit always reads as 0. 2803 */ 2804 #define SCT_CTRLL_CLRCTR_L(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLL_CLRCTR_L_SHIFT)) & SCT_CTRLL_CLRCTR_L_MASK) 2805 #define SCT_CTRLL_BIDIR_L_MASK (0x10U) 2806 #define SCT_CTRLL_BIDIR_L_SHIFT (4U) 2807 /*! BIDIR_L - L or unified counter direction select 2808 * 0b0..Up. The counter counts up to a limit condition, then is cleared to zero. 2809 * 0b1..Up-down. The counter counts up to a limit, then counts down to a limit condition or to 0. 2810 */ 2811 #define SCT_CTRLL_BIDIR_L(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLL_BIDIR_L_SHIFT)) & SCT_CTRLL_BIDIR_L_MASK) 2812 #define SCT_CTRLL_PRE_L_MASK (0x1FE0U) 2813 #define SCT_CTRLL_PRE_L_SHIFT (5U) 2814 /*! PRE_L - Specifies the factor by which the SCT clock is prescaled to produce the L or unified 2815 * counter clock. The counter clock is clocked at the rate of the SCT clock divided by PRE_L+1. 2816 * Clear the counter (by writing a 1 to the CLRCTR bit) whenever changing the PRE value. 2817 */ 2818 #define SCT_CTRLL_PRE_L(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLL_PRE_L_SHIFT)) & SCT_CTRLL_PRE_L_MASK) 2819 /*! @} */ 2820 2821 /*! @name CTRLH - SCT_CTRLH register */ 2822 /*! @{ */ 2823 #define SCT_CTRLH_DOWN_H_MASK (0x1U) 2824 #define SCT_CTRLH_DOWN_H_SHIFT (0U) 2825 /*! DOWN_H - This bit is 1 when the H counter is counting down. Hardware sets this bit when the 2826 * counter is counting, a counter limit condition occurs, and BIDIR is 1. Hardware clears this bit 2827 * when the counter is counting down and a limit condition occurs or when the counter reaches 0. 2828 */ 2829 #define SCT_CTRLH_DOWN_H(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLH_DOWN_H_SHIFT)) & SCT_CTRLH_DOWN_H_MASK) 2830 #define SCT_CTRLH_STOP_H_MASK (0x2U) 2831 #define SCT_CTRLH_STOP_H_SHIFT (1U) 2832 /*! STOP_H - When this bit is 1 and HALT is 0, the H counter does not, run but I/O events related to 2833 * the counter can occur. If such an event matches the mask in the Start register, this bit is 2834 * cleared and counting resumes. 2835 */ 2836 #define SCT_CTRLH_STOP_H(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLH_STOP_H_SHIFT)) & SCT_CTRLH_STOP_H_MASK) 2837 #define SCT_CTRLH_HALT_H_MASK (0x4U) 2838 #define SCT_CTRLH_HALT_H_SHIFT (2U) 2839 /*! HALT_H - When this bit is 1, the H counter does not run and no events can occur. A reset sets 2840 * this bit. When the HALT_H bit is one, the STOP_H bit is cleared. It is possible to remove the 2841 * halt condition while keeping the SCT in the stop condition (not running) with a single write to 2842 * this register to simultaneously clear the HALT bit and set the STOP bit. Once set, this bit 2843 * can only be cleared by software to restore counter operation. This bit is set on reset. 2844 */ 2845 #define SCT_CTRLH_HALT_H(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLH_HALT_H_SHIFT)) & SCT_CTRLH_HALT_H_MASK) 2846 #define SCT_CTRLH_CLRCTR_H_MASK (0x8U) 2847 #define SCT_CTRLH_CLRCTR_H_SHIFT (3U) 2848 /*! CLRCTR_H - Writing a 1 to this bit clears the H counter. This bit always reads as 0. 2849 */ 2850 #define SCT_CTRLH_CLRCTR_H(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLH_CLRCTR_H_SHIFT)) & SCT_CTRLH_CLRCTR_H_MASK) 2851 #define SCT_CTRLH_BIDIR_H_MASK (0x10U) 2852 #define SCT_CTRLH_BIDIR_H_SHIFT (4U) 2853 /*! BIDIR_H - Direction select 2854 * 0b0..The H counter counts up to its limit condition, then is cleared to zero. 2855 * 0b1..The H counter counts up to its limit, then counts down to a limit condition or to 0. 2856 */ 2857 #define SCT_CTRLH_BIDIR_H(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLH_BIDIR_H_SHIFT)) & SCT_CTRLH_BIDIR_H_MASK) 2858 #define SCT_CTRLH_PRE_H_MASK (0x1FE0U) 2859 #define SCT_CTRLH_PRE_H_SHIFT (5U) 2860 /*! PRE_H - Specifies the factor by which the SCT clock is prescaled to produce the H counter clock. 2861 * The counter clock is clocked at the rate of the SCT clock divided by PRELH+1. Clear the 2862 * counter (by writing a 1 to the CLRCTR bit) whenever changing the PRE value. 2863 */ 2864 #define SCT_CTRLH_PRE_H(x) (((uint16_t)(((uint16_t)(x)) << SCT_CTRLH_PRE_H_SHIFT)) & SCT_CTRLH_PRE_H_MASK) 2865 /*! @} */ 2866 2867 /*! @name CTRL - SCT control register */ 2868 /*! @{ */ 2869 #define SCT_CTRL_DOWN_L_MASK (0x1U) 2870 #define SCT_CTRL_DOWN_L_SHIFT (0U) 2871 /*! DOWN_L - This bit is 1 when the L or unified counter is counting down. Hardware sets this bit 2872 * when the counter is counting up, counter limit occurs, and BIDIR = 1.Hardware clears this bit 2873 * when the counter is counting down and a limit condition occurs or when the counter reaches 0. 2874 */ 2875 #define SCT_CTRL_DOWN_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_DOWN_L_SHIFT)) & SCT_CTRL_DOWN_L_MASK) 2876 #define SCT_CTRL_STOP_L_MASK (0x2U) 2877 #define SCT_CTRL_STOP_L_SHIFT (1U) 2878 /*! STOP_L - When this bit is 1 and HALT is 0, the L or unified counter does not run, but I/O events 2879 * related to the counter can occur. If a designated start event occurs, this bit is cleared and 2880 * counting resumes. 2881 */ 2882 #define SCT_CTRL_STOP_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_STOP_L_SHIFT)) & SCT_CTRL_STOP_L_MASK) 2883 #define SCT_CTRL_HALT_L_MASK (0x4U) 2884 #define SCT_CTRL_HALT_L_SHIFT (2U) 2885 /*! HALT_L - When this bit is 1, the L or unified counter does not run and no events can occur. A 2886 * reset sets this bit. When the HALT_L bit is one, the STOP_L bit is cleared. It is possible to 2887 * remove the halt condition while keeping the SCT in the stop condition (not running) with a 2888 * single write to this register to simultaneously clear the HALT bit and set the STOP bit. Once set, 2889 * only software can clear this bit to restore counter operation. This bit is set on reset. 2890 */ 2891 #define SCT_CTRL_HALT_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_HALT_L_SHIFT)) & SCT_CTRL_HALT_L_MASK) 2892 #define SCT_CTRL_CLRCTR_L_MASK (0x8U) 2893 #define SCT_CTRL_CLRCTR_L_SHIFT (3U) 2894 /*! CLRCTR_L - Writing a 1 to this bit clears the L or unified counter. This bit always reads as 0. 2895 */ 2896 #define SCT_CTRL_CLRCTR_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_CLRCTR_L_SHIFT)) & SCT_CTRL_CLRCTR_L_MASK) 2897 #define SCT_CTRL_BIDIR_L_MASK (0x10U) 2898 #define SCT_CTRL_BIDIR_L_SHIFT (4U) 2899 /*! BIDIR_L - L or unified counter direction select 2900 * 0b0..Up. The counter counts up to a limit condition, then is cleared to zero. 2901 * 0b1..Up-down. The counter counts up to a limit, then counts down to a limit condition or to 0. 2902 */ 2903 #define SCT_CTRL_BIDIR_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_BIDIR_L_SHIFT)) & SCT_CTRL_BIDIR_L_MASK) 2904 #define SCT_CTRL_PRE_L_MASK (0x1FE0U) 2905 #define SCT_CTRL_PRE_L_SHIFT (5U) 2906 /*! PRE_L - Specifies the factor by which the SCT clock is prescaled to produce the L or unified 2907 * counter clock. The counter clock is clocked at the rate of the SCT clock divided by PRE_L+1. 2908 * Clear the counter (by writing a 1 to the CLRCTR bit) whenever changing the PRE value. 2909 */ 2910 #define SCT_CTRL_PRE_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_PRE_L_SHIFT)) & SCT_CTRL_PRE_L_MASK) 2911 #define SCT_CTRL_DOWN_H_MASK (0x10000U) 2912 #define SCT_CTRL_DOWN_H_SHIFT (16U) 2913 /*! DOWN_H - This bit is 1 when the H counter is counting down. Hardware sets this bit when the 2914 * counter is counting, a counter limit condition occurs, and BIDIR is 1. Hardware clears this bit 2915 * when the counter is counting down and a limit condition occurs or when the counter reaches 0. 2916 */ 2917 #define SCT_CTRL_DOWN_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_DOWN_H_SHIFT)) & SCT_CTRL_DOWN_H_MASK) 2918 #define SCT_CTRL_STOP_H_MASK (0x20000U) 2919 #define SCT_CTRL_STOP_H_SHIFT (17U) 2920 /*! STOP_H - When this bit is 1 and HALT is 0, the H counter does not, run but I/O events related to 2921 * the counter can occur. If such an event matches the mask in the Start register, this bit is 2922 * cleared and counting resumes. 2923 */ 2924 #define SCT_CTRL_STOP_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_STOP_H_SHIFT)) & SCT_CTRL_STOP_H_MASK) 2925 #define SCT_CTRL_HALT_H_MASK (0x40000U) 2926 #define SCT_CTRL_HALT_H_SHIFT (18U) 2927 /*! HALT_H - When this bit is 1, the H counter does not run and no events can occur. A reset sets 2928 * this bit. When the HALT_H bit is one, the STOP_H bit is cleared. It is possible to remove the 2929 * halt condition while keeping the SCT in the stop condition (not running) with a single write to 2930 * this register to simultaneously clear the HALT bit and set the STOP bit. Once set, this bit 2931 * can only be cleared by software to restore counter operation. This bit is set on reset. 2932 */ 2933 #define SCT_CTRL_HALT_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_HALT_H_SHIFT)) & SCT_CTRL_HALT_H_MASK) 2934 #define SCT_CTRL_CLRCTR_H_MASK (0x80000U) 2935 #define SCT_CTRL_CLRCTR_H_SHIFT (19U) 2936 /*! CLRCTR_H - Writing a 1 to this bit clears the H counter. This bit always reads as 0. 2937 */ 2938 #define SCT_CTRL_CLRCTR_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_CLRCTR_H_SHIFT)) & SCT_CTRL_CLRCTR_H_MASK) 2939 #define SCT_CTRL_BIDIR_H_MASK (0x100000U) 2940 #define SCT_CTRL_BIDIR_H_SHIFT (20U) 2941 /*! BIDIR_H - Direction select 2942 * 0b0..The H counter counts up to its limit condition, then is cleared to zero. 2943 * 0b1..The H counter counts up to its limit, then counts down to a limit condition or to 0. 2944 */ 2945 #define SCT_CTRL_BIDIR_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_BIDIR_H_SHIFT)) & SCT_CTRL_BIDIR_H_MASK) 2946 #define SCT_CTRL_PRE_H_MASK (0x1FE00000U) 2947 #define SCT_CTRL_PRE_H_SHIFT (21U) 2948 /*! PRE_H - Specifies the factor by which the SCT clock is prescaled to produce the H counter clock. 2949 * The counter clock is clocked at the rate of the SCT clock divided by PRELH+1. Clear the 2950 * counter (by writing a 1 to the CLRCTR bit) whenever changing the PRE value. 2951 */ 2952 #define SCT_CTRL_PRE_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_CTRL_PRE_H_SHIFT)) & SCT_CTRL_PRE_H_MASK) 2953 /*! @} */ 2954 2955 /*! @name LIMITL - SCT_LIMITL register */ 2956 /*! @{ */ 2957 #define SCT_LIMITL_LIMITL_MASK (0xFFFFU) 2958 #define SCT_LIMITL_LIMITL_SHIFT (0U) 2959 #define SCT_LIMITL_LIMITL(x) (((uint16_t)(((uint16_t)(x)) << SCT_LIMITL_LIMITL_SHIFT)) & SCT_LIMITL_LIMITL_MASK) 2960 /*! @} */ 2961 2962 /*! @name LIMITH - SCT_LIMITH register */ 2963 /*! @{ */ 2964 #define SCT_LIMITH_LIMITH_MASK (0xFFFFU) 2965 #define SCT_LIMITH_LIMITH_SHIFT (0U) 2966 #define SCT_LIMITH_LIMITH(x) (((uint16_t)(((uint16_t)(x)) << SCT_LIMITH_LIMITH_SHIFT)) & SCT_LIMITH_LIMITH_MASK) 2967 /*! @} */ 2968 2969 /*! @name LIMIT - SCT limit event select register */ 2970 /*! @{ */ 2971 #define SCT_LIMIT_LIMMSK_L_MASK (0x3FU) 2972 #define SCT_LIMIT_LIMMSK_L_SHIFT (0U) 2973 /*! LIMMSK_L - If bit n is one, event n is used as a counter limit for the L or unified counter 2974 * (event 0 = bit 0, event 1 = bit 1, etc.). The number of bits = number of events in this SCT. 2975 */ 2976 #define SCT_LIMIT_LIMMSK_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_LIMIT_LIMMSK_L_SHIFT)) & SCT_LIMIT_LIMMSK_L_MASK) 2977 #define SCT_LIMIT_LIMMSK_H_MASK (0x3F0000U) 2978 #define SCT_LIMIT_LIMMSK_H_SHIFT (16U) 2979 /*! LIMMSK_H - If bit n is one, event n is used as a counter limit for the H counter (event 0 = bit 2980 * 16, event 1 = bit 17, etc.). The number of bits = number of events in this SCT. 2981 */ 2982 #define SCT_LIMIT_LIMMSK_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_LIMIT_LIMMSK_H_SHIFT)) & SCT_LIMIT_LIMMSK_H_MASK) 2983 /*! @} */ 2984 2985 /*! @name HALTL - SCT_HALTL register */ 2986 /*! @{ */ 2987 #define SCT_HALTL_HALTL_MASK (0xFFFFU) 2988 #define SCT_HALTL_HALTL_SHIFT (0U) 2989 #define SCT_HALTL_HALTL(x) (((uint16_t)(((uint16_t)(x)) << SCT_HALTL_HALTL_SHIFT)) & SCT_HALTL_HALTL_MASK) 2990 /*! @} */ 2991 2992 /*! @name HALTH - SCT_HALTH register */ 2993 /*! @{ */ 2994 #define SCT_HALTH_HALTH_MASK (0xFFFFU) 2995 #define SCT_HALTH_HALTH_SHIFT (0U) 2996 #define SCT_HALTH_HALTH(x) (((uint16_t)(((uint16_t)(x)) << SCT_HALTH_HALTH_SHIFT)) & SCT_HALTH_HALTH_MASK) 2997 /*! @} */ 2998 2999 /*! @name HALT - SCT halt event select register */ 3000 /*! @{ */ 3001 #define SCT_HALT_HALTMSK_L_MASK (0x3FU) 3002 #define SCT_HALT_HALTMSK_L_SHIFT (0U) 3003 /*! HALTMSK_L - If bit n is one, event n sets the HALT_L bit in the CTRL register (event 0 = bit 0, 3004 * event 1 = bit 1, etc.). The number of bits = number of events in this SCT. 3005 */ 3006 #define SCT_HALT_HALTMSK_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_HALT_HALTMSK_L_SHIFT)) & SCT_HALT_HALTMSK_L_MASK) 3007 #define SCT_HALT_HALTMSK_H_MASK (0x3F0000U) 3008 #define SCT_HALT_HALTMSK_H_SHIFT (16U) 3009 /*! HALTMSK_H - If bit n is one, event n sets the HALT_H bit in the CTRL register (event 0 = bit 16, 3010 * event 1 = bit 17, etc.). The number of bits = number of events in this SCT. 3011 */ 3012 #define SCT_HALT_HALTMSK_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_HALT_HALTMSK_H_SHIFT)) & SCT_HALT_HALTMSK_H_MASK) 3013 /*! @} */ 3014 3015 /*! @name STOPL - SCT_STOPL register */ 3016 /*! @{ */ 3017 #define SCT_STOPL_STOPL_MASK (0xFFFFU) 3018 #define SCT_STOPL_STOPL_SHIFT (0U) 3019 #define SCT_STOPL_STOPL(x) (((uint16_t)(((uint16_t)(x)) << SCT_STOPL_STOPL_SHIFT)) & SCT_STOPL_STOPL_MASK) 3020 /*! @} */ 3021 3022 /*! @name STOPH - SCT_STOPH register */ 3023 /*! @{ */ 3024 #define SCT_STOPH_STOPH_MASK (0xFFFFU) 3025 #define SCT_STOPH_STOPH_SHIFT (0U) 3026 #define SCT_STOPH_STOPH(x) (((uint16_t)(((uint16_t)(x)) << SCT_STOPH_STOPH_SHIFT)) & SCT_STOPH_STOPH_MASK) 3027 /*! @} */ 3028 3029 /*! @name STOP - SCT stop event select register */ 3030 /*! @{ */ 3031 #define SCT_STOP_STOPMSK_L_MASK (0x3FU) 3032 #define SCT_STOP_STOPMSK_L_SHIFT (0U) 3033 /*! STOPMSK_L - If bit n is one, event n sets the STOP_L bit in the CTRL register (event 0 = bit 0, 3034 * event 1 = bit 1, etc.). The number of bits = number of events in this SCT. 3035 */ 3036 #define SCT_STOP_STOPMSK_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_STOP_STOPMSK_L_SHIFT)) & SCT_STOP_STOPMSK_L_MASK) 3037 #define SCT_STOP_STOPMSK_H_MASK (0x3F0000U) 3038 #define SCT_STOP_STOPMSK_H_SHIFT (16U) 3039 /*! STOPMSK_H - If bit n is one, event n sets the STOP_H bit in the CTRL register (event 0 = bit 16, 3040 * event 1 = bit 17, etc.). The number of bits = number of events in this SCT. 3041 */ 3042 #define SCT_STOP_STOPMSK_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_STOP_STOPMSK_H_SHIFT)) & SCT_STOP_STOPMSK_H_MASK) 3043 /*! @} */ 3044 3045 /*! @name STARTL - SCT_STARTL register */ 3046 /*! @{ */ 3047 #define SCT_STARTL_STARTL_MASK (0xFFFFU) 3048 #define SCT_STARTL_STARTL_SHIFT (0U) 3049 #define SCT_STARTL_STARTL(x) (((uint16_t)(((uint16_t)(x)) << SCT_STARTL_STARTL_SHIFT)) & SCT_STARTL_STARTL_MASK) 3050 /*! @} */ 3051 3052 /*! @name STARTH - SCT_STARTH register */ 3053 /*! @{ */ 3054 #define SCT_STARTH_STARTH_MASK (0xFFFFU) 3055 #define SCT_STARTH_STARTH_SHIFT (0U) 3056 #define SCT_STARTH_STARTH(x) (((uint16_t)(((uint16_t)(x)) << SCT_STARTH_STARTH_SHIFT)) & SCT_STARTH_STARTH_MASK) 3057 /*! @} */ 3058 3059 /*! @name START - SCT start event select register */ 3060 /*! @{ */ 3061 #define SCT_START_STARTMSK_L_MASK (0x3FU) 3062 #define SCT_START_STARTMSK_L_SHIFT (0U) 3063 /*! STARTMSK_L - If bit n is one, event n clears the STOP_L bit in the CTRL register (event 0 = bit 3064 * 0, event 1 = bit 1, etc.). The number of bits = number of events in this SCT. 3065 */ 3066 #define SCT_START_STARTMSK_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_START_STARTMSK_L_SHIFT)) & SCT_START_STARTMSK_L_MASK) 3067 #define SCT_START_STARTMSK_H_MASK (0x3F0000U) 3068 #define SCT_START_STARTMSK_H_SHIFT (16U) 3069 /*! STARTMSK_H - If bit n is one, event n clears the STOP_H bit in the CTRL register (event 0 = bit 3070 * 16, event 1 = bit 17, etc.). The number of bits = number of events in this SCT. 3071 */ 3072 #define SCT_START_STARTMSK_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_START_STARTMSK_H_SHIFT)) & SCT_START_STARTMSK_H_MASK) 3073 /*! @} */ 3074 3075 /*! @name COUNTL - SCT_COUNTL register */ 3076 /*! @{ */ 3077 #define SCT_COUNTL_COUNTL_MASK (0xFFFFU) 3078 #define SCT_COUNTL_COUNTL_SHIFT (0U) 3079 #define SCT_COUNTL_COUNTL(x) (((uint16_t)(((uint16_t)(x)) << SCT_COUNTL_COUNTL_SHIFT)) & SCT_COUNTL_COUNTL_MASK) 3080 /*! @} */ 3081 3082 /*! @name COUNTH - SCT_COUNTH register */ 3083 /*! @{ */ 3084 #define SCT_COUNTH_COUNTH_MASK (0xFFFFU) 3085 #define SCT_COUNTH_COUNTH_SHIFT (0U) 3086 #define SCT_COUNTH_COUNTH(x) (((uint16_t)(((uint16_t)(x)) << SCT_COUNTH_COUNTH_SHIFT)) & SCT_COUNTH_COUNTH_MASK) 3087 /*! @} */ 3088 3089 /*! @name COUNT - SCT counter register */ 3090 /*! @{ */ 3091 #define SCT_COUNT_CTR_L_MASK (0xFFFFU) 3092 #define SCT_COUNT_CTR_L_SHIFT (0U) 3093 /*! CTR_L - When UNIFY = 0, read or write the 16-bit L counter value. When UNIFY = 1, read or write 3094 * the lower 16 bits of the 32-bit unified counter. 3095 */ 3096 #define SCT_COUNT_CTR_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_COUNT_CTR_L_SHIFT)) & SCT_COUNT_CTR_L_MASK) 3097 #define SCT_COUNT_CTR_H_MASK (0xFFFF0000U) 3098 #define SCT_COUNT_CTR_H_SHIFT (16U) 3099 /*! CTR_H - When UNIFY = 0, read or write the 16-bit H counter value. When UNIFY = 1, read or write 3100 * the upper 16 bits of the 32-bit unified counter. 3101 */ 3102 #define SCT_COUNT_CTR_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_COUNT_CTR_H_SHIFT)) & SCT_COUNT_CTR_H_MASK) 3103 /*! @} */ 3104 3105 /*! @name STATEL - SCT_STATEL register */ 3106 /*! @{ */ 3107 #define SCT_STATEL_STATEL_MASK (0xFFFFU) 3108 #define SCT_STATEL_STATEL_SHIFT (0U) 3109 #define SCT_STATEL_STATEL(x) (((uint16_t)(((uint16_t)(x)) << SCT_STATEL_STATEL_SHIFT)) & SCT_STATEL_STATEL_MASK) 3110 /*! @} */ 3111 3112 /*! @name STATEH - SCT_STATEH register */ 3113 /*! @{ */ 3114 #define SCT_STATEH_STATEH_MASK (0xFFFFU) 3115 #define SCT_STATEH_STATEH_SHIFT (0U) 3116 #define SCT_STATEH_STATEH(x) (((uint16_t)(((uint16_t)(x)) << SCT_STATEH_STATEH_SHIFT)) & SCT_STATEH_STATEH_MASK) 3117 /*! @} */ 3118 3119 /*! @name STATE - SCT state register */ 3120 /*! @{ */ 3121 #define SCT_STATE_STATE_L_MASK (0x1FU) 3122 #define SCT_STATE_STATE_L_SHIFT (0U) 3123 /*! STATE_L - State variable. 3124 */ 3125 #define SCT_STATE_STATE_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_STATE_STATE_L_SHIFT)) & SCT_STATE_STATE_L_MASK) 3126 #define SCT_STATE_STATE_H_MASK (0x1F0000U) 3127 #define SCT_STATE_STATE_H_SHIFT (16U) 3128 /*! STATE_H - State variable. 3129 */ 3130 #define SCT_STATE_STATE_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_STATE_STATE_H_SHIFT)) & SCT_STATE_STATE_H_MASK) 3131 /*! @} */ 3132 3133 /*! @name INPUT - SCT input register */ 3134 /*! @{ */ 3135 #define SCT_INPUT_AIN0_MASK (0x1U) 3136 #define SCT_INPUT_AIN0_SHIFT (0U) 3137 /*! AIN0 - Input 0 state. Input 0 state on the last SCT clock edge. 3138 */ 3139 #define SCT_INPUT_AIN0(x) (((uint32_t)(((uint32_t)(x)) << SCT_INPUT_AIN0_SHIFT)) & SCT_INPUT_AIN0_MASK) 3140 #define SCT_INPUT_AIN1_MASK (0x2U) 3141 #define SCT_INPUT_AIN1_SHIFT (1U) 3142 /*! AIN1 - Input 1 state. Input 1 state on the last SCT clock edge. 3143 */ 3144 #define SCT_INPUT_AIN1(x) (((uint32_t)(((uint32_t)(x)) << SCT_INPUT_AIN1_SHIFT)) & SCT_INPUT_AIN1_MASK) 3145 #define SCT_INPUT_AIN2_MASK (0x4U) 3146 #define SCT_INPUT_AIN2_SHIFT (2U) 3147 /*! AIN2 - Input 2 state. Input 2 state on the last SCT clock edge. 3148 */ 3149 #define SCT_INPUT_AIN2(x) (((uint32_t)(((uint32_t)(x)) << SCT_INPUT_AIN2_SHIFT)) & SCT_INPUT_AIN2_MASK) 3150 #define SCT_INPUT_AIN3_MASK (0x8U) 3151 #define SCT_INPUT_AIN3_SHIFT (3U) 3152 /*! AIN3 - Input 3 state. Input 3 state on the last SCT clock edge. 3153 */ 3154 #define SCT_INPUT_AIN3(x) (((uint32_t)(((uint32_t)(x)) << SCT_INPUT_AIN3_SHIFT)) & SCT_INPUT_AIN3_MASK) 3155 #define SCT_INPUT_SIN0_MASK (0x10000U) 3156 #define SCT_INPUT_SIN0_SHIFT (16U) 3157 /*! SIN0 - Input 0 state. Input 0 state following the synchronization specified by INSYNC. 3158 */ 3159 #define SCT_INPUT_SIN0(x) (((uint32_t)(((uint32_t)(x)) << SCT_INPUT_SIN0_SHIFT)) & SCT_INPUT_SIN0_MASK) 3160 #define SCT_INPUT_SIN1_MASK (0x20000U) 3161 #define SCT_INPUT_SIN1_SHIFT (17U) 3162 /*! SIN1 - Input 1 state. Input 1 state following the synchronization specified by INSYNC. 3163 */ 3164 #define SCT_INPUT_SIN1(x) (((uint32_t)(((uint32_t)(x)) << SCT_INPUT_SIN1_SHIFT)) & SCT_INPUT_SIN1_MASK) 3165 #define SCT_INPUT_SIN2_MASK (0x40000U) 3166 #define SCT_INPUT_SIN2_SHIFT (18U) 3167 /*! SIN2 - Input 2 state. Input 2 state following the synchronization specified by INSYNC. 3168 */ 3169 #define SCT_INPUT_SIN2(x) (((uint32_t)(((uint32_t)(x)) << SCT_INPUT_SIN2_SHIFT)) & SCT_INPUT_SIN2_MASK) 3170 #define SCT_INPUT_SIN3_MASK (0x80000U) 3171 #define SCT_INPUT_SIN3_SHIFT (19U) 3172 /*! SIN3 - Input 3 state. Input 3 state following the synchronization specified by INSYNC. 3173 */ 3174 #define SCT_INPUT_SIN3(x) (((uint32_t)(((uint32_t)(x)) << SCT_INPUT_SIN3_SHIFT)) & SCT_INPUT_SIN3_MASK) 3175 /*! @} */ 3176 3177 /*! @name REGMODEL - SCT_REGMODEL register */ 3178 /*! @{ */ 3179 #define SCT_REGMODEL_REGMODEL_MASK (0xFFFFU) 3180 #define SCT_REGMODEL_REGMODEL_SHIFT (0U) 3181 #define SCT_REGMODEL_REGMODEL(x) (((uint16_t)(((uint16_t)(x)) << SCT_REGMODEL_REGMODEL_SHIFT)) & SCT_REGMODEL_REGMODEL_MASK) 3182 /*! @} */ 3183 3184 /*! @name REGMODEH - SCT_REGMODEH register */ 3185 /*! @{ */ 3186 #define SCT_REGMODEH_REGMODEH_MASK (0xFFFFU) 3187 #define SCT_REGMODEH_REGMODEH_SHIFT (0U) 3188 #define SCT_REGMODEH_REGMODEH(x) (((uint16_t)(((uint16_t)(x)) << SCT_REGMODEH_REGMODEH_SHIFT)) & SCT_REGMODEH_REGMODEH_MASK) 3189 /*! @} */ 3190 3191 /*! @name REGMODE - SCT match/capture mode register */ 3192 /*! @{ */ 3193 #define SCT_REGMODE_REGMOD_L_MASK (0x1FU) 3194 #define SCT_REGMODE_REGMOD_L_SHIFT (0U) 3195 /*! REGMOD_L - Each bit controls one match/capture register (register 0 = bit 0, register 1 = bit 1, 3196 * etc.). The number of bits = number of match/captures in this SCT. 0 = register operates as 3197 * match register. 1 = register operates as capture register. 3198 */ 3199 #define SCT_REGMODE_REGMOD_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_REGMODE_REGMOD_L_SHIFT)) & SCT_REGMODE_REGMOD_L_MASK) 3200 #define SCT_REGMODE_REGMOD_H_MASK (0x1F0000U) 3201 #define SCT_REGMODE_REGMOD_H_SHIFT (16U) 3202 /*! REGMOD_H - Each bit controls one match/capture register (register 0 = bit 16, register 1 = bit 3203 * 17, etc.). The number of bits = number of match/captures in this SCT. 0 = register operates as 3204 * match registers. 1 = register operates as capture registers. 3205 */ 3206 #define SCT_REGMODE_REGMOD_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_REGMODE_REGMOD_H_SHIFT)) & SCT_REGMODE_REGMOD_H_MASK) 3207 /*! @} */ 3208 3209 /*! @name OUTPUT - SCT output register */ 3210 /*! @{ */ 3211 #define SCT_OUTPUT_OUT_MASK (0xFU) 3212 #define SCT_OUTPUT_OUT_SHIFT (0U) 3213 /*! OUT - Writing a 1 to bit n forces the corresponding output HIGH. Writing a 0 forces the 3214 * corresponding output LOW (output 0 = bit 0, output 1 = bit 1, etc.). The number of bits = number of 3215 * outputs in this SCT. 3216 */ 3217 #define SCT_OUTPUT_OUT(x) (((uint32_t)(((uint32_t)(x)) << SCT_OUTPUT_OUT_SHIFT)) & SCT_OUTPUT_OUT_MASK) 3218 /*! @} */ 3219 3220 /*! @name OUTPUTDIRCTRL - SCT output counter direction control register */ 3221 /*! @{ */ 3222 #define SCT_OUTPUTDIRCTRL_SETCLR0_MASK (0x3U) 3223 #define SCT_OUTPUTDIRCTRL_SETCLR0_SHIFT (0U) 3224 /*! SETCLR0 - Set/clear operation on output 0. Value 0x3 is reserved. Do not program this value. 3225 * 0b00..Set and clear do not depend on the direction of any counter. 3226 * 0b01..Set and clear are reversed when counter L or the unified counter is counting down. 3227 * 0b10..Set and clear are reversed when counter H is counting down. Do not use if UNIFY = 1. 3228 */ 3229 #define SCT_OUTPUTDIRCTRL_SETCLR0(x) (((uint32_t)(((uint32_t)(x)) << SCT_OUTPUTDIRCTRL_SETCLR0_SHIFT)) & SCT_OUTPUTDIRCTRL_SETCLR0_MASK) 3230 #define SCT_OUTPUTDIRCTRL_SETCLR1_MASK (0xCU) 3231 #define SCT_OUTPUTDIRCTRL_SETCLR1_SHIFT (2U) 3232 /*! SETCLR1 - Set/clear operation on output 1. Value 0x3 is reserved. Do not program this value. 3233 * 0b00..Set and clear do not depend on the direction of any counter. 3234 * 0b01..Set and clear are reversed when counter L or the unified counter is counting down. 3235 * 0b10..Set and clear are reversed when counter H is counting down. Do not use if UNIFY = 1. 3236 */ 3237 #define SCT_OUTPUTDIRCTRL_SETCLR1(x) (((uint32_t)(((uint32_t)(x)) << SCT_OUTPUTDIRCTRL_SETCLR1_SHIFT)) & SCT_OUTPUTDIRCTRL_SETCLR1_MASK) 3238 #define SCT_OUTPUTDIRCTRL_SETCLR2_MASK (0x30U) 3239 #define SCT_OUTPUTDIRCTRL_SETCLR2_SHIFT (4U) 3240 /*! SETCLR2 - Set/clear operation on output 2. Value 0x3 is reserved. Do not program this value. 3241 * 0b00..Set and clear do not depend on the direction of any counter. 3242 * 0b01..Set and clear are reversed when counter L or the unified counter is counting down. 3243 * 0b10..Set and clear are reversed when counter H is counting down. Do not use if UNIFY = 1. 3244 */ 3245 #define SCT_OUTPUTDIRCTRL_SETCLR2(x) (((uint32_t)(((uint32_t)(x)) << SCT_OUTPUTDIRCTRL_SETCLR2_SHIFT)) & SCT_OUTPUTDIRCTRL_SETCLR2_MASK) 3246 #define SCT_OUTPUTDIRCTRL_SETCLR3_MASK (0xC0U) 3247 #define SCT_OUTPUTDIRCTRL_SETCLR3_SHIFT (6U) 3248 /*! SETCLR3 - Set/clear operation on output 3. Value 0x3 is reserved. Do not program this value. 3249 * 0b00..Set and clear do not depend on the direction of any counter. 3250 * 0b01..Set and clear are reversed when counter L or the unified counter is counting down. 3251 * 0b10..Set and clear are reversed when counter H is counting down. Do not use if UNIFY = 1. 3252 */ 3253 #define SCT_OUTPUTDIRCTRL_SETCLR3(x) (((uint32_t)(((uint32_t)(x)) << SCT_OUTPUTDIRCTRL_SETCLR3_SHIFT)) & SCT_OUTPUTDIRCTRL_SETCLR3_MASK) 3254 /*! @} */ 3255 3256 /*! @name RES - SCT conflict resolution register */ 3257 /*! @{ */ 3258 #define SCT_RES_O0RES_MASK (0x3U) 3259 #define SCT_RES_O0RES_SHIFT (0U) 3260 /*! O0RES - Effect of simultaneous set and clear on output 0. 3261 * 0b00..No change. 3262 * 0b01..Set output (or clear based on the SETCLR0 field in the OUTPUTDIRCTRL register). 3263 * 0b10..Clear output (or set based on the SETCLR0 field). 3264 * 0b11..Toggle output. 3265 */ 3266 #define SCT_RES_O0RES(x) (((uint32_t)(((uint32_t)(x)) << SCT_RES_O0RES_SHIFT)) & SCT_RES_O0RES_MASK) 3267 #define SCT_RES_O1RES_MASK (0xCU) 3268 #define SCT_RES_O1RES_SHIFT (2U) 3269 /*! O1RES - Effect of simultaneous set and clear on output 1. 3270 * 0b00..No change. 3271 * 0b01..Set output (or clear based on the SETCLR1 field in the OUTPUTDIRCTRL register). 3272 * 0b10..Clear output (or set based on the SETCLR1 field). 3273 * 0b11..Toggle output. 3274 */ 3275 #define SCT_RES_O1RES(x) (((uint32_t)(((uint32_t)(x)) << SCT_RES_O1RES_SHIFT)) & SCT_RES_O1RES_MASK) 3276 #define SCT_RES_O2RES_MASK (0x30U) 3277 #define SCT_RES_O2RES_SHIFT (4U) 3278 /*! O2RES - Effect of simultaneous set and clear on output 2. 3279 * 0b00..No change. 3280 * 0b01..Set output (or clear based on the SETCLR2 field in the OUTPUTDIRCTRL register). 3281 * 0b10..Clear output n (or set based on the SETCLR2 field). 3282 * 0b11..Toggle output. 3283 */ 3284 #define SCT_RES_O2RES(x) (((uint32_t)(((uint32_t)(x)) << SCT_RES_O2RES_SHIFT)) & SCT_RES_O2RES_MASK) 3285 #define SCT_RES_O3RES_MASK (0xC0U) 3286 #define SCT_RES_O3RES_SHIFT (6U) 3287 /*! O3RES - Effect of simultaneous set and clear on output 3. 3288 * 0b00..No change. 3289 * 0b01..Set output (or clear based on the SETCLR3 field in the OUTPUTDIRCTRL register). 3290 * 0b10..Clear output (or set based on the SETCLR3 field). 3291 * 0b11..Toggle output. 3292 */ 3293 #define SCT_RES_O3RES(x) (((uint32_t)(((uint32_t)(x)) << SCT_RES_O3RES_SHIFT)) & SCT_RES_O3RES_MASK) 3294 /*! @} */ 3295 3296 /*! @name EVEN - SCT event interrupt enable register */ 3297 /*! @{ */ 3298 #define SCT_EVEN_IEN_MASK (0x3FU) 3299 #define SCT_EVEN_IEN_SHIFT (0U) 3300 /*! IEN - The SCT requests an interrupt when bit n of this register and the event flag register are 3301 * both one (event 0 = bit 0, event 1 = bit 1, etc.). The number of bits = number of events in 3302 * this SCT. 3303 */ 3304 #define SCT_EVEN_IEN(x) (((uint32_t)(((uint32_t)(x)) << SCT_EVEN_IEN_SHIFT)) & SCT_EVEN_IEN_MASK) 3305 /*! @} */ 3306 3307 /*! @name EVFLAG - SCT event flag register */ 3308 /*! @{ */ 3309 #define SCT_EVFLAG_FLAG_MASK (0x3FU) 3310 #define SCT_EVFLAG_FLAG_SHIFT (0U) 3311 /*! FLAG - Bit n is one if event n has occurred since reset or a 1 was last written to this bit 3312 * (event 0 = bit 0, event 1 = bit 1, etc.). The number of bits = number of events in this SCT. 3313 */ 3314 #define SCT_EVFLAG_FLAG(x) (((uint32_t)(((uint32_t)(x)) << SCT_EVFLAG_FLAG_SHIFT)) & SCT_EVFLAG_FLAG_MASK) 3315 /*! @} */ 3316 3317 /*! @name CONEN - SCT conflict interrupt enable register */ 3318 /*! @{ */ 3319 #define SCT_CONEN_NCEN_MASK (0xFU) 3320 #define SCT_CONEN_NCEN_SHIFT (0U) 3321 /*! NCEN - The SCT requests an interrupt when bit n of this register and the SCT conflict flag 3322 * register are both one (output 0 = bit 0, output 1 = bit 1, etc.). The number of bits = number of 3323 * outputs in this SCT. 3324 */ 3325 #define SCT_CONEN_NCEN(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONEN_NCEN_SHIFT)) & SCT_CONEN_NCEN_MASK) 3326 /*! @} */ 3327 3328 /*! @name CONFLAG - SCT conflict flag register */ 3329 /*! @{ */ 3330 #define SCT_CONFLAG_NCFLAG_MASK (0xFU) 3331 #define SCT_CONFLAG_NCFLAG_SHIFT (0U) 3332 /*! NCFLAG - Bit n is one if a no-change conflict event occurred on output n since reset or a 1 was 3333 * last written to this bit (output 0 = bit 0, output 1 = bit 1, etc.). The number of bits = 3334 * number of outputs in this SCT. 3335 */ 3336 #define SCT_CONFLAG_NCFLAG(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFLAG_NCFLAG_SHIFT)) & SCT_CONFLAG_NCFLAG_MASK) 3337 #define SCT_CONFLAG_BUSERRL_MASK (0x40000000U) 3338 #define SCT_CONFLAG_BUSERRL_SHIFT (30U) 3339 /*! BUSERRL - The most recent bus error from this SCT involved writing CTR L/Unified, STATE 3340 * L/Unified, MATCH L/Unified, or the Output register when the L/U counter was not halted. A word write 3341 * to certain L and H registers can be half successful and half unsuccessful. 3342 */ 3343 #define SCT_CONFLAG_BUSERRL(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFLAG_BUSERRL_SHIFT)) & SCT_CONFLAG_BUSERRL_MASK) 3344 #define SCT_CONFLAG_BUSERRH_MASK (0x80000000U) 3345 #define SCT_CONFLAG_BUSERRH_SHIFT (31U) 3346 /*! BUSERRH - The most recent bus error from this SCT involved writing CTR H, STATE H, MATCH H, or 3347 * the Output register when the H counter was not halted. 3348 */ 3349 #define SCT_CONFLAG_BUSERRH(x) (((uint32_t)(((uint32_t)(x)) << SCT_CONFLAG_BUSERRH_SHIFT)) & SCT_CONFLAG_BUSERRH_MASK) 3350 /*! @} */ 3351 3352 /*! @name CAPL - SCT_CAPL register */ 3353 /*! @{ */ 3354 #define SCT_CAPL_CAPL_MASK (0xFFFFU) 3355 #define SCT_CAPL_CAPL_SHIFT (0U) 3356 #define SCT_CAPL_CAPL(x) (((uint16_t)(((uint16_t)(x)) << SCT_CAPL_CAPL_SHIFT)) & SCT_CAPL_CAPL_MASK) 3357 /*! @} */ 3358 3359 /* The count of SCT_CAPL */ 3360 #define SCT_CAPL_COUNT (5U) 3361 3362 /*! @name CAPH - SCT_CAPH register */ 3363 /*! @{ */ 3364 #define SCT_CAPH_CAPH_MASK (0xFFFFU) 3365 #define SCT_CAPH_CAPH_SHIFT (0U) 3366 #define SCT_CAPH_CAPH(x) (((uint16_t)(((uint16_t)(x)) << SCT_CAPH_CAPH_SHIFT)) & SCT_CAPH_CAPH_MASK) 3367 /*! @} */ 3368 3369 /* The count of SCT_CAPH */ 3370 #define SCT_CAPH_COUNT (5U) 3371 3372 /*! @name CAP - SCT capture register of capture channel */ 3373 /*! @{ */ 3374 #define SCT_CAP_CAPn_L_MASK (0xFFFFU) 3375 #define SCT_CAP_CAPn_L_SHIFT (0U) 3376 /*! CAPn_L - When UNIFY = 0, read the 16-bit counter value at which this register was last captured. 3377 * When UNIFY = 1, read the lower 16 bits of the 32-bit value at which this register was last 3378 * captured. 3379 */ 3380 #define SCT_CAP_CAPn_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_CAP_CAPn_L_SHIFT)) & SCT_CAP_CAPn_L_MASK) 3381 #define SCT_CAP_CAPn_H_MASK (0xFFFF0000U) 3382 #define SCT_CAP_CAPn_H_SHIFT (16U) 3383 /*! CAPn_H - When UNIFY = 0, read the 16-bit counter value at which this register was last captured. 3384 * When UNIFY = 1, read the upper 16 bits of the 32-bit value at which this register was last 3385 * captured. 3386 */ 3387 #define SCT_CAP_CAPn_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_CAP_CAPn_H_SHIFT)) & SCT_CAP_CAPn_H_MASK) 3388 /*! @} */ 3389 3390 /* The count of SCT_CAP */ 3391 #define SCT_CAP_COUNT (5U) 3392 3393 /*! @name MATCHL - SCT_MATCHL register */ 3394 /*! @{ */ 3395 #define SCT_MATCHL_MATCHL_MASK (0xFFFFU) 3396 #define SCT_MATCHL_MATCHL_SHIFT (0U) 3397 #define SCT_MATCHL_MATCHL(x) (((uint16_t)(((uint16_t)(x)) << SCT_MATCHL_MATCHL_SHIFT)) & SCT_MATCHL_MATCHL_MASK) 3398 /*! @} */ 3399 3400 /* The count of SCT_MATCHL */ 3401 #define SCT_MATCHL_COUNT (5U) 3402 3403 /*! @name MATCHH - SCT_MATCHH register */ 3404 /*! @{ */ 3405 #define SCT_MATCHH_MATCHH_MASK (0xFFFFU) 3406 #define SCT_MATCHH_MATCHH_SHIFT (0U) 3407 #define SCT_MATCHH_MATCHH(x) (((uint16_t)(((uint16_t)(x)) << SCT_MATCHH_MATCHH_SHIFT)) & SCT_MATCHH_MATCHH_MASK) 3408 /*! @} */ 3409 3410 /* The count of SCT_MATCHH */ 3411 #define SCT_MATCHH_COUNT (5U) 3412 3413 /*! @name MATCH - SCT match value register of match channels */ 3414 /*! @{ */ 3415 #define SCT_MATCH_MATCHn_L_MASK (0xFFFFU) 3416 #define SCT_MATCH_MATCHn_L_SHIFT (0U) 3417 /*! MATCHn_L - When UNIFY = 0, read or write the 16-bit value to be compared to the L counter. When 3418 * UNIFY = 1, read or write the lower 16 bits of the 32-bit value to be compared to the unified 3419 * counter. 3420 */ 3421 #define SCT_MATCH_MATCHn_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_MATCH_MATCHn_L_SHIFT)) & SCT_MATCH_MATCHn_L_MASK) 3422 #define SCT_MATCH_MATCHn_H_MASK (0xFFFF0000U) 3423 #define SCT_MATCH_MATCHn_H_SHIFT (16U) 3424 /*! MATCHn_H - When UNIFY = 0, read or write the 16-bit value to be compared to the H counter. When 3425 * UNIFY = 1, read or write the upper 16 bits of the 32-bit value to be compared to the unified 3426 * counter. 3427 */ 3428 #define SCT_MATCH_MATCHn_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_MATCH_MATCHn_H_SHIFT)) & SCT_MATCH_MATCHn_H_MASK) 3429 /*! @} */ 3430 3431 /* The count of SCT_MATCH */ 3432 #define SCT_MATCH_COUNT (5U) 3433 3434 /*! @name CAPCTRLL - SCT_CAPCTRLL register */ 3435 /*! @{ */ 3436 #define SCT_CAPCTRLL_CAPCTRLL_MASK (0xFFFFU) 3437 #define SCT_CAPCTRLL_CAPCTRLL_SHIFT (0U) 3438 #define SCT_CAPCTRLL_CAPCTRLL(x) (((uint16_t)(((uint16_t)(x)) << SCT_CAPCTRLL_CAPCTRLL_SHIFT)) & SCT_CAPCTRLL_CAPCTRLL_MASK) 3439 /*! @} */ 3440 3441 /* The count of SCT_CAPCTRLL */ 3442 #define SCT_CAPCTRLL_COUNT (5U) 3443 3444 /*! @name CAPCTRLH - SCT_CAPCTRLH register */ 3445 /*! @{ */ 3446 #define SCT_CAPCTRLH_CAPCTRLH_MASK (0xFFFFU) 3447 #define SCT_CAPCTRLH_CAPCTRLH_SHIFT (0U) 3448 #define SCT_CAPCTRLH_CAPCTRLH(x) (((uint16_t)(((uint16_t)(x)) << SCT_CAPCTRLH_CAPCTRLH_SHIFT)) & SCT_CAPCTRLH_CAPCTRLH_MASK) 3449 /*! @} */ 3450 3451 /* The count of SCT_CAPCTRLH */ 3452 #define SCT_CAPCTRLH_COUNT (5U) 3453 3454 /*! @name CAPCTRL - SCT capture control register */ 3455 /*! @{ */ 3456 #define SCT_CAPCTRL_CAPCONn_L_MASK (0xFFFFU) 3457 #define SCT_CAPCTRL_CAPCONn_L_SHIFT (0U) 3458 /*! CAPCONn_L - If bit m is one, event m causes the CAPn_L (UNIFY = 0) or the CAPn (UNIFY = 1) 3459 * register to be loaded (event 0 = bit 0, event 1 = bit 1, etc.). The number of bits = number of 3460 * match/captures in this SCT. 3461 */ 3462 #define SCT_CAPCTRL_CAPCONn_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_CAPCTRL_CAPCONn_L_SHIFT)) & SCT_CAPCTRL_CAPCONn_L_MASK) 3463 #define SCT_CAPCTRL_CAPCONn_H_MASK (0xFFFF0000U) 3464 #define SCT_CAPCTRL_CAPCONn_H_SHIFT (16U) 3465 /*! CAPCONn_H - If bit m is one, event m causes the CAPn_H (UNIFY = 0) register to be loaded (event 3466 * 0 = bit 16, event 1 = bit 17, etc.). The number of bits = number of match/captures in this SCT. 3467 */ 3468 #define SCT_CAPCTRL_CAPCONn_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_CAPCTRL_CAPCONn_H_SHIFT)) & SCT_CAPCTRL_CAPCONn_H_MASK) 3469 /*! @} */ 3470 3471 /* The count of SCT_CAPCTRL */ 3472 #define SCT_CAPCTRL_COUNT (5U) 3473 3474 /*! @name MATCHRELL - SCT_MATCHRELL register */ 3475 /*! @{ */ 3476 #define SCT_MATCHRELL_MATCHRELL_MASK (0xFFFFU) 3477 #define SCT_MATCHRELL_MATCHRELL_SHIFT (0U) 3478 #define SCT_MATCHRELL_MATCHRELL(x) (((uint16_t)(((uint16_t)(x)) << SCT_MATCHRELL_MATCHRELL_SHIFT)) & SCT_MATCHRELL_MATCHRELL_MASK) 3479 /*! @} */ 3480 3481 /* The count of SCT_MATCHRELL */ 3482 #define SCT_MATCHRELL_COUNT (5U) 3483 3484 /*! @name MATCHRELH - SCT_MATCHRELH register */ 3485 /*! @{ */ 3486 #define SCT_MATCHRELH_MATCHRELH_MASK (0xFFFFU) 3487 #define SCT_MATCHRELH_MATCHRELH_SHIFT (0U) 3488 #define SCT_MATCHRELH_MATCHRELH(x) (((uint16_t)(((uint16_t)(x)) << SCT_MATCHRELH_MATCHRELH_SHIFT)) & SCT_MATCHRELH_MATCHRELH_MASK) 3489 /*! @} */ 3490 3491 /* The count of SCT_MATCHRELH */ 3492 #define SCT_MATCHRELH_COUNT (5U) 3493 3494 /*! @name MATCHREL - SCT match reload value register */ 3495 /*! @{ */ 3496 #define SCT_MATCHREL_RELOADn_L_MASK (0xFFFFU) 3497 #define SCT_MATCHREL_RELOADn_L_SHIFT (0U) 3498 /*! RELOADn_L - When UNIFY = 0, specifies the 16-bit value to be loaded into the MATCHn_L register. 3499 * When UNIFY = 1, specifies the lower 16 bits of the 32-bit value to be loaded into the MATCHn 3500 * register. 3501 */ 3502 #define SCT_MATCHREL_RELOADn_L(x) (((uint32_t)(((uint32_t)(x)) << SCT_MATCHREL_RELOADn_L_SHIFT)) & SCT_MATCHREL_RELOADn_L_MASK) 3503 #define SCT_MATCHREL_RELOADn_H_MASK (0xFFFF0000U) 3504 #define SCT_MATCHREL_RELOADn_H_SHIFT (16U) 3505 /*! RELOADn_H - When UNIFY = 0, specifies the 16-bit to be loaded into the MATCHn_H register. When 3506 * UNIFY = 1, specifies the upper 16 bits of the 32-bit value to be loaded into the MATCHn 3507 * register. 3508 */ 3509 #define SCT_MATCHREL_RELOADn_H(x) (((uint32_t)(((uint32_t)(x)) << SCT_MATCHREL_RELOADn_H_SHIFT)) & SCT_MATCHREL_RELOADn_H_MASK) 3510 /*! @} */ 3511 3512 /* The count of SCT_MATCHREL */ 3513 #define SCT_MATCHREL_COUNT (5U) 3514 3515 /*! @name EV_STATE - SCT event state register 0 */ 3516 /*! @{ */ 3517 #define SCT_EV_STATE_STATEMSK0_MASK (0x1U) 3518 #define SCT_EV_STATE_STATEMSK0_SHIFT (0U) 3519 /*! STATEMSK0 - If bit m is one, event n happens in state m of the counter selected by the HEVENT 3520 * bit (n = event number, m = state number; state 0 = bit 0, state 1= bit 1, etc.). The number of 3521 * bits = number of states in this SCT. 3522 */ 3523 #define SCT_EV_STATE_STATEMSK0(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_STATE_STATEMSK0_SHIFT)) & SCT_EV_STATE_STATEMSK0_MASK) 3524 #define SCT_EV_STATE_STATEMSK1_MASK (0x2U) 3525 #define SCT_EV_STATE_STATEMSK1_SHIFT (1U) 3526 /*! STATEMSK1 - If bit m is one, event n happens in state m of the counter selected by the HEVENT 3527 * bit (n = event number, m = state number; state 0 = bit 0, state 1= bit 1, etc.). The number of 3528 * bits = number of states in this SCT. 3529 */ 3530 #define SCT_EV_STATE_STATEMSK1(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_STATE_STATEMSK1_SHIFT)) & SCT_EV_STATE_STATEMSK1_MASK) 3531 /*! @} */ 3532 3533 /* The count of SCT_EV_STATE */ 3534 #define SCT_EV_STATE_COUNT (6U) 3535 3536 /*! @name EV_CTRL - SCT event control register 0 */ 3537 /*! @{ */ 3538 #define SCT_EV_CTRL_MATCHSEL_MASK (0xFU) 3539 #define SCT_EV_CTRL_MATCHSEL_SHIFT (0U) 3540 /*! MATCHSEL - Selects the Match register associated with this event (if any). A match can occur 3541 * only when the counter selected by the HEVENT bit is running. 3542 */ 3543 #define SCT_EV_CTRL_MATCHSEL(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_CTRL_MATCHSEL_SHIFT)) & SCT_EV_CTRL_MATCHSEL_MASK) 3544 #define SCT_EV_CTRL_HEVENT_MASK (0x10U) 3545 #define SCT_EV_CTRL_HEVENT_SHIFT (4U) 3546 /*! HEVENT - Select L/H counter. Do not set this bit if UNIFY = 1. 3547 * 0b0..Selects the L state and the L match register selected by MATCHSEL. 3548 * 0b1..Selects the H state and the H match register selected by MATCHSEL. 3549 */ 3550 #define SCT_EV_CTRL_HEVENT(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_CTRL_HEVENT_SHIFT)) & SCT_EV_CTRL_HEVENT_MASK) 3551 #define SCT_EV_CTRL_OUTSEL_MASK (0x20U) 3552 #define SCT_EV_CTRL_OUTSEL_SHIFT (5U) 3553 /*! OUTSEL - Input/output select 3554 * 0b0..Selects the inputs selected by IOSEL. 3555 * 0b1..Selects the outputs selected by IOSEL. 3556 */ 3557 #define SCT_EV_CTRL_OUTSEL(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_CTRL_OUTSEL_SHIFT)) & SCT_EV_CTRL_OUTSEL_MASK) 3558 #define SCT_EV_CTRL_IOSEL_MASK (0x3C0U) 3559 #define SCT_EV_CTRL_IOSEL_SHIFT (6U) 3560 /*! IOSEL - Selects the input or output signal number associated with this event (if any). Do not 3561 * select an input in this register if CKMODE is 1x. In this case the clock input is an implicit 3562 * ingredient of every event. 3563 */ 3564 #define SCT_EV_CTRL_IOSEL(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_CTRL_IOSEL_SHIFT)) & SCT_EV_CTRL_IOSEL_MASK) 3565 #define SCT_EV_CTRL_IOCOND_MASK (0xC00U) 3566 #define SCT_EV_CTRL_IOCOND_SHIFT (10U) 3567 /*! IOCOND - Selects the I/O condition for event n. (The detection of edges on outputs lag the 3568 * conditions that switch the outputs by one SCT clock). In order to guarantee proper edge/state 3569 * detection, an input must have a minimum pulse width of at least one SCT clock period . 3570 * 0b00..LOW 3571 * 0b01..Rise 3572 * 0b10..Fall 3573 * 0b11..HIGH 3574 */ 3575 #define SCT_EV_CTRL_IOCOND(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_CTRL_IOCOND_SHIFT)) & SCT_EV_CTRL_IOCOND_MASK) 3576 #define SCT_EV_CTRL_COMBMODE_MASK (0x3000U) 3577 #define SCT_EV_CTRL_COMBMODE_SHIFT (12U) 3578 /*! COMBMODE - Selects how the specified match and I/O condition are used and combined. 3579 * 0b00..OR. The event occurs when either the specified match or I/O condition occurs. 3580 * 0b01..MATCH. Uses the specified match only. 3581 * 0b10..IO. Uses the specified I/O condition only. 3582 * 0b11..AND. The event occurs when the specified match and I/O condition occur simultaneously. 3583 */ 3584 #define SCT_EV_CTRL_COMBMODE(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_CTRL_COMBMODE_SHIFT)) & SCT_EV_CTRL_COMBMODE_MASK) 3585 #define SCT_EV_CTRL_STATELD_MASK (0x4000U) 3586 #define SCT_EV_CTRL_STATELD_SHIFT (14U) 3587 /*! STATELD - This bit controls how the STATEV value modifies the state selected by HEVENT when this 3588 * event is the highest-numbered event occurring for that state. 3589 * 0b0..STATEV value is added into STATE (the carry-out is ignored). 3590 * 0b1..STATEV value is loaded into STATE. 3591 */ 3592 #define SCT_EV_CTRL_STATELD(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_CTRL_STATELD_SHIFT)) & SCT_EV_CTRL_STATELD_MASK) 3593 #define SCT_EV_CTRL_STATEV_MASK (0xF8000U) 3594 #define SCT_EV_CTRL_STATEV_SHIFT (15U) 3595 /*! STATEV - This value is loaded into or added to the state selected by HEVENT, depending on 3596 * STATELD, when this event is the highest-numbered event occurring for that state. If STATELD and 3597 * STATEV are both zero, there is no change to the STATE value. 3598 */ 3599 #define SCT_EV_CTRL_STATEV(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_CTRL_STATEV_SHIFT)) & SCT_EV_CTRL_STATEV_MASK) 3600 #define SCT_EV_CTRL_MATCHMEM_MASK (0x100000U) 3601 #define SCT_EV_CTRL_MATCHMEM_SHIFT (20U) 3602 /*! MATCHMEM - If this bit is one and the COMBMODE field specifies a match component to the 3603 * triggering of this event, then a match is considered to be active whenever the counter value is 3604 * GREATER THAN OR EQUAL TO the value specified in the match register when counting up, LESS THEN OR 3605 * EQUAL TO the match value when counting down. If this bit is zero, a match is only be active 3606 * during the cycle when the counter is equal to the match value. 3607 */ 3608 #define SCT_EV_CTRL_MATCHMEM(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_CTRL_MATCHMEM_SHIFT)) & SCT_EV_CTRL_MATCHMEM_MASK) 3609 #define SCT_EV_CTRL_DIRECTION_MASK (0x600000U) 3610 #define SCT_EV_CTRL_DIRECTION_SHIFT (21U) 3611 /*! DIRECTION - Direction qualifier for event generation. This field only applies when the counters 3612 * are operating in BIDIR mode. If BIDIR = 0, the SCT ignores this field. Value 0x3 is reserved. 3613 * 0b00..Direction independent. This event is triggered regardless of the count direction. 3614 * 0b01..Counting up. This event is triggered only during up-counting when BIDIR = 1. 3615 * 0b10..Counting down. This event is triggered only during down-counting when BIDIR = 1. 3616 */ 3617 #define SCT_EV_CTRL_DIRECTION(x) (((uint32_t)(((uint32_t)(x)) << SCT_EV_CTRL_DIRECTION_SHIFT)) & SCT_EV_CTRL_DIRECTION_MASK) 3618 /*! @} */ 3619 3620 /* The count of SCT_EV_CTRL */ 3621 #define SCT_EV_CTRL_COUNT (6U) 3622 3623 /*! @name OUT_SET - SCT output 0 set register */ 3624 /*! @{ */ 3625 #define SCT_OUT_SET_SET_MASK (0x3FU) 3626 #define SCT_OUT_SET_SET_SHIFT (0U) 3627 /*! SET - A 1 in bit m selects event m to set output n (or clear it if SETCLRn = 0x1 or 0x2) output 3628 * 0 = bit 0, output 1 = bit 1, etc. The number of bits = number of events in this SCT. When the 3629 * counter is used in bi-directional mode, it is possible to reverse the action specified by the 3630 * output set and clear registers when counting down, See the OUTPUTCTRL register. 3631 */ 3632 #define SCT_OUT_SET_SET(x) (((uint32_t)(((uint32_t)(x)) << SCT_OUT_SET_SET_SHIFT)) & SCT_OUT_SET_SET_MASK) 3633 /*! @} */ 3634 3635 /* The count of SCT_OUT_SET */ 3636 #define SCT_OUT_SET_COUNT (4U) 3637 3638 /*! @name OUT_CLR - SCT output 0 clear register */ 3639 /*! @{ */ 3640 #define SCT_OUT_CLR_CLR_MASK (0x3FU) 3641 #define SCT_OUT_CLR_CLR_SHIFT (0U) 3642 /*! CLR - A 1 in bit m selects event m to clear output n (or set it if SETCLRn = 0x1 or 0x2) event 0 3643 * = bit 0, event 1 = bit 1, etc. The number of bits = number of events in this SCT. When the 3644 * counter is used in bi-directional mode, it is possible to reverse the action specified by the 3645 * output set and clear registers when counting down, See the OUTPUTCTRL register. 3646 */ 3647 #define SCT_OUT_CLR_CLR(x) (((uint32_t)(((uint32_t)(x)) << SCT_OUT_CLR_CLR_SHIFT)) & SCT_OUT_CLR_CLR_MASK) 3648 /*! @} */ 3649 3650 /* The count of SCT_OUT_CLR */ 3651 #define SCT_OUT_CLR_COUNT (4U) 3652 3653 3654 /*! 3655 * @} 3656 */ /* end of group SCT_Register_Masks */ 3657 3658 3659 /* SCT - Peripheral instance base addresses */ 3660 /** Peripheral SCT0 base address */ 3661 #define SCT0_BASE (0x50004000u) 3662 /** Peripheral SCT0 base pointer */ 3663 #define SCT0 ((SCT_Type *)SCT0_BASE) 3664 /** Array initializer of SCT peripheral base addresses */ 3665 #define SCT_BASE_ADDRS { SCT0_BASE } 3666 /** Array initializer of SCT peripheral base pointers */ 3667 #define SCT_BASE_PTRS { SCT0 } 3668 /** Interrupt vectors for the SCT peripheral type */ 3669 #define SCT_IRQS { SCT0_IRQn } 3670 3671 /*! 3672 * @} 3673 */ /* end of group SCT_Peripheral_Access_Layer */ 3674 3675 3676 /* ---------------------------------------------------------------------------- 3677 -- SPI Peripheral Access Layer 3678 ---------------------------------------------------------------------------- */ 3679 3680 /*! 3681 * @addtogroup SPI_Peripheral_Access_Layer SPI Peripheral Access Layer 3682 * @{ 3683 */ 3684 3685 /** SPI - Register Layout Typedef */ 3686 typedef struct { 3687 __IO uint32_t CFG; /**< SPI Configuration register, offset: 0x0 */ 3688 __IO uint32_t DLY; /**< SPI Delay register, offset: 0x4 */ 3689 __IO uint32_t STAT; /**< SPI Status. Some status flags can be cleared by writing a 1 to that bit position, offset: 0x8 */ 3690 __IO uint32_t INTENSET; /**< SPI Interrupt Enable read and Set. A complete value may be read from this register. Writing a 1 to any implemented bit position causes that bit to be set., offset: 0xC */ 3691 __O uint32_t INTENCLR; /**< SPI Interrupt Enable Clear. Writing a 1 to any implemented bit position causes the corresponding bit in INTENSET to be cleared., offset: 0x10 */ 3692 __I uint32_t RXDAT; /**< SPI Receive Data, offset: 0x14 */ 3693 __IO uint32_t TXDATCTL; /**< SPI Transmit Data with Control, offset: 0x18 */ 3694 __IO uint32_t TXDAT; /**< SPI Transmit Data., offset: 0x1C */ 3695 __IO uint32_t TXCTL; /**< SPI Transmit Control, offset: 0x20 */ 3696 __IO uint32_t DIV; /**< SPI clock Divider, offset: 0x24 */ 3697 __I uint32_t INTSTAT; /**< SPI Interrupt Status, offset: 0x28 */ 3698 } SPI_Type; 3699 3700 /* ---------------------------------------------------------------------------- 3701 -- SPI Register Masks 3702 ---------------------------------------------------------------------------- */ 3703 3704 /*! 3705 * @addtogroup SPI_Register_Masks SPI Register Masks 3706 * @{ 3707 */ 3708 3709 /*! @name CFG - SPI Configuration register */ 3710 /*! @{ */ 3711 #define SPI_CFG_ENABLE_MASK (0x1U) 3712 #define SPI_CFG_ENABLE_SHIFT (0U) 3713 /*! ENABLE - SPI enable. 3714 * 0b0..Disabled. The SPI is disabled and the internal state machine and counters are reset. 3715 * 0b1..Enabled. The SPI is enabled for operation. 3716 */ 3717 #define SPI_CFG_ENABLE(x) (((uint32_t)(((uint32_t)(x)) << SPI_CFG_ENABLE_SHIFT)) & SPI_CFG_ENABLE_MASK) 3718 #define SPI_CFG_MASTER_MASK (0x4U) 3719 #define SPI_CFG_MASTER_SHIFT (2U) 3720 /*! MASTER - Master mode select. 3721 * 0b0..Slave mode. The SPI will operate in slave mode. SCK, MOSI, and the SSEL signals are inputs, MISO is an output. 3722 * 0b1..Master mode. The SPI will operate in master mode. SCK, MOSI, and the SSEL signals are outputs, MISO is an input. 3723 */ 3724 #define SPI_CFG_MASTER(x) (((uint32_t)(((uint32_t)(x)) << SPI_CFG_MASTER_SHIFT)) & SPI_CFG_MASTER_MASK) 3725 #define SPI_CFG_LSBF_MASK (0x8U) 3726 #define SPI_CFG_LSBF_SHIFT (3U) 3727 /*! LSBF - LSB First mode enable. 3728 * 0b0..Standard. Data is transmitted and received in standard MSB first order. 3729 * 0b1..Reverse. Data is transmitted and received in reverse order (LSB first). 3730 */ 3731 #define SPI_CFG_LSBF(x) (((uint32_t)(((uint32_t)(x)) << SPI_CFG_LSBF_SHIFT)) & SPI_CFG_LSBF_MASK) 3732 #define SPI_CFG_CPHA_MASK (0x10U) 3733 #define SPI_CFG_CPHA_SHIFT (4U) 3734 /*! CPHA - Clock Phase select. 3735 * 0b0..Change. The SPI captures serial data on the first clock transition of the transfer (when the clock 3736 * changes away from the rest state). Data is changed on the following edge. 3737 * 0b1..Capture. The SPI changes serial data on the first clock transition of the transfer (when the clock 3738 * changes away from the rest state). Data is captured on the following edge. 3739 */ 3740 #define SPI_CFG_CPHA(x) (((uint32_t)(((uint32_t)(x)) << SPI_CFG_CPHA_SHIFT)) & SPI_CFG_CPHA_MASK) 3741 #define SPI_CFG_CPOL_MASK (0x20U) 3742 #define SPI_CFG_CPOL_SHIFT (5U) 3743 /*! CPOL - Clock Polarity select. 3744 * 0b0..Low. The rest state of the clock (between transfers) is low. 3745 * 0b1..High. The rest state of the clock (between transfers) is high. 3746 */ 3747 #define SPI_CFG_CPOL(x) (((uint32_t)(((uint32_t)(x)) << SPI_CFG_CPOL_SHIFT)) & SPI_CFG_CPOL_MASK) 3748 #define SPI_CFG_LOOP_MASK (0x80U) 3749 #define SPI_CFG_LOOP_SHIFT (7U) 3750 /*! LOOP - Loopback mode enable. Loopback mode applies only to Master mode, and connects transmit 3751 * and receive data connected together to allow simple software testing. 3752 * 0b0..Disabled. 3753 * 0b1..Enabled. 3754 */ 3755 #define SPI_CFG_LOOP(x) (((uint32_t)(((uint32_t)(x)) << SPI_CFG_LOOP_SHIFT)) & SPI_CFG_LOOP_MASK) 3756 #define SPI_CFG_SPOL0_MASK (0x100U) 3757 #define SPI_CFG_SPOL0_SHIFT (8U) 3758 /*! SPOL0 - SSEL0 Polarity select. 3759 * 0b0..Low. The SSEL0 pin is active low. 3760 * 0b1..High. The SSEL0 pin is active high. 3761 */ 3762 #define SPI_CFG_SPOL0(x) (((uint32_t)(((uint32_t)(x)) << SPI_CFG_SPOL0_SHIFT)) & SPI_CFG_SPOL0_MASK) 3763 /*! @} */ 3764 3765 /*! @name DLY - SPI Delay register */ 3766 /*! @{ */ 3767 #define SPI_DLY_PRE_DELAY_MASK (0xFU) 3768 #define SPI_DLY_PRE_DELAY_SHIFT (0U) 3769 /*! PRE_DELAY - Controls the amount of time between SSEL assertion and the beginning of a data 3770 * transfer. There is always one SPI clock time between SSEL assertion and the first clock edge. This 3771 * is not considered part of the pre-delay. 0x0 = No additional time is inserted. 0x1 = 1 SPI 3772 * clock time is inserted. 0x2 = 2 SPI clock times are inserted. 0xF = 15 SPI clock times are 3773 * inserted. 3774 */ 3775 #define SPI_DLY_PRE_DELAY(x) (((uint32_t)(((uint32_t)(x)) << SPI_DLY_PRE_DELAY_SHIFT)) & SPI_DLY_PRE_DELAY_MASK) 3776 #define SPI_DLY_POST_DELAY_MASK (0xF0U) 3777 #define SPI_DLY_POST_DELAY_SHIFT (4U) 3778 /*! POST_DELAY - Controls the amount of time between the end of a data transfer and SSEL 3779 * deassertion. 0x0 = No additional time is inserted. 0x1 = 1 SPI clock time is inserted. 0x2 = 2 SPI clock 3780 * times are inserted. 0xF = 15 SPI clock times are inserted. 3781 */ 3782 #define SPI_DLY_POST_DELAY(x) (((uint32_t)(((uint32_t)(x)) << SPI_DLY_POST_DELAY_SHIFT)) & SPI_DLY_POST_DELAY_MASK) 3783 #define SPI_DLY_FRAME_DELAY_MASK (0xF00U) 3784 #define SPI_DLY_FRAME_DELAY_SHIFT (8U) 3785 /*! FRAME_DELAY - If the EOF flag is set, controls the minimum amount of time between the current 3786 * frame and the next frame (or SSEL deassertion if EOT). 0x0 = No additional time is inserted. 0x1 3787 * = 1 SPI clock time is inserted. 0x2 = 2 SPI clock times are inserted. 0xF = 15 SPI clock 3788 * times are inserted. 3789 */ 3790 #define SPI_DLY_FRAME_DELAY(x) (((uint32_t)(((uint32_t)(x)) << SPI_DLY_FRAME_DELAY_SHIFT)) & SPI_DLY_FRAME_DELAY_MASK) 3791 #define SPI_DLY_TRANSFER_DELAY_MASK (0xF000U) 3792 #define SPI_DLY_TRANSFER_DELAY_SHIFT (12U) 3793 /*! TRANSFER_DELAY - Controls the minimum amount of time that the SSEL is deasserted between 3794 * transfers. 0x0 = The minimum time that SSEL is deasserted is 1 SPI clock time. (Zero added time.) 0x1 3795 * = The minimum time that SSEL is deasserted is 2 SPI clock times. 0x2 = The minimum time that 3796 * SSEL is deasserted is 3 SPI clock times. 0xF = The minimum time that SSEL is deasserted is 16 3797 * SPI clock times. 3798 */ 3799 #define SPI_DLY_TRANSFER_DELAY(x) (((uint32_t)(((uint32_t)(x)) << SPI_DLY_TRANSFER_DELAY_SHIFT)) & SPI_DLY_TRANSFER_DELAY_MASK) 3800 /*! @} */ 3801 3802 /*! @name STAT - SPI Status. Some status flags can be cleared by writing a 1 to that bit position */ 3803 /*! @{ */ 3804 #define SPI_STAT_RXRDY_MASK (0x1U) 3805 #define SPI_STAT_RXRDY_SHIFT (0U) 3806 /*! RXRDY - Receiver Ready flag. When 1, indicates that data is available to be read from the 3807 * receiver buffer. Cleared after a read of the RXDAT register. 3808 */ 3809 #define SPI_STAT_RXRDY(x) (((uint32_t)(((uint32_t)(x)) << SPI_STAT_RXRDY_SHIFT)) & SPI_STAT_RXRDY_MASK) 3810 #define SPI_STAT_TXRDY_MASK (0x2U) 3811 #define SPI_STAT_TXRDY_SHIFT (1U) 3812 /*! TXRDY - Transmitter Ready flag. When 1, this bit indicates that data may be written to the 3813 * transmit buffer. Previous data may still be in the process of being transmitted. Cleared when data 3814 * is written to TXDAT or TXDATCTL until the data is moved to the transmit shift register. 3815 */ 3816 #define SPI_STAT_TXRDY(x) (((uint32_t)(((uint32_t)(x)) << SPI_STAT_TXRDY_SHIFT)) & SPI_STAT_TXRDY_MASK) 3817 #define SPI_STAT_RXOV_MASK (0x4U) 3818 #define SPI_STAT_RXOV_SHIFT (2U) 3819 /*! RXOV - Receiver Overrun interrupt flag. This flag applies only to slave mode (Master = 0). This 3820 * flag is set when the beginning of a received character is detected while the receiver buffer 3821 * is still in use. If this occurs, the receiver buffer contents are preserved, and the incoming 3822 * data is lost. Data received by the SPI should be considered undefined if RxOv is set. 3823 */ 3824 #define SPI_STAT_RXOV(x) (((uint32_t)(((uint32_t)(x)) << SPI_STAT_RXOV_SHIFT)) & SPI_STAT_RXOV_MASK) 3825 #define SPI_STAT_TXUR_MASK (0x8U) 3826 #define SPI_STAT_TXUR_SHIFT (3U) 3827 /*! TXUR - Transmitter Underrun interrupt flag. This flag applies only to slave mode (Master = 0). 3828 * In this case, the transmitter must begin sending new data on the next input clock if the 3829 * transmitter is idle. If that data is not available in the transmitter holding register at that 3830 * point, there is no data to transmit and the TXUR flag is set. Data transmitted by the SPI should be 3831 * considered undefined if TXUR is set. 3832 */ 3833 #define SPI_STAT_TXUR(x) (((uint32_t)(((uint32_t)(x)) << SPI_STAT_TXUR_SHIFT)) & SPI_STAT_TXUR_MASK) 3834 #define SPI_STAT_SSA_MASK (0x10U) 3835 #define SPI_STAT_SSA_SHIFT (4U) 3836 /*! SSA - Slave Select Assert. This flag is set whenever any slave select transitions from 3837 * deasserted to asserted, in both master and slave modes. This allows determining when the SPI 3838 * transmit/receive functions become busy, and allows waking up the device from reduced power modes when a 3839 * slave mode access begins. This flag is cleared by software. 3840 */ 3841 #define SPI_STAT_SSA(x) (((uint32_t)(((uint32_t)(x)) << SPI_STAT_SSA_SHIFT)) & SPI_STAT_SSA_MASK) 3842 #define SPI_STAT_SSD_MASK (0x20U) 3843 #define SPI_STAT_SSD_SHIFT (5U) 3844 /*! SSD - Slave Select Deassert. This flag is set whenever any asserted slave selects transition to 3845 * deasserted, in both master and slave modes. This allows determining when the SPI 3846 * transmit/receive functions become idle. This flag is cleared by software. 3847 */ 3848 #define SPI_STAT_SSD(x) (((uint32_t)(((uint32_t)(x)) << SPI_STAT_SSD_SHIFT)) & SPI_STAT_SSD_MASK) 3849 #define SPI_STAT_STALLED_MASK (0x40U) 3850 #define SPI_STAT_STALLED_SHIFT (6U) 3851 /*! STALLED - Stalled status flag. This indicates whether the SPI is currently in a stall condition. 3852 */ 3853 #define SPI_STAT_STALLED(x) (((uint32_t)(((uint32_t)(x)) << SPI_STAT_STALLED_SHIFT)) & SPI_STAT_STALLED_MASK) 3854 #define SPI_STAT_ENDTRANSFER_MASK (0x80U) 3855 #define SPI_STAT_ENDTRANSFER_SHIFT (7U) 3856 /*! ENDTRANSFER - End Transfer control bit. Software can set this bit to force an end to the current 3857 * transfer when the transmitter finishes any activity already in progress, as if the EOT flag 3858 * had been set prior to the last transmission. This capability is included to support cases where 3859 * it is not known when transmit data is written that it will be the end of a transfer. The bit 3860 * is cleared when the transmitter becomes idle as the transfer comes to an end. Forcing an end 3861 * of transfer in this manner causes any specified FRAME_DELAY and TRANSFER_DELAY to be inserted. 3862 */ 3863 #define SPI_STAT_ENDTRANSFER(x) (((uint32_t)(((uint32_t)(x)) << SPI_STAT_ENDTRANSFER_SHIFT)) & SPI_STAT_ENDTRANSFER_MASK) 3864 #define SPI_STAT_MSTIDLE_MASK (0x100U) 3865 #define SPI_STAT_MSTIDLE_SHIFT (8U) 3866 /*! MSTIDLE - Master idle status flag. This bit is 1 whenever the SPI master function is fully idle. 3867 * This means that the transmit holding register is empty and the transmitter is not in the 3868 * process of sending data. 3869 */ 3870 #define SPI_STAT_MSTIDLE(x) (((uint32_t)(((uint32_t)(x)) << SPI_STAT_MSTIDLE_SHIFT)) & SPI_STAT_MSTIDLE_MASK) 3871 /*! @} */ 3872 3873 /*! @name INTENSET - SPI Interrupt Enable read and Set. A complete value may be read from this register. Writing a 1 to any implemented bit position causes that bit to be set. */ 3874 /*! @{ */ 3875 #define SPI_INTENSET_RXRDYEN_MASK (0x1U) 3876 #define SPI_INTENSET_RXRDYEN_SHIFT (0U) 3877 /*! RXRDYEN - Determines whether an interrupt occurs when receiver data is available. 3878 * 0b0..No interrupt will be generated when receiver data is available. 3879 * 0b1..An interrupt will be generated when receiver data is available in the RXDAT register. 3880 */ 3881 #define SPI_INTENSET_RXRDYEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENSET_RXRDYEN_SHIFT)) & SPI_INTENSET_RXRDYEN_MASK) 3882 #define SPI_INTENSET_TXRDYEN_MASK (0x2U) 3883 #define SPI_INTENSET_TXRDYEN_SHIFT (1U) 3884 /*! TXRDYEN - Determines whether an interrupt occurs when the transmitter holding register is available. 3885 * 0b0..No interrupt will be generated when the transmitter holding register is available. 3886 * 0b1..An interrupt will be generated when data may be written to TXDAT. 3887 */ 3888 #define SPI_INTENSET_TXRDYEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENSET_TXRDYEN_SHIFT)) & SPI_INTENSET_TXRDYEN_MASK) 3889 #define SPI_INTENSET_RXOVEN_MASK (0x4U) 3890 #define SPI_INTENSET_RXOVEN_SHIFT (2U) 3891 /*! RXOVEN - Determines whether an interrupt occurs when a receiver overrun occurs. This happens in 3892 * slave mode when there is a need for the receiver to move newly received data to the RXDAT 3893 * register when it is already in use. The interface prevents receiver overrun in Master mode by not 3894 * allowing a new transmission to begin when a receiver overrun would otherwise occur. 3895 * 0b0..No interrupt will be generated when a receiver overrun occurs. 3896 * 0b1..An interrupt will be generated if a receiver overrun occurs. 3897 */ 3898 #define SPI_INTENSET_RXOVEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENSET_RXOVEN_SHIFT)) & SPI_INTENSET_RXOVEN_MASK) 3899 #define SPI_INTENSET_TXUREN_MASK (0x8U) 3900 #define SPI_INTENSET_TXUREN_SHIFT (3U) 3901 /*! TXUREN - Determines whether an interrupt occurs when a transmitter underrun occurs. This happens 3902 * in slave mode when there is a need to transmit data when none is available. 3903 * 0b0..No interrupt will be generated when the transmitter underruns. 3904 * 0b1..An interrupt will be generated if the transmitter underruns. 3905 */ 3906 #define SPI_INTENSET_TXUREN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENSET_TXUREN_SHIFT)) & SPI_INTENSET_TXUREN_MASK) 3907 #define SPI_INTENSET_SSAEN_MASK (0x10U) 3908 #define SPI_INTENSET_SSAEN_SHIFT (4U) 3909 /*! SSAEN - Determines whether an interrupt occurs when the Slave Select is asserted. 3910 * 0b0..No interrupt will be generated when any Slave Select transitions from deasserted to asserted. 3911 * 0b1..An interrupt will be generated when any Slave Select transitions from deasserted to asserted. 3912 */ 3913 #define SPI_INTENSET_SSAEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENSET_SSAEN_SHIFT)) & SPI_INTENSET_SSAEN_MASK) 3914 #define SPI_INTENSET_SSDEN_MASK (0x20U) 3915 #define SPI_INTENSET_SSDEN_SHIFT (5U) 3916 /*! SSDEN - Determines whether an interrupt occurs when the Slave Select is deasserted. 3917 * 0b0..No interrupt will be generated when all asserted Slave Selects transition to deasserted. 3918 * 0b1..An interrupt will be generated when all asserted Slave Selects transition to deasserted. 3919 */ 3920 #define SPI_INTENSET_SSDEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENSET_SSDEN_SHIFT)) & SPI_INTENSET_SSDEN_MASK) 3921 /*! @} */ 3922 3923 /*! @name INTENCLR - SPI Interrupt Enable Clear. Writing a 1 to any implemented bit position causes the corresponding bit in INTENSET to be cleared. */ 3924 /*! @{ */ 3925 #define SPI_INTENCLR_RXRDYEN_MASK (0x1U) 3926 #define SPI_INTENCLR_RXRDYEN_SHIFT (0U) 3927 /*! RXRDYEN - Writing 1 clears the corresponding bits in the INTENSET register. 3928 */ 3929 #define SPI_INTENCLR_RXRDYEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENCLR_RXRDYEN_SHIFT)) & SPI_INTENCLR_RXRDYEN_MASK) 3930 #define SPI_INTENCLR_TXRDYEN_MASK (0x2U) 3931 #define SPI_INTENCLR_TXRDYEN_SHIFT (1U) 3932 /*! TXRDYEN - Writing 1 clears the corresponding bits in the INTENSET register. 3933 */ 3934 #define SPI_INTENCLR_TXRDYEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENCLR_TXRDYEN_SHIFT)) & SPI_INTENCLR_TXRDYEN_MASK) 3935 #define SPI_INTENCLR_RXOVEN_MASK (0x4U) 3936 #define SPI_INTENCLR_RXOVEN_SHIFT (2U) 3937 /*! RXOVEN - Writing 1 clears the corresponding bits in the INTENSET register. 3938 */ 3939 #define SPI_INTENCLR_RXOVEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENCLR_RXOVEN_SHIFT)) & SPI_INTENCLR_RXOVEN_MASK) 3940 #define SPI_INTENCLR_TXUREN_MASK (0x8U) 3941 #define SPI_INTENCLR_TXUREN_SHIFT (3U) 3942 /*! TXUREN - Writing 1 clears the corresponding bits in the INTENSET register. 3943 */ 3944 #define SPI_INTENCLR_TXUREN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENCLR_TXUREN_SHIFT)) & SPI_INTENCLR_TXUREN_MASK) 3945 #define SPI_INTENCLR_SSAEN_MASK (0x10U) 3946 #define SPI_INTENCLR_SSAEN_SHIFT (4U) 3947 /*! SSAEN - Writing 1 clears the corresponding bits in the INTENSET register. 3948 */ 3949 #define SPI_INTENCLR_SSAEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENCLR_SSAEN_SHIFT)) & SPI_INTENCLR_SSAEN_MASK) 3950 #define SPI_INTENCLR_SSDEN_MASK (0x20U) 3951 #define SPI_INTENCLR_SSDEN_SHIFT (5U) 3952 /*! SSDEN - Writing 1 clears the corresponding bits in the INTENSET register. 3953 */ 3954 #define SPI_INTENCLR_SSDEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTENCLR_SSDEN_SHIFT)) & SPI_INTENCLR_SSDEN_MASK) 3955 /*! @} */ 3956 3957 /*! @name RXDAT - SPI Receive Data */ 3958 /*! @{ */ 3959 #define SPI_RXDAT_RXDAT_MASK (0xFFFFU) 3960 #define SPI_RXDAT_RXDAT_SHIFT (0U) 3961 /*! RXDAT - Receiver Data. This contains the next piece of received data. The number of bits that 3962 * are used depends on the LEN setting in TXCTL / TXDATCTL. 3963 */ 3964 #define SPI_RXDAT_RXDAT(x) (((uint32_t)(((uint32_t)(x)) << SPI_RXDAT_RXDAT_SHIFT)) & SPI_RXDAT_RXDAT_MASK) 3965 #define SPI_RXDAT_RXSSEL0_N_MASK (0x10000U) 3966 #define SPI_RXDAT_RXSSEL0_N_SHIFT (16U) 3967 /*! RXSSEL0_N - Slave Select for receive. This field allows the state of the SSEL0 pin to be saved 3968 * along with received data. The value will reflect the SSEL0 pin for both master and slave 3969 * operation. A zero indicates that a slave select is active. The actual polarity of each slave select 3970 * pin is configured by the related SPOL bit in CFG. 3971 */ 3972 #define SPI_RXDAT_RXSSEL0_N(x) (((uint32_t)(((uint32_t)(x)) << SPI_RXDAT_RXSSEL0_N_SHIFT)) & SPI_RXDAT_RXSSEL0_N_MASK) 3973 #define SPI_RXDAT_SOT_MASK (0x100000U) 3974 #define SPI_RXDAT_SOT_SHIFT (20U) 3975 /*! SOT - Start of Transfer flag. This flag will be 1 if this is the first data after the SSELs went 3976 * from deasserted to asserted (i.e., any previous transfer has ended). This information can be 3977 * used to identify the first piece of data in cases where the transfer length is greater than 16 3978 * bit. 3979 */ 3980 #define SPI_RXDAT_SOT(x) (((uint32_t)(((uint32_t)(x)) << SPI_RXDAT_SOT_SHIFT)) & SPI_RXDAT_SOT_MASK) 3981 /*! @} */ 3982 3983 /*! @name TXDATCTL - SPI Transmit Data with Control */ 3984 /*! @{ */ 3985 #define SPI_TXDATCTL_TXDAT_MASK (0xFFFFU) 3986 #define SPI_TXDATCTL_TXDAT_SHIFT (0U) 3987 /*! TXDAT - Transmit Data. This field provides from 1 to 16 bits of data to be transmitted. 3988 */ 3989 #define SPI_TXDATCTL_TXDAT(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXDATCTL_TXDAT_SHIFT)) & SPI_TXDATCTL_TXDAT_MASK) 3990 #define SPI_TXDATCTL_TXSSEL0_N_MASK (0x10000U) 3991 #define SPI_TXDATCTL_TXSSEL0_N_SHIFT (16U) 3992 /*! TXSSEL0_N - Transmit Slave Select. This field asserts SSEL0 in master mode. The output on the 3993 * pin is active LOW by default. Remark: The active state of the SSEL0 pin is configured by bits in 3994 * the CFG register. 3995 * 0b0..SSEL0 asserted. 3996 * 0b1..SSEL0 not asserted. 3997 */ 3998 #define SPI_TXDATCTL_TXSSEL0_N(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXDATCTL_TXSSEL0_N_SHIFT)) & SPI_TXDATCTL_TXSSEL0_N_MASK) 3999 #define SPI_TXDATCTL_EOT_MASK (0x100000U) 4000 #define SPI_TXDATCTL_EOT_SHIFT (20U) 4001 /*! EOT - End of Transfer. The asserted SSEL will be deasserted at the end of a transfer, and remain 4002 * so for at least the time specified by the Transfer_delay value in the DLY register. 4003 * 0b0..This piece of data is not treated as the end of a transfer. SSEL will not be deasserted at the end of this data. 4004 * 0b1..This piece of data is treated as the end of a transfer. SSEL will be deasserted at the end of this piece of data. 4005 */ 4006 #define SPI_TXDATCTL_EOT(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXDATCTL_EOT_SHIFT)) & SPI_TXDATCTL_EOT_MASK) 4007 #define SPI_TXDATCTL_EOF_MASK (0x200000U) 4008 #define SPI_TXDATCTL_EOF_SHIFT (21U) 4009 /*! EOF - End of Frame. Between frames, a delay may be inserted, as defined by the FRAME_DELAY value 4010 * in the DLY register. The end of a frame may not be particularly meaningful if the FRAME_DELAY 4011 * value = 0. This control can be used as part of the support for frame lengths greater than 16 4012 * bits. 4013 * 0b0..This piece of data transmitted is not treated as the end of a frame. 4014 * 0b1..This piece of data is treated as the end of a frame, causing the FRAME_DELAY time to be inserted before subsequent data is transmitted. 4015 */ 4016 #define SPI_TXDATCTL_EOF(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXDATCTL_EOF_SHIFT)) & SPI_TXDATCTL_EOF_MASK) 4017 #define SPI_TXDATCTL_RXIGNORE_MASK (0x400000U) 4018 #define SPI_TXDATCTL_RXIGNORE_SHIFT (22U) 4019 /*! RXIGNORE - Receive Ignore. This allows data to be transmitted using the SPI without the need to 4020 * read unneeded data from the receiver.Setting this bit simplifies the transmit process and can 4021 * be used with the DMA. 4022 * 0b0..Received data must be read in order to allow transmission to progress. In slave mode, an overrun error 4023 * will occur if received data is not read before new data is received. 4024 * 0b1..Received data is ignored, allowing transmission without reading unneeded received data. No receiver flags are generated. 4025 */ 4026 #define SPI_TXDATCTL_RXIGNORE(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXDATCTL_RXIGNORE_SHIFT)) & SPI_TXDATCTL_RXIGNORE_MASK) 4027 #define SPI_TXDATCTL_LEN_MASK (0xF000000U) 4028 #define SPI_TXDATCTL_LEN_SHIFT (24U) 4029 /*! LEN - Data Length. Specifies the data length from 1 to 16 bits. Note that transfer lengths 4030 * greater than 16 bits are supported by implementing multiple sequential transmits. 0x0 = Data 4031 * transfer is 1 bit in length. 0x1 = Data transfer is 2 bits in length. 0x2 = Data transfer is 3 bits 4032 * in length. ... 0xF = Data transfer is 16 bits in length. 4033 * 0b0000.. 4034 * 0b0001..Data transfer is 1 bit in length. 4035 * 0b0010..Data transfer is 2 bit in length. 4036 * 0b0011..Data transfer is 3 bit in length. 4037 * 0b0100..Data transfer is 4 bit in length. 4038 * 0b0101..Data transfer is 5 bit in length. 4039 * 0b0110..Data transfer is 6 bit in length. 4040 * 0b0111..Data transfer is 7 bit in length. 4041 * 0b1000..Data transfer is 8 bit in length. 4042 * 0b1001..Data transfer is 9 bit in length. 4043 * 0b1010..Data transfer is 10 bit in length. 4044 * 0b1011..Data transfer is 11 bit in length. 4045 * 0b1100..Data transfer is 12 bit in length. 4046 * 0b1101..Data transfer is 13 bit in length. 4047 * 0b1110..Data transfer is 14 bit in length. 4048 * 0b1111..Data transfer is 15 bit in length. 4049 */ 4050 #define SPI_TXDATCTL_LEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXDATCTL_LEN_SHIFT)) & SPI_TXDATCTL_LEN_MASK) 4051 /*! @} */ 4052 4053 /*! @name TXDAT - SPI Transmit Data. */ 4054 /*! @{ */ 4055 #define SPI_TXDAT_DATA_MASK (0xFFFFU) 4056 #define SPI_TXDAT_DATA_SHIFT (0U) 4057 /*! DATA - Transmit Data. This field provides from 4 to 16 bits of data to be transmitted. 4058 */ 4059 #define SPI_TXDAT_DATA(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXDAT_DATA_SHIFT)) & SPI_TXDAT_DATA_MASK) 4060 /*! @} */ 4061 4062 /*! @name TXCTL - SPI Transmit Control */ 4063 /*! @{ */ 4064 #define SPI_TXCTL_TXSSEL0_N_MASK (0x10000U) 4065 #define SPI_TXCTL_TXSSEL0_N_SHIFT (16U) 4066 /*! TXSSEL0_N - Transmit Slave Select 0. 4067 */ 4068 #define SPI_TXCTL_TXSSEL0_N(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXCTL_TXSSEL0_N_SHIFT)) & SPI_TXCTL_TXSSEL0_N_MASK) 4069 #define SPI_TXCTL_EOT_MASK (0x100000U) 4070 #define SPI_TXCTL_EOT_SHIFT (20U) 4071 /*! EOT - End of Transfer. 4072 */ 4073 #define SPI_TXCTL_EOT(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXCTL_EOT_SHIFT)) & SPI_TXCTL_EOT_MASK) 4074 #define SPI_TXCTL_EOF_MASK (0x200000U) 4075 #define SPI_TXCTL_EOF_SHIFT (21U) 4076 /*! EOF - End of Frame. 4077 */ 4078 #define SPI_TXCTL_EOF(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXCTL_EOF_SHIFT)) & SPI_TXCTL_EOF_MASK) 4079 #define SPI_TXCTL_RXIGNORE_MASK (0x400000U) 4080 #define SPI_TXCTL_RXIGNORE_SHIFT (22U) 4081 /*! RXIGNORE - Receive Ignore. 4082 */ 4083 #define SPI_TXCTL_RXIGNORE(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXCTL_RXIGNORE_SHIFT)) & SPI_TXCTL_RXIGNORE_MASK) 4084 #define SPI_TXCTL_LEN_MASK (0xF000000U) 4085 #define SPI_TXCTL_LEN_SHIFT (24U) 4086 /*! LEN - Data transfer Length. 4087 */ 4088 #define SPI_TXCTL_LEN(x) (((uint32_t)(((uint32_t)(x)) << SPI_TXCTL_LEN_SHIFT)) & SPI_TXCTL_LEN_MASK) 4089 /*! @} */ 4090 4091 /*! @name DIV - SPI clock Divider */ 4092 /*! @{ */ 4093 #define SPI_DIV_DIVVAL_MASK (0xFFFFU) 4094 #define SPI_DIV_DIVVAL_SHIFT (0U) 4095 /*! DIVVAL - Rate divider value. Specifies how the Flexcomm clock (FCLK) is divided to produce the 4096 * SPI clock rate in master mode. DIVVAL is -1 encoded such that the value 0 results in FCLK/1, 4097 * the value 1 results in FCLK/2, up to the maximum possible divide value of 0xFFFF, which results 4098 * in FCLK/65536. 4099 */ 4100 #define SPI_DIV_DIVVAL(x) (((uint32_t)(((uint32_t)(x)) << SPI_DIV_DIVVAL_SHIFT)) & SPI_DIV_DIVVAL_MASK) 4101 /*! @} */ 4102 4103 /*! @name INTSTAT - SPI Interrupt Status */ 4104 /*! @{ */ 4105 #define SPI_INTSTAT_RXRDY_MASK (0x1U) 4106 #define SPI_INTSTAT_RXRDY_SHIFT (0U) 4107 /*! RXRDY - Receiver Ready flag. 4108 */ 4109 #define SPI_INTSTAT_RXRDY(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTSTAT_RXRDY_SHIFT)) & SPI_INTSTAT_RXRDY_MASK) 4110 #define SPI_INTSTAT_TXRDY_MASK (0x2U) 4111 #define SPI_INTSTAT_TXRDY_SHIFT (1U) 4112 /*! TXRDY - Transmitter Ready flag. 4113 */ 4114 #define SPI_INTSTAT_TXRDY(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTSTAT_TXRDY_SHIFT)) & SPI_INTSTAT_TXRDY_MASK) 4115 #define SPI_INTSTAT_RXOV_MASK (0x4U) 4116 #define SPI_INTSTAT_RXOV_SHIFT (2U) 4117 /*! RXOV - Receiver Overrun interrupt flag. 4118 */ 4119 #define SPI_INTSTAT_RXOV(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTSTAT_RXOV_SHIFT)) & SPI_INTSTAT_RXOV_MASK) 4120 #define SPI_INTSTAT_TXUR_MASK (0x8U) 4121 #define SPI_INTSTAT_TXUR_SHIFT (3U) 4122 /*! TXUR - Transmitter Underrun interrupt flag. 4123 */ 4124 #define SPI_INTSTAT_TXUR(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTSTAT_TXUR_SHIFT)) & SPI_INTSTAT_TXUR_MASK) 4125 #define SPI_INTSTAT_SSA_MASK (0x10U) 4126 #define SPI_INTSTAT_SSA_SHIFT (4U) 4127 /*! SSA - Slave Select Assert. 4128 */ 4129 #define SPI_INTSTAT_SSA(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTSTAT_SSA_SHIFT)) & SPI_INTSTAT_SSA_MASK) 4130 #define SPI_INTSTAT_SSD_MASK (0x20U) 4131 #define SPI_INTSTAT_SSD_SHIFT (5U) 4132 /*! SSD - Slave Select Deassert. 4133 */ 4134 #define SPI_INTSTAT_SSD(x) (((uint32_t)(((uint32_t)(x)) << SPI_INTSTAT_SSD_SHIFT)) & SPI_INTSTAT_SSD_MASK) 4135 /*! @} */ 4136 4137 4138 /*! 4139 * @} 4140 */ /* end of group SPI_Register_Masks */ 4141 4142 4143 /* SPI - Peripheral instance base addresses */ 4144 /** Peripheral SPI0 base address */ 4145 #define SPI0_BASE (0x40058000u) 4146 /** Peripheral SPI0 base pointer */ 4147 #define SPI0 ((SPI_Type *)SPI0_BASE) 4148 /** Array initializer of SPI peripheral base addresses */ 4149 #define SPI_BASE_ADDRS { SPI0_BASE } 4150 /** Array initializer of SPI peripheral base pointers */ 4151 #define SPI_BASE_PTRS { SPI0 } 4152 /** Interrupt vectors for the SPI peripheral type */ 4153 #define SPI_IRQS { SPI0_IRQn } 4154 4155 /*! 4156 * @} 4157 */ /* end of group SPI_Peripheral_Access_Layer */ 4158 4159 4160 /* ---------------------------------------------------------------------------- 4161 -- SWM Peripheral Access Layer 4162 ---------------------------------------------------------------------------- */ 4163 4164 /*! 4165 * @addtogroup SWM_Peripheral_Access_Layer SWM Peripheral Access Layer 4166 * @{ 4167 */ 4168 4169 /** SWM - Register Layout Typedef */ 4170 typedef struct { 4171 union { /* offset: 0x0 */ 4172 struct { /* offset: 0x0 */ 4173 __IO uint32_t PINASSIGN0; /**< Pin assign register 0. Assign movable functions U0_TXD, U0_RXD, U0_RTS, U0_CTS., offset: 0x0 */ 4174 __IO uint32_t PINASSIGN1; /**< Pin assign register 1. Assign movable functions U0_SCLK, U1_TXD, U1_RXD, U1_RTS., offset: 0x4 */ 4175 __IO uint32_t PINASSIGN2; /**< Pin assign register 2. Assign movable functions U1_CTS, U1_SCLK, U2_TXD, U2_RXD., offset: 0x8 */ 4176 __IO uint32_t PINASSIGN3; /**< Pin assign register 3. Assign movable function U2_RTS, U2_CTS, U2_SCLK, SPI0_SCK., offset: 0xC */ 4177 __IO uint32_t PINASSIGN4; /**< Pin assign register 4. Assign movable functions SPI0_MOSI, SPI0_MISO,SPI0_SSEL, SPI1_SCK., offset: 0x10 */ 4178 __IO uint32_t PINASSIGN5; /**< Pin assign register 5. Assign movable functions SPI1_MOSI, SPI1_MISO,SPI1_SSEL, CTIN_0, offset: 0x14 */ 4179 __IO uint32_t PINASSIGN6; /**< Pin assign register 6. Assign movable functions CTIN_1, CTIN_2, CTIN_3,CTOUT_0., offset: 0x18 */ 4180 __IO uint32_t PINASSIGN7; /**< Pin assign register 7. Assign movable functions CTOUT_1, CTOUT_2, CTOUT_3,I2C_SDA., offset: 0x1C */ 4181 __IO uint32_t PINASSIGN8; /**< Pin assign register 8. Assign movable functions I2C_SCL, ACMP_O, CLKOUT,GPIO_INT_BMAT., offset: 0x20 */ 4182 } PINASSIGN; 4183 __IO uint32_t PINASSIGN_DATA[9]; /**< Pin assign register, array offset: 0x0, array step: 0x4 */ 4184 }; 4185 uint8_t RESERVED_0[412]; 4186 __IO uint32_t PINENABLE0; /**< Pin enable register 0. Enables fixed-pin functions ACMP_I0, ACMP_I1, SWCLK, SWDIO, XTALIN, XTALOUT, RESET, CLKIN, VDDCMP and so on., offset: 0x1C0 */ 4187 } SWM_Type; 4188 4189 /* ---------------------------------------------------------------------------- 4190 -- SWM Register Masks 4191 ---------------------------------------------------------------------------- */ 4192 4193 /*! 4194 * @addtogroup SWM_Register_Masks SWM Register Masks 4195 * @{ 4196 */ 4197 4198 /*! @name PINASSIGN0 - Pin assign register 0. Assign movable functions U0_TXD, U0_RXD, U0_RTS, U0_CTS. */ 4199 /*! @{ */ 4200 #define SWM_PINASSIGN0_U0_TXD_O_MASK (0xFFU) 4201 #define SWM_PINASSIGN0_U0_TXD_O_SHIFT (0U) 4202 /*! U0_TXD_O - U0_TXD function assignment. The value is the pin number to be assigned to this 4203 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4204 */ 4205 #define SWM_PINASSIGN0_U0_TXD_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN0_U0_TXD_O_SHIFT)) & SWM_PINASSIGN0_U0_TXD_O_MASK) 4206 #define SWM_PINASSIGN0_U0_RXD_I_MASK (0xFF00U) 4207 #define SWM_PINASSIGN0_U0_RXD_I_SHIFT (8U) 4208 /*! U0_RXD_I - U0_RXD function assignment. The value is the pin number to be assigned to this 4209 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4210 */ 4211 #define SWM_PINASSIGN0_U0_RXD_I(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN0_U0_RXD_I_SHIFT)) & SWM_PINASSIGN0_U0_RXD_I_MASK) 4212 #define SWM_PINASSIGN0_U0_RTS_O_MASK (0xFF0000U) 4213 #define SWM_PINASSIGN0_U0_RTS_O_SHIFT (16U) 4214 /*! U0_RTS_O - U0_RTS function assignment. The value is the pin number to be assigned to this 4215 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4216 */ 4217 #define SWM_PINASSIGN0_U0_RTS_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN0_U0_RTS_O_SHIFT)) & SWM_PINASSIGN0_U0_RTS_O_MASK) 4218 #define SWM_PINASSIGN0_U0_CTS_I_MASK (0xFF000000U) 4219 #define SWM_PINASSIGN0_U0_CTS_I_SHIFT (24U) 4220 /*! U0_CTS_I - U0_CTS function assignment. The value is the pin number to be assigned to this 4221 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4222 */ 4223 #define SWM_PINASSIGN0_U0_CTS_I(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN0_U0_CTS_I_SHIFT)) & SWM_PINASSIGN0_U0_CTS_I_MASK) 4224 /*! @} */ 4225 4226 /*! @name PINASSIGN1 - Pin assign register 1. Assign movable functions U0_SCLK, U1_TXD, U1_RXD, U1_RTS. */ 4227 /*! @{ */ 4228 #define SWM_PINASSIGN1_U0_SCLK_IO_MASK (0xFFU) 4229 #define SWM_PINASSIGN1_U0_SCLK_IO_SHIFT (0U) 4230 /*! U0_SCLK_IO - U0_SCLK function assignment. The value is the pin number to be assigned to this 4231 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4232 */ 4233 #define SWM_PINASSIGN1_U0_SCLK_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN1_U0_SCLK_IO_SHIFT)) & SWM_PINASSIGN1_U0_SCLK_IO_MASK) 4234 #define SWM_PINASSIGN1_U1_TXD_O_MASK (0xFF00U) 4235 #define SWM_PINASSIGN1_U1_TXD_O_SHIFT (8U) 4236 /*! U1_TXD_O - U1_TXD function assignment. The value is the pin number to be assigned to this 4237 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4238 */ 4239 #define SWM_PINASSIGN1_U1_TXD_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN1_U1_TXD_O_SHIFT)) & SWM_PINASSIGN1_U1_TXD_O_MASK) 4240 #define SWM_PINASSIGN1_U1_RXD_I_MASK (0xFF0000U) 4241 #define SWM_PINASSIGN1_U1_RXD_I_SHIFT (16U) 4242 /*! U1_RXD_I - U1_RXD function assignment. The value is the pin number to be assigned to this 4243 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4244 */ 4245 #define SWM_PINASSIGN1_U1_RXD_I(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN1_U1_RXD_I_SHIFT)) & SWM_PINASSIGN1_U1_RXD_I_MASK) 4246 #define SWM_PINASSIGN1_U1_RTS_O_MASK (0xFF000000U) 4247 #define SWM_PINASSIGN1_U1_RTS_O_SHIFT (24U) 4248 /*! U1_RTS_O - U1_RTS function assignment. The value is the pin number to be assigned to this 4249 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4250 */ 4251 #define SWM_PINASSIGN1_U1_RTS_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN1_U1_RTS_O_SHIFT)) & SWM_PINASSIGN1_U1_RTS_O_MASK) 4252 /*! @} */ 4253 4254 /*! @name PINASSIGN2 - Pin assign register 2. Assign movable functions U1_CTS, U1_SCLK, U2_TXD, U2_RXD. */ 4255 /*! @{ */ 4256 #define SWM_PINASSIGN2_U1_CTS_I_MASK (0xFFU) 4257 #define SWM_PINASSIGN2_U1_CTS_I_SHIFT (0U) 4258 /*! U1_CTS_I - U1_CTS function assignment. The value is the pin number to be assigned to this 4259 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4260 */ 4261 #define SWM_PINASSIGN2_U1_CTS_I(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN2_U1_CTS_I_SHIFT)) & SWM_PINASSIGN2_U1_CTS_I_MASK) 4262 #define SWM_PINASSIGN2_U1_SCLK_IO_MASK (0xFF00U) 4263 #define SWM_PINASSIGN2_U1_SCLK_IO_SHIFT (8U) 4264 /*! U1_SCLK_IO - U1_SCLK function assignment. The value is the pin number to be assigned to this 4265 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4266 */ 4267 #define SWM_PINASSIGN2_U1_SCLK_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN2_U1_SCLK_IO_SHIFT)) & SWM_PINASSIGN2_U1_SCLK_IO_MASK) 4268 #define SWM_PINASSIGN2_U2_TXD_O_MASK (0xFF0000U) 4269 #define SWM_PINASSIGN2_U2_TXD_O_SHIFT (16U) 4270 /*! U2_TXD_O - U2_TXD function assignment. The value is the pin number to be assigned to this 4271 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4272 */ 4273 #define SWM_PINASSIGN2_U2_TXD_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN2_U2_TXD_O_SHIFT)) & SWM_PINASSIGN2_U2_TXD_O_MASK) 4274 #define SWM_PINASSIGN2_U2_RXD_I_MASK (0xFF000000U) 4275 #define SWM_PINASSIGN2_U2_RXD_I_SHIFT (24U) 4276 /*! U2_RXD_I - U2_RXD function assignment. The value is the pin number to be assigned to this 4277 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4278 */ 4279 #define SWM_PINASSIGN2_U2_RXD_I(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN2_U2_RXD_I_SHIFT)) & SWM_PINASSIGN2_U2_RXD_I_MASK) 4280 /*! @} */ 4281 4282 /*! @name PINASSIGN3 - Pin assign register 3. Assign movable function U2_RTS, U2_CTS, U2_SCLK, SPI0_SCK. */ 4283 /*! @{ */ 4284 #define SWM_PINASSIGN3_U2_RTS_O_MASK (0xFFU) 4285 #define SWM_PINASSIGN3_U2_RTS_O_SHIFT (0U) 4286 /*! U2_RTS_O - U2_RTS function assignment. The value is the pin number to be assigned to this 4287 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4288 */ 4289 #define SWM_PINASSIGN3_U2_RTS_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN3_U2_RTS_O_SHIFT)) & SWM_PINASSIGN3_U2_RTS_O_MASK) 4290 #define SWM_PINASSIGN3_U2_CTS_I_MASK (0xFF00U) 4291 #define SWM_PINASSIGN3_U2_CTS_I_SHIFT (8U) 4292 /*! U2_CTS_I - U2_CTS function assignment. The value is the pin number to be assigned to this 4293 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4294 */ 4295 #define SWM_PINASSIGN3_U2_CTS_I(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN3_U2_CTS_I_SHIFT)) & SWM_PINASSIGN3_U2_CTS_I_MASK) 4296 #define SWM_PINASSIGN3_U2_SCLK_IO_MASK (0xFF0000U) 4297 #define SWM_PINASSIGN3_U2_SCLK_IO_SHIFT (16U) 4298 /*! U2_SCLK_IO - U2_SCLK function assignment. The value is the pin number to be assigned to this 4299 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4300 */ 4301 #define SWM_PINASSIGN3_U2_SCLK_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN3_U2_SCLK_IO_SHIFT)) & SWM_PINASSIGN3_U2_SCLK_IO_MASK) 4302 #define SWM_PINASSIGN3_SPI0_SCK_IO_MASK (0xFF000000U) 4303 #define SWM_PINASSIGN3_SPI0_SCK_IO_SHIFT (24U) 4304 /*! SPI0_SCK_IO - SPI0_SCK function assignment. The value is the pin number to be assigned to this 4305 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4306 */ 4307 #define SWM_PINASSIGN3_SPI0_SCK_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN3_SPI0_SCK_IO_SHIFT)) & SWM_PINASSIGN3_SPI0_SCK_IO_MASK) 4308 /*! @} */ 4309 4310 /*! @name PINASSIGN4 - Pin assign register 4. Assign movable functions SPI0_MOSI, SPI0_MISO,SPI0_SSEL, SPI1_SCK. */ 4311 /*! @{ */ 4312 #define SWM_PINASSIGN4_SPI0_MOSI_IO_MASK (0xFFU) 4313 #define SWM_PINASSIGN4_SPI0_MOSI_IO_SHIFT (0U) 4314 /*! SPI0_MOSI_IO - SPI0_MOSI function assignment. The value is the pin number to be assigned to this 4315 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4316 */ 4317 #define SWM_PINASSIGN4_SPI0_MOSI_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN4_SPI0_MOSI_IO_SHIFT)) & SWM_PINASSIGN4_SPI0_MOSI_IO_MASK) 4318 #define SWM_PINASSIGN4_SPI0_MISO_IO_MASK (0xFF00U) 4319 #define SWM_PINASSIGN4_SPI0_MISO_IO_SHIFT (8U) 4320 /*! SPI0_MISO_IO - SPI0_MISIO function assignment. The value is the pin number to be assigned to 4321 * this function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4322 */ 4323 #define SWM_PINASSIGN4_SPI0_MISO_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN4_SPI0_MISO_IO_SHIFT)) & SWM_PINASSIGN4_SPI0_MISO_IO_MASK) 4324 #define SWM_PINASSIGN4_SPI0_SSEL_IO_MASK (0xFF0000U) 4325 #define SWM_PINASSIGN4_SPI0_SSEL_IO_SHIFT (16U) 4326 /*! SPI0_SSEL_IO - SPI0_SSEL function assignment. The value is the pin number to be assigned to this 4327 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4328 */ 4329 #define SWM_PINASSIGN4_SPI0_SSEL_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN4_SPI0_SSEL_IO_SHIFT)) & SWM_PINASSIGN4_SPI0_SSEL_IO_MASK) 4330 #define SWM_PINASSIGN4_SPI1_SCK_IO_MASK (0xFF000000U) 4331 #define SWM_PINASSIGN4_SPI1_SCK_IO_SHIFT (24U) 4332 /*! SPI1_SCK_IO - SPI1_SCK function assignment. The value is the pin number to be assigned to this 4333 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4334 */ 4335 #define SWM_PINASSIGN4_SPI1_SCK_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN4_SPI1_SCK_IO_SHIFT)) & SWM_PINASSIGN4_SPI1_SCK_IO_MASK) 4336 /*! @} */ 4337 4338 /*! @name PINASSIGN5 - Pin assign register 5. Assign movable functions SPI1_MOSI, SPI1_MISO,SPI1_SSEL, CTIN_0 */ 4339 /*! @{ */ 4340 #define SWM_PINASSIGN5_SPI1_MOSI_IO_MASK (0xFFU) 4341 #define SWM_PINASSIGN5_SPI1_MOSI_IO_SHIFT (0U) 4342 /*! SPI1_MOSI_IO - SPI1_MOSI function assignment. The value is the pin number to be assigned to this 4343 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4344 */ 4345 #define SWM_PINASSIGN5_SPI1_MOSI_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN5_SPI1_MOSI_IO_SHIFT)) & SWM_PINASSIGN5_SPI1_MOSI_IO_MASK) 4346 #define SWM_PINASSIGN5_SPI1_MISO_IO_MASK (0xFF00U) 4347 #define SWM_PINASSIGN5_SPI1_MISO_IO_SHIFT (8U) 4348 /*! SPI1_MISO_IO - SPI1_MISIO function assignment. The value is the pin number to be assigned to 4349 * this function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4350 */ 4351 #define SWM_PINASSIGN5_SPI1_MISO_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN5_SPI1_MISO_IO_SHIFT)) & SWM_PINASSIGN5_SPI1_MISO_IO_MASK) 4352 #define SWM_PINASSIGN5_SPI1_SSEL_IO_MASK (0xFF0000U) 4353 #define SWM_PINASSIGN5_SPI1_SSEL_IO_SHIFT (16U) 4354 /*! SPI1_SSEL_IO - SPI1_SSEL function assignment. The value is the pin number to be assigned to this 4355 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4356 */ 4357 #define SWM_PINASSIGN5_SPI1_SSEL_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN5_SPI1_SSEL_IO_SHIFT)) & SWM_PINASSIGN5_SPI1_SSEL_IO_MASK) 4358 #define SWM_PINASSIGN5_CTIN_0_I_MASK (0xFF000000U) 4359 #define SWM_PINASSIGN5_CTIN_0_I_SHIFT (24U) 4360 /*! CTIN_0_I - CTIN_0 function assignment. The value is the pin number to be assigned to this 4361 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4362 */ 4363 #define SWM_PINASSIGN5_CTIN_0_I(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN5_CTIN_0_I_SHIFT)) & SWM_PINASSIGN5_CTIN_0_I_MASK) 4364 /*! @} */ 4365 4366 /*! @name PINASSIGN6 - Pin assign register 6. Assign movable functions CTIN_1, CTIN_2, CTIN_3,CTOUT_0. */ 4367 /*! @{ */ 4368 #define SWM_PINASSIGN6_CTIN_1_I_MASK (0xFFU) 4369 #define SWM_PINASSIGN6_CTIN_1_I_SHIFT (0U) 4370 /*! CTIN_1_I - CTIN_1 function assignment. The value is the pin number to be assigned to this 4371 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4372 */ 4373 #define SWM_PINASSIGN6_CTIN_1_I(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN6_CTIN_1_I_SHIFT)) & SWM_PINASSIGN6_CTIN_1_I_MASK) 4374 #define SWM_PINASSIGN6_CTIN_2_I_MASK (0xFF00U) 4375 #define SWM_PINASSIGN6_CTIN_2_I_SHIFT (8U) 4376 /*! CTIN_2_I - CTIN_2 function assignment. The value is the pin number to be assigned to this 4377 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4378 */ 4379 #define SWM_PINASSIGN6_CTIN_2_I(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN6_CTIN_2_I_SHIFT)) & SWM_PINASSIGN6_CTIN_2_I_MASK) 4380 #define SWM_PINASSIGN6_CTIN_3_I_MASK (0xFF0000U) 4381 #define SWM_PINASSIGN6_CTIN_3_I_SHIFT (16U) 4382 /*! CTIN_3_I - CTIN_3 function assignment. The value is the pin number to be assigned to this 4383 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4384 */ 4385 #define SWM_PINASSIGN6_CTIN_3_I(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN6_CTIN_3_I_SHIFT)) & SWM_PINASSIGN6_CTIN_3_I_MASK) 4386 #define SWM_PINASSIGN6_CTOUT_0_O_MASK (0xFF000000U) 4387 #define SWM_PINASSIGN6_CTOUT_0_O_SHIFT (24U) 4388 /*! CTOUT_0_O - CTOUT_0 function assignment. The value is the pin number to be assigned to this 4389 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4390 */ 4391 #define SWM_PINASSIGN6_CTOUT_0_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN6_CTOUT_0_O_SHIFT)) & SWM_PINASSIGN6_CTOUT_0_O_MASK) 4392 /*! @} */ 4393 4394 /*! @name PINASSIGN7 - Pin assign register 7. Assign movable functions CTOUT_1, CTOUT_2, CTOUT_3,I2C_SDA. */ 4395 /*! @{ */ 4396 #define SWM_PINASSIGN7_CTOUT_1_O_MASK (0xFFU) 4397 #define SWM_PINASSIGN7_CTOUT_1_O_SHIFT (0U) 4398 /*! CTOUT_1_O - CTOUT_1 function assignment. The value is the pin number to be assigned to this 4399 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4400 */ 4401 #define SWM_PINASSIGN7_CTOUT_1_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN7_CTOUT_1_O_SHIFT)) & SWM_PINASSIGN7_CTOUT_1_O_MASK) 4402 #define SWM_PINASSIGN7_CTOUT_2_O_MASK (0xFF00U) 4403 #define SWM_PINASSIGN7_CTOUT_2_O_SHIFT (8U) 4404 /*! CTOUT_2_O - CTOUT_2 function assignment. The value is the pin number to be assigned to this 4405 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4406 */ 4407 #define SWM_PINASSIGN7_CTOUT_2_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN7_CTOUT_2_O_SHIFT)) & SWM_PINASSIGN7_CTOUT_2_O_MASK) 4408 #define SWM_PINASSIGN7_CTOUT_3_O_MASK (0xFF0000U) 4409 #define SWM_PINASSIGN7_CTOUT_3_O_SHIFT (16U) 4410 /*! CTOUT_3_O - CTOUT_3 function assignment. The value is the pin number to be assigned to this 4411 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4412 */ 4413 #define SWM_PINASSIGN7_CTOUT_3_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN7_CTOUT_3_O_SHIFT)) & SWM_PINASSIGN7_CTOUT_3_O_MASK) 4414 #define SWM_PINASSIGN7_I2C_SDA_IO_MASK (0xFF000000U) 4415 #define SWM_PINASSIGN7_I2C_SDA_IO_SHIFT (24U) 4416 /*! I2C_SDA_IO - I2C_SDA function assignment. The value is the pin number to be assigned to this 4417 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4418 */ 4419 #define SWM_PINASSIGN7_I2C_SDA_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN7_I2C_SDA_IO_SHIFT)) & SWM_PINASSIGN7_I2C_SDA_IO_MASK) 4420 /*! @} */ 4421 4422 /*! @name PINASSIGN8 - Pin assign register 8. Assign movable functions I2C_SCL, ACMP_O, CLKOUT,GPIO_INT_BMAT. */ 4423 /*! @{ */ 4424 #define SWM_PINASSIGN8_I2C_SCL_IO_MASK (0xFFU) 4425 #define SWM_PINASSIGN8_I2C_SCL_IO_SHIFT (0U) 4426 /*! I2C_SCL_IO - I2C_SCL function assignment. The value is the pin number to be assigned to this 4427 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4428 */ 4429 #define SWM_PINASSIGN8_I2C_SCL_IO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN8_I2C_SCL_IO_SHIFT)) & SWM_PINASSIGN8_I2C_SCL_IO_MASK) 4430 #define SWM_PINASSIGN8_ACMP_O_O_MASK (0xFF00U) 4431 #define SWM_PINASSIGN8_ACMP_O_O_SHIFT (8U) 4432 /*! ACMP_O_O - ACMP_O_O function assignment. The value is the pin number to be assigned to this 4433 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4434 */ 4435 #define SWM_PINASSIGN8_ACMP_O_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN8_ACMP_O_O_SHIFT)) & SWM_PINASSIGN8_ACMP_O_O_MASK) 4436 #define SWM_PINASSIGN8_CLKOUT_O_MASK (0xFF0000U) 4437 #define SWM_PINASSIGN8_CLKOUT_O_SHIFT (16U) 4438 /*! CLKOUT_O - CLKOUT function assignment. The value is the pin number to be assigned to this 4439 * function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4440 */ 4441 #define SWM_PINASSIGN8_CLKOUT_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN8_CLKOUT_O_SHIFT)) & SWM_PINASSIGN8_CLKOUT_O_MASK) 4442 #define SWM_PINASSIGN8_GPIO_INT_BMAT_O_MASK (0xFF000000U) 4443 #define SWM_PINASSIGN8_GPIO_INT_BMAT_O_SHIFT (24U) 4444 /*! GPIO_INT_BMAT_O - GPIO_INT_BMAT function assignment. The value is the pin number to be assigned 4445 * to this function. The following pins are available: PIO0_0(= 0) to PIO0_17 (= 0x11). 4446 */ 4447 #define SWM_PINASSIGN8_GPIO_INT_BMAT_O(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN8_GPIO_INT_BMAT_O_SHIFT)) & SWM_PINASSIGN8_GPIO_INT_BMAT_O_MASK) 4448 /*! @} */ 4449 4450 /*! @name PINASSIGN_DATA - Pin assign register */ 4451 /*! @{ */ 4452 #define SWM_PINASSIGN_DATA_DATA0_MASK (0xFFU) 4453 #define SWM_PINASSIGN_DATA_DATA0_SHIFT (0U) 4454 /*! DATA0 - T0_MAT3 function assignment. The value is the pin number to be assigned to this 4455 * function. The following pins are available: PIO0_0 (= 0) to PIO0_31 (= 0x1F) and from PIO1_0 (=0x20) 4456 * to PIO1_21(=0x35). 4457 */ 4458 #define SWM_PINASSIGN_DATA_DATA0(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN_DATA_DATA0_SHIFT)) & SWM_PINASSIGN_DATA_DATA0_MASK) 4459 #define SWM_PINASSIGN_DATA_DATA1_MASK (0xFF00U) 4460 #define SWM_PINASSIGN_DATA_DATA1_SHIFT (8U) 4461 /*! DATA1 - T0_CAP0 function assignment. The value is the pin number to be assigned to this 4462 * function. The following pins are available: PIO0_0 (= 0) to PIO0_31 (= 0x1F) and from PIO1_0 (=0x20) 4463 * to PIO1_21(=0x35). 4464 */ 4465 #define SWM_PINASSIGN_DATA_DATA1(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN_DATA_DATA1_SHIFT)) & SWM_PINASSIGN_DATA_DATA1_MASK) 4466 #define SWM_PINASSIGN_DATA_DATA2_MASK (0xFF0000U) 4467 #define SWM_PINASSIGN_DATA_DATA2_SHIFT (16U) 4468 /*! DATA2 - T0_CAP1 function assignment. The value is the pin number to be assigned to this 4469 * function. The following pins are available: PIO0_0 (= 0) to PIO0_31 (= 0x1F) and from PIO1_0 (=0x20) 4470 * to PIO1_21(=0x35). 4471 */ 4472 #define SWM_PINASSIGN_DATA_DATA2(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN_DATA_DATA2_SHIFT)) & SWM_PINASSIGN_DATA_DATA2_MASK) 4473 #define SWM_PINASSIGN_DATA_DATA3_MASK (0xFF000000U) 4474 #define SWM_PINASSIGN_DATA_DATA3_SHIFT (24U) 4475 /*! DATA3 - T0_CAP2 function assignment. The value is the pin number to be assigned to this 4476 * function. The following pins are available: PIO0_0 (= 0) to PIO0_31 (= 0x1F) and from PIO1_0 (=0x20) 4477 * to PIO1_21(=0x35). 4478 */ 4479 #define SWM_PINASSIGN_DATA_DATA3(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINASSIGN_DATA_DATA3_SHIFT)) & SWM_PINASSIGN_DATA_DATA3_MASK) 4480 /*! @} */ 4481 4482 /* The count of SWM_PINASSIGN_DATA */ 4483 #define SWM_PINASSIGN_DATA_COUNT (9U) 4484 4485 /*! @name PINENABLE0 - Pin enable register 0. Enables fixed-pin functions ACMP_I0, ACMP_I1, SWCLK, SWDIO, XTALIN, XTALOUT, RESET, CLKIN, VDDCMP and so on. */ 4486 /*! @{ */ 4487 #define SWM_PINENABLE0_ACMP_I1_MASK (0x1U) 4488 #define SWM_PINENABLE0_ACMP_I1_SHIFT (0U) 4489 /*! ACMP_I1 - Enables fixed-pin function. Writing a 1 deselects the function and any movable 4490 * function can be assigned to this pin. By default the fixed--pin function is deselected and GPIO is 4491 * assigned to this pin. 4492 * 0b0..Enable ACMP_I1. This function is enabled on pin PIO0_0. 4493 * 0b1..Disable ACMP_I1. GPIO function PIO0_0 (default) or any other movable function can be assigned to pin PIO0_0. 4494 */ 4495 #define SWM_PINENABLE0_ACMP_I1(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINENABLE0_ACMP_I1_SHIFT)) & SWM_PINENABLE0_ACMP_I1_MASK) 4496 #define SWM_PINENABLE0_ACMP_I2_MASK (0x2U) 4497 #define SWM_PINENABLE0_ACMP_I2_SHIFT (1U) 4498 /*! ACMP_I2 - Enables fixed-pin function. Writing a 1 deselects the function and any movable 4499 * function can be assigned to this pin. By default the fixed-pin function is deselected and GPIO is 4500 * assigned to this pin. Functions CLKIN and ACMP_I2 are connected to the same pin PIO0_1. To use 4501 * ACMP_I2, disable the CLKIN function in bit 7 of this register and enable ACMP_I2. 4502 * 0b0..Enable ACMP_I2. This function is enabled on pin PIO0_1. 4503 * 0b1..Disable ACMP_I2. GPIO function PIO0_1 (default) or any other movable function can be assigned to pin PIO0_1. 4504 */ 4505 #define SWM_PINENABLE0_ACMP_I2(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINENABLE0_ACMP_I2_SHIFT)) & SWM_PINENABLE0_ACMP_I2_MASK) 4506 #define SWM_PINENABLE0_SWCLK_MASK (0x4U) 4507 #define SWM_PINENABLE0_SWCLK_SHIFT (2U) 4508 /*! SWCLK - Enables fixed-pin function. Writing a 1 deselects the function and any movable function 4509 * can be assigned to this pin. This function is selected by default. 4510 * 0b0..Enable SWCLK. This function is enabled on pin PIO0_3. 4511 * 0b1..Disable SWCLK. GPIO function PIO0_3 is selected on this pin. Any other movable function can be assigned to pin PIO0_3. 4512 */ 4513 #define SWM_PINENABLE0_SWCLK(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINENABLE0_SWCLK_SHIFT)) & SWM_PINENABLE0_SWCLK_MASK) 4514 #define SWM_PINENABLE0_SWDIO_MASK (0x8U) 4515 #define SWM_PINENABLE0_SWDIO_SHIFT (3U) 4516 /*! SWDIO - Enables fixed-pin function. Writing a 1 deselects the function and any movable function 4517 * can be assigned to this pin. This function is selected by default. 4518 * 0b0..Enable SWDIO. This function is enabled on pin PIO0_2. 4519 * 0b1..Disable SWDIO. GPIO function PIO0_2 is selected on this pin. Any other movable function can be assigned to pin PIO0_2. 4520 */ 4521 #define SWM_PINENABLE0_SWDIO(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINENABLE0_SWDIO_SHIFT)) & SWM_PINENABLE0_SWDIO_MASK) 4522 #define SWM_PINENABLE0_XTALIN_MASK (0x10U) 4523 #define SWM_PINENABLE0_XTALIN_SHIFT (4U) 4524 /*! XTALIN - Enables fixed-pin function. Writing a 1 deselects the function and any movable function 4525 * can be assigned to this pin. By default the fixed--pin function is deselected and GPIO is 4526 * assigned to this pin. 4527 * 0b0..Enable XTALIN. This function is enabled on pin PIO0_8. 4528 * 0b1..Disable XTALIN. GPIO function PIO0_8 (default) or any other movable function can be assigned to pin PIO0_8. 4529 */ 4530 #define SWM_PINENABLE0_XTALIN(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINENABLE0_XTALIN_SHIFT)) & SWM_PINENABLE0_XTALIN_MASK) 4531 #define SWM_PINENABLE0_XTALOUT_MASK (0x20U) 4532 #define SWM_PINENABLE0_XTALOUT_SHIFT (5U) 4533 /*! XTALOUT - Enables fixed-pin function. Writing a 1 deselects the function and any movable 4534 * function can be assigned to this pin. By default the fixed--pin function is deselected and GPIO is 4535 * assigned to this pin. 4536 * 0b0..Enable XTALOUT. This function is enabled on pin PIO0_9. 4537 * 0b1..Disable XTALOUT. GPIO function PIO0_9 (default) or any other movable function can be assigned to pin PIO0_9. 4538 */ 4539 #define SWM_PINENABLE0_XTALOUT(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINENABLE0_XTALOUT_SHIFT)) & SWM_PINENABLE0_XTALOUT_MASK) 4540 #define SWM_PINENABLE0_RESETN_MASK (0x40U) 4541 #define SWM_PINENABLE0_RESETN_SHIFT (6U) 4542 /*! RESETN - Enables fixed-pin function. Writing a 1 deselects the function and any movable function 4543 * can be assigned to this pin. This function is selected by default. 4544 * 0b0..Enable RESETN. This function is enabled on pin PIO0_5. 4545 * 0b1..Disable RESETN. GPIO function PIO0_5 is selected on this pin. Any other movable function can be assigned to pin PIO0_5. 4546 */ 4547 #define SWM_PINENABLE0_RESETN(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINENABLE0_RESETN_SHIFT)) & SWM_PINENABLE0_RESETN_MASK) 4548 #define SWM_PINENABLE0_CLKIN_MASK (0x80U) 4549 #define SWM_PINENABLE0_CLKIN_SHIFT (7U) 4550 /*! CLKIN - Enables fixed-pin function. Writing a 1 deselects the function and any movable function 4551 * can be assigned to this pin. By default the fixed-pin function is deselected and GPIO is 4552 * assigned to this pin. Functions CLKIN and ACMP_I2 are connected to the same pin PIO0_1. To use 4553 * CLKIN, disable ACMP_I2 in bit 1 of this register and enable CLKIN. 4554 * 0b0..Enable CLKIN. This function is enabled on pin PIO0_1. 4555 * 0b1..Disable CLKIN. GPIO function PIO0_1 (default) or any other movable function can be assigned to pin CLKIN. 4556 */ 4557 #define SWM_PINENABLE0_CLKIN(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINENABLE0_CLKIN_SHIFT)) & SWM_PINENABLE0_CLKIN_MASK) 4558 #define SWM_PINENABLE0_VDDCMP_MASK (0x100U) 4559 #define SWM_PINENABLE0_VDDCMP_SHIFT (8U) 4560 /*! VDDCMP - Enables fixed-pin function. Writing a 1 deselects the function and any movable function 4561 * can be assigned to this pin. By default the fixed--pin function is deselected and GPIO is 4562 * assigned to this pin. 4563 * 0b0..Enable VDDCMP. This function is enabled on pin PIO0_6. 4564 * 0b1..Disable VDDCMP. GPIO function PIO0_6 (default) or any other movable function can be assigned to pin PIO0_6. 4565 */ 4566 #define SWM_PINENABLE0_VDDCMP(x) (((uint32_t)(((uint32_t)(x)) << SWM_PINENABLE0_VDDCMP_SHIFT)) & SWM_PINENABLE0_VDDCMP_MASK) 4567 /*! @} */ 4568 4569 4570 /*! 4571 * @} 4572 */ /* end of group SWM_Register_Masks */ 4573 4574 4575 /* SWM - Peripheral instance base addresses */ 4576 /** Peripheral SWM0 base address */ 4577 #define SWM0_BASE (0x4000C000u) 4578 /** Peripheral SWM0 base pointer */ 4579 #define SWM0 ((SWM_Type *)SWM0_BASE) 4580 /** Array initializer of SWM peripheral base addresses */ 4581 #define SWM_BASE_ADDRS { SWM0_BASE } 4582 /** Array initializer of SWM peripheral base pointers */ 4583 #define SWM_BASE_PTRS { SWM0 } 4584 4585 /*! 4586 * @} 4587 */ /* end of group SWM_Peripheral_Access_Layer */ 4588 4589 4590 /* ---------------------------------------------------------------------------- 4591 -- SYSCON Peripheral Access Layer 4592 ---------------------------------------------------------------------------- */ 4593 4594 /*! 4595 * @addtogroup SYSCON_Peripheral_Access_Layer SYSCON Peripheral Access Layer 4596 * @{ 4597 */ 4598 4599 /** SYSCON - Register Layout Typedef */ 4600 typedef struct { 4601 __IO uint32_t SYSMEMREMAP; /**< System Remap register, offset: 0x0 */ 4602 __IO uint32_t PRESETCTRL; /**< Peripheral reset control register, offset: 0x4 */ 4603 __IO uint32_t SYSPLLCTRL; /**< PLL control, offset: 0x8 */ 4604 __I uint32_t SYSPLLSTAT; /**< PLL status, offset: 0xC */ 4605 uint8_t RESERVED_0[16]; 4606 __IO uint32_t SYSOSCCTRL; /**< system oscillator control, offset: 0x20 */ 4607 __IO uint32_t WDTOSCCTRL; /**< Watchdog oscillator control, offset: 0x24 */ 4608 uint8_t RESERVED_1[8]; 4609 __IO uint32_t SYSRSTSTAT; /**< System reset status register, offset: 0x30 */ 4610 uint8_t RESERVED_2[12]; 4611 __IO uint32_t SYSPLLCLKSEL; /**< System PLL clock source select register, offset: 0x40 */ 4612 __IO uint32_t SYSPLLCLKUEN; /**< System PLL clock source update enable register, offset: 0x44 */ 4613 uint8_t RESERVED_3[40]; 4614 __IO uint32_t MAINCLKSEL; /**< Main clock source select, offset: 0x70 */ 4615 __IO uint32_t MAINCLKUEN; /**< Main clock source update enable, offset: 0x74 */ 4616 __IO uint32_t SYSAHBCLKDIV; /**< System clock divider, offset: 0x78 */ 4617 uint8_t RESERVED_4[4]; 4618 __IO uint32_t SYSAHBCLKCTRL; /**< System clock control, offset: 0x80 */ 4619 uint8_t RESERVED_5[16]; 4620 __IO uint32_t UARTCLKDIV; /**< USART clock divider, offset: 0x94 */ 4621 uint8_t RESERVED_6[72]; 4622 __IO uint32_t CLKOUTSEL; /**< CLKOUT clock source select, offset: 0xE0 */ 4623 __IO uint32_t CLKOUTUEN; /**< CLKOUT clock source update enable, offset: 0xE4 */ 4624 __IO uint32_t CLKOUTDIV; /**< clock out divider, offset: 0xE8 */ 4625 uint8_t RESERVED_7[4]; 4626 __IO uint32_t UARTFRGDIV; /**< USART common fractional generator divider value, offset: 0xF0 */ 4627 __IO uint32_t UARTFRGMULT; /**< USART common fractional generator divider value, offset: 0xF4 */ 4628 uint8_t RESERVED_8[4]; 4629 __IO uint32_t EXTTRACECMD; /**< External trace buffer command register, offset: 0xFC */ 4630 __I uint32_t PIOPORCAP0; /**< POR captured PIO status 0, offset: 0x100 */ 4631 uint8_t RESERVED_9[48]; 4632 __IO uint32_t IOCONCLKDIV6; /**< Peripheral clock 6 to the IOCON block for programmable glitch filter, offset: 0x134 */ 4633 __IO uint32_t IOCONCLKDIV5; /**< Peripheral clock 6 to the IOCON block for programmable glitch filter, offset: 0x138 */ 4634 __IO uint32_t IOCONCLKDIV4; /**< Peripheral clock 4 to the IOCON block for programmable glitch filter, offset: 0x13C */ 4635 __IO uint32_t IOCONCLKDIV3; /**< Peripheral clock 3 to the IOCON block for programmable glitch filter, offset: 0x140 */ 4636 __IO uint32_t IOCONCLKDIV2; /**< Peripheral clock 2 to the IOCON block for programmable glitch filter, offset: 0x144 */ 4637 __IO uint32_t IOCONCLKDIV1; /**< Peripheral clock 1 to the IOCON block for programmable glitch filter, offset: 0x148 */ 4638 __IO uint32_t IOCONCLKDIV0; /**< Peripheral clock 0 to the IOCON block for programmable glitch filter, offset: 0x14C */ 4639 __IO uint32_t BODCTRL; /**< BOD control register, offset: 0x150 */ 4640 __IO uint32_t SYSTCKCAL; /**< System tick timer calibration register, offset: 0x154 */ 4641 uint8_t RESERVED_10[24]; 4642 __IO uint32_t IRQLATENCY; /**< IRQ latency register, offset: 0x170 */ 4643 __IO uint32_t NMISRC; /**< NMI source selection register, offset: 0x174 */ 4644 __IO uint32_t PINTSEL[8]; /**< Pin interrupt select registers N, array offset: 0x178, array step: 0x4 */ 4645 uint8_t RESERVED_11[108]; 4646 __IO uint32_t STARTERP0; /**< Start logic 0 pin wake-up enable register 0, offset: 0x204 */ 4647 uint8_t RESERVED_12[12]; 4648 __IO uint32_t STARTERP1; /**< Start logic 0 pin wake-up enable register 1, offset: 0x214 */ 4649 uint8_t RESERVED_13[24]; 4650 __IO uint32_t PDSLEEPCFG; /**< Deep-sleep configuration register, offset: 0x230 */ 4651 __IO uint32_t PDAWAKECFG; /**< Wake-up configuration register, offset: 0x234 */ 4652 __IO uint32_t PDRUNCFG; /**< Power configuration register, offset: 0x238 */ 4653 uint8_t RESERVED_14[444]; 4654 __I uint32_t DEVICE_ID; /**< Part ID register, offset: 0x3F8 */ 4655 } SYSCON_Type; 4656 4657 /* ---------------------------------------------------------------------------- 4658 -- SYSCON Register Masks 4659 ---------------------------------------------------------------------------- */ 4660 4661 /*! 4662 * @addtogroup SYSCON_Register_Masks SYSCON Register Masks 4663 * @{ 4664 */ 4665 4666 /*! @name SYSMEMREMAP - System Remap register */ 4667 /*! @{ */ 4668 #define SYSCON_SYSMEMREMAP_MAP_MASK (0x3U) 4669 #define SYSCON_SYSMEMREMAP_MAP_SHIFT (0U) 4670 /*! MAP - System memory remap. Value 0x3 is reserved. 4671 * 0b00..Boot Loader Mode. Interrupt vectors are re-mapped to Boot ROM. 4672 * 0b01..User RAM Mode. Interrupt vectors are re-mapped to Static RAM. 4673 * 0b10..User Flash Mode. Interrupt vectors are not re-mapped and reside in Flash. 4674 */ 4675 #define SYSCON_SYSMEMREMAP_MAP(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSMEMREMAP_MAP_SHIFT)) & SYSCON_SYSMEMREMAP_MAP_MASK) 4676 /*! @} */ 4677 4678 /*! @name PRESETCTRL - Peripheral reset control register */ 4679 /*! @{ */ 4680 #define SYSCON_PRESETCTRL_SPI0_RST_N_MASK (0x1U) 4681 #define SYSCON_PRESETCTRL_SPI0_RST_N_SHIFT (0U) 4682 /*! SPI0_RST_N - SPI0 reset control. 4683 * 0b0..Assert the SPI0 reset. 4684 * 0b1..Clear the SPI0 reset. 4685 */ 4686 #define SYSCON_PRESETCTRL_SPI0_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_SPI0_RST_N_SHIFT)) & SYSCON_PRESETCTRL_SPI0_RST_N_MASK) 4687 #define SYSCON_PRESETCTRL_SPI1_RST_N_MASK (0x2U) 4688 #define SYSCON_PRESETCTRL_SPI1_RST_N_SHIFT (1U) 4689 /*! SPI1_RST_N - SPI1 reset control. 4690 * 0b0..Assert the SPI1 reset. 4691 * 0b1..Clear the SPI1 reset. 4692 */ 4693 #define SYSCON_PRESETCTRL_SPI1_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_SPI1_RST_N_SHIFT)) & SYSCON_PRESETCTRL_SPI1_RST_N_MASK) 4694 #define SYSCON_PRESETCTRL_UARTFRG_RST_N_MASK (0x4U) 4695 #define SYSCON_PRESETCTRL_UARTFRG_RST_N_SHIFT (2U) 4696 /*! UARTFRG_RST_N - USART fractional baud rate generator(UARTFRG) reset control. 4697 * 0b0..Assert the UARTFRG reset. 4698 * 0b1..Clear the UARTFRG reset. 4699 */ 4700 #define SYSCON_PRESETCTRL_UARTFRG_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_UARTFRG_RST_N_SHIFT)) & SYSCON_PRESETCTRL_UARTFRG_RST_N_MASK) 4701 #define SYSCON_PRESETCTRL_UART0_RST_N_MASK (0x8U) 4702 #define SYSCON_PRESETCTRL_UART0_RST_N_SHIFT (3U) 4703 /*! UART0_RST_N - USART0 reset control. 4704 * 0b0..Assert the USART0 reset. 4705 * 0b1..Clear the USART0 reset. 4706 */ 4707 #define SYSCON_PRESETCTRL_UART0_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_UART0_RST_N_SHIFT)) & SYSCON_PRESETCTRL_UART0_RST_N_MASK) 4708 #define SYSCON_PRESETCTRL_UART1_RST_N_MASK (0x10U) 4709 #define SYSCON_PRESETCTRL_UART1_RST_N_SHIFT (4U) 4710 /*! UART1_RST_N - USART1 reset control. 4711 * 0b0..Assert the USART1 reset. 4712 * 0b1..Clear the USART1 reset. 4713 */ 4714 #define SYSCON_PRESETCTRL_UART1_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_UART1_RST_N_SHIFT)) & SYSCON_PRESETCTRL_UART1_RST_N_MASK) 4715 #define SYSCON_PRESETCTRL_UART2_RST_N_MASK (0x20U) 4716 #define SYSCON_PRESETCTRL_UART2_RST_N_SHIFT (5U) 4717 /*! UART2_RST_N - USART2 reset control. 4718 * 0b0..Assert the USART2 reset. 4719 * 0b1..Clear the USART2 reset. 4720 */ 4721 #define SYSCON_PRESETCTRL_UART2_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_UART2_RST_N_SHIFT)) & SYSCON_PRESETCTRL_UART2_RST_N_MASK) 4722 #define SYSCON_PRESETCTRL_I2C0_RST_N_MASK (0x40U) 4723 #define SYSCON_PRESETCTRL_I2C0_RST_N_SHIFT (6U) 4724 /*! I2C0_RST_N - I2C0 reset control. 4725 * 0b0..Assert the I2C0 reset. 4726 * 0b1..Clear the I2C0 reset. 4727 */ 4728 #define SYSCON_PRESETCTRL_I2C0_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_I2C0_RST_N_SHIFT)) & SYSCON_PRESETCTRL_I2C0_RST_N_MASK) 4729 #define SYSCON_PRESETCTRL_MRT_RST_N_MASK (0x80U) 4730 #define SYSCON_PRESETCTRL_MRT_RST_N_SHIFT (7U) 4731 /*! MRT_RST_N - Multi-rate timer (MRT) reset control. 4732 * 0b0..Assert the MRT reset. 4733 * 0b1..Clear the MRT reset. 4734 */ 4735 #define SYSCON_PRESETCTRL_MRT_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_MRT_RST_N_SHIFT)) & SYSCON_PRESETCTRL_MRT_RST_N_MASK) 4736 #define SYSCON_PRESETCTRL_SCT_RST_N_MASK (0x100U) 4737 #define SYSCON_PRESETCTRL_SCT_RST_N_SHIFT (8U) 4738 /*! SCT_RST_N - SCT reset control. 4739 * 0b0..Assert the SCT reset. 4740 * 0b1..Clear the SCT reset. 4741 */ 4742 #define SYSCON_PRESETCTRL_SCT_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_SCT_RST_N_SHIFT)) & SYSCON_PRESETCTRL_SCT_RST_N_MASK) 4743 #define SYSCON_PRESETCTRL_WKT_RST_N_MASK (0x200U) 4744 #define SYSCON_PRESETCTRL_WKT_RST_N_SHIFT (9U) 4745 /*! WKT_RST_N - Self-wake-up timer (WKT) reset control. 4746 * 0b0..Assert the WKT reset. 4747 * 0b1..Clear the WKT reset. 4748 */ 4749 #define SYSCON_PRESETCTRL_WKT_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_WKT_RST_N_SHIFT)) & SYSCON_PRESETCTRL_WKT_RST_N_MASK) 4750 #define SYSCON_PRESETCTRL_GPIO_RST_N_MASK (0x400U) 4751 #define SYSCON_PRESETCTRL_GPIO_RST_N_SHIFT (10U) 4752 /*! GPIO_RST_N - GPIO and GPIO pin interrupt reset control. 4753 * 0b0..Assert the GPIO reset. 4754 * 0b1..Clear the GPIO reset. 4755 */ 4756 #define SYSCON_PRESETCTRL_GPIO_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_GPIO_RST_N_SHIFT)) & SYSCON_PRESETCTRL_GPIO_RST_N_MASK) 4757 #define SYSCON_PRESETCTRL_FLASH_RST_N_MASK (0x800U) 4758 #define SYSCON_PRESETCTRL_FLASH_RST_N_SHIFT (11U) 4759 /*! FLASH_RST_N - Flash controller reset control. 4760 * 0b0..Assert the flash controller reset. 4761 * 0b1..Clear the flash controller reset. 4762 */ 4763 #define SYSCON_PRESETCTRL_FLASH_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_FLASH_RST_N_SHIFT)) & SYSCON_PRESETCTRL_FLASH_RST_N_MASK) 4764 #define SYSCON_PRESETCTRL_ACMP_RST_N_MASK (0x1000U) 4765 #define SYSCON_PRESETCTRL_ACMP_RST_N_SHIFT (12U) 4766 /*! ACMP_RST_N - Analog comparator reset control. 4767 * 0b0..Assert the analog comparator reset. 4768 * 0b1..Clear the analog comparator controller reset. 4769 */ 4770 #define SYSCON_PRESETCTRL_ACMP_RST_N(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PRESETCTRL_ACMP_RST_N_SHIFT)) & SYSCON_PRESETCTRL_ACMP_RST_N_MASK) 4771 /*! @} */ 4772 4773 /*! @name SYSPLLCTRL - PLL control */ 4774 /*! @{ */ 4775 #define SYSCON_SYSPLLCTRL_MSEL_MASK (0x1FU) 4776 #define SYSCON_SYSPLLCTRL_MSEL_SHIFT (0U) 4777 /*! MSEL - Feedback divider value. The division value M is the programmed MSEL value + 1. 00000: 4778 * Division ratio M = 1 to 11111: Division ratio M = 32 4779 */ 4780 #define SYSCON_SYSPLLCTRL_MSEL(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSPLLCTRL_MSEL_SHIFT)) & SYSCON_SYSPLLCTRL_MSEL_MASK) 4781 #define SYSCON_SYSPLLCTRL_PSEL_MASK (0x60U) 4782 #define SYSCON_SYSPLLCTRL_PSEL_SHIFT (5U) 4783 /*! PSEL - Post divider ratio P. The division ratio is 2 x P. 4784 * 0b00..P = 1 4785 * 0b01..P = 2 4786 * 0b10..P = 4 4787 * 0b11..P = 8 4788 */ 4789 #define SYSCON_SYSPLLCTRL_PSEL(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSPLLCTRL_PSEL_SHIFT)) & SYSCON_SYSPLLCTRL_PSEL_MASK) 4790 /*! @} */ 4791 4792 /*! @name SYSPLLSTAT - PLL status */ 4793 /*! @{ */ 4794 #define SYSCON_SYSPLLSTAT_LOCK_MASK (0x1U) 4795 #define SYSCON_SYSPLLSTAT_LOCK_SHIFT (0U) 4796 /*! LOCK - PLL0 lock indicator 4797 */ 4798 #define SYSCON_SYSPLLSTAT_LOCK(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSPLLSTAT_LOCK_SHIFT)) & SYSCON_SYSPLLSTAT_LOCK_MASK) 4799 /*! @} */ 4800 4801 /*! @name SYSOSCCTRL - system oscillator control */ 4802 /*! @{ */ 4803 #define SYSCON_SYSOSCCTRL_BYPASS_MASK (0x1U) 4804 #define SYSCON_SYSOSCCTRL_BYPASS_SHIFT (0U) 4805 /*! BYPASS - Bypass system oscillator 4806 */ 4807 #define SYSCON_SYSOSCCTRL_BYPASS(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSOSCCTRL_BYPASS_SHIFT)) & SYSCON_SYSOSCCTRL_BYPASS_MASK) 4808 #define SYSCON_SYSOSCCTRL_FREQRANGE_MASK (0x2U) 4809 #define SYSCON_SYSOSCCTRL_FREQRANGE_SHIFT (1U) 4810 /*! FREQRANGE - oscillator low / high transconductance selection input (Active High) 1-20MHz '0' : 15-50MHz '1' 4811 */ 4812 #define SYSCON_SYSOSCCTRL_FREQRANGE(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSOSCCTRL_FREQRANGE_SHIFT)) & SYSCON_SYSOSCCTRL_FREQRANGE_MASK) 4813 /*! @} */ 4814 4815 /*! @name WDTOSCCTRL - Watchdog oscillator control */ 4816 /*! @{ */ 4817 #define SYSCON_WDTOSCCTRL_DIVSEL_MASK (0x1FU) 4818 #define SYSCON_WDTOSCCTRL_DIVSEL_SHIFT (0U) 4819 /*! DIVSEL - Select divider for Fclkana. wdt_osc_clk = Fclkana/ (2 x (1 + DIVSEL)) 00000: 2 x (1 + 4820 * DIVSEL) = 2 00001: 2 x (1 + DIVSEL) = 4 to 11111: 2 x (1 + DIVSEL) = 64 4821 */ 4822 #define SYSCON_WDTOSCCTRL_DIVSEL(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_WDTOSCCTRL_DIVSEL_SHIFT)) & SYSCON_WDTOSCCTRL_DIVSEL_MASK) 4823 #define SYSCON_WDTOSCCTRL_FREQSEL_MASK (0x1E0U) 4824 #define SYSCON_WDTOSCCTRL_FREQSEL_SHIFT (5U) 4825 /*! FREQSEL - Frequency select. Selects the frequency of the oscillator. 0x00 = invalid setting when 4826 * watchdog oscillator is running 0x1 = 0.6 MHz 0x2 = 1.05 MHz 0x3 = 1.4 MHz 0x4 = 1.75 MHz 0x5 4827 * = 2.1 MHz 0x6 = 2.4 MHz 0x7 = 2.7 MHz 0x8 = 3.0 MHz 0x9 = 3.25 MHz 0xA = 3.5 MHz 0xB = 3.75 4828 * MHz 0xC = 4.0 MHz 0xD = 4.2 MHz 0xE = 4.4 MHz 0xF = 4.6 MHz 4829 */ 4830 #define SYSCON_WDTOSCCTRL_FREQSEL(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_WDTOSCCTRL_FREQSEL_SHIFT)) & SYSCON_WDTOSCCTRL_FREQSEL_MASK) 4831 /*! @} */ 4832 4833 /*! @name SYSRSTSTAT - System reset status register */ 4834 /*! @{ */ 4835 #define SYSCON_SYSRSTSTAT_POR_MASK (0x1U) 4836 #define SYSCON_SYSRSTSTAT_POR_SHIFT (0U) 4837 /*! POR - POR reset status. 4838 * 0b0..No POR detected. 4839 * 0b1..POR detected. Writing a one clears this reset. 4840 */ 4841 #define SYSCON_SYSRSTSTAT_POR(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSRSTSTAT_POR_SHIFT)) & SYSCON_SYSRSTSTAT_POR_MASK) 4842 #define SYSCON_SYSRSTSTAT_EXTRST_MASK (0x2U) 4843 #define SYSCON_SYSRSTSTAT_EXTRST_SHIFT (1U) 4844 /*! EXTRST - Status of the external RESET pin. External reset status. 4845 * 0b0..No reset event detected. 4846 * 0b1..Reset detected. Writing a one clears this reset. 4847 */ 4848 #define SYSCON_SYSRSTSTAT_EXTRST(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSRSTSTAT_EXTRST_SHIFT)) & SYSCON_SYSRSTSTAT_EXTRST_MASK) 4849 #define SYSCON_SYSRSTSTAT_WDT_MASK (0x4U) 4850 #define SYSCON_SYSRSTSTAT_WDT_SHIFT (2U) 4851 /*! WDT - Status of the Watchdog reset. 4852 * 0b0..No WDT reset detected. 4853 * 0b1..WDT reset detected. Writing a one clears this reset. 4854 */ 4855 #define SYSCON_SYSRSTSTAT_WDT(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSRSTSTAT_WDT_SHIFT)) & SYSCON_SYSRSTSTAT_WDT_MASK) 4856 #define SYSCON_SYSRSTSTAT_BOD_MASK (0x8U) 4857 #define SYSCON_SYSRSTSTAT_BOD_SHIFT (3U) 4858 /*! BOD - Status of the Brown-out detect reset. 4859 * 0b0..No BOD reset detected. 4860 * 0b1..BOD reset detected. Writing a one clears this reset. 4861 */ 4862 #define SYSCON_SYSRSTSTAT_BOD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSRSTSTAT_BOD_SHIFT)) & SYSCON_SYSRSTSTAT_BOD_MASK) 4863 #define SYSCON_SYSRSTSTAT_SYSRST_MASK (0x10U) 4864 #define SYSCON_SYSRSTSTAT_SYSRST_SHIFT (4U) 4865 /*! SYSRST - Status of the software system reset. 4866 * 0b0..No System reset detected. 4867 * 0b1..System reset detected. Writing a one clears this reset. 4868 */ 4869 #define SYSCON_SYSRSTSTAT_SYSRST(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSRSTSTAT_SYSRST_SHIFT)) & SYSCON_SYSRSTSTAT_SYSRST_MASK) 4870 /*! @} */ 4871 4872 /*! @name SYSPLLCLKSEL - System PLL clock source select register */ 4873 /*! @{ */ 4874 #define SYSCON_SYSPLLCLKSEL_SEL_MASK (0x3U) 4875 #define SYSCON_SYSPLLCLKSEL_SEL_SHIFT (0U) 4876 /*! SEL - System PLL clock source 4877 * 0b00..IRC 4878 * 0b01..Crystal Oscillator (SYSOSC) 4879 * 0b10..Reserved 4880 * 0b11..CLKIN. External clock input. 4881 */ 4882 #define SYSCON_SYSPLLCLKSEL_SEL(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSPLLCLKSEL_SEL_SHIFT)) & SYSCON_SYSPLLCLKSEL_SEL_MASK) 4883 /*! @} */ 4884 4885 /*! @name SYSPLLCLKUEN - System PLL clock source update enable register */ 4886 /*! @{ */ 4887 #define SYSCON_SYSPLLCLKUEN_ENA_MASK (0x1U) 4888 #define SYSCON_SYSPLLCLKUEN_ENA_SHIFT (0U) 4889 /*! ENA - Enable system PLL clock source update 4890 * 0b0..no change 4891 * 0b1..update clock source 4892 */ 4893 #define SYSCON_SYSPLLCLKUEN_ENA(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSPLLCLKUEN_ENA_SHIFT)) & SYSCON_SYSPLLCLKUEN_ENA_MASK) 4894 /*! @} */ 4895 4896 /*! @name MAINCLKSEL - Main clock source select */ 4897 /*! @{ */ 4898 #define SYSCON_MAINCLKSEL_SEL_MASK (0x3U) 4899 #define SYSCON_MAINCLKSEL_SEL_SHIFT (0U) 4900 /*! SEL - Clock source for main clock. 4901 * 0b00..IRC Oscillator. 4902 * 0b01..PLL input. 4903 * 0b10..Watchdog oscillator. 4904 * 0b11..PLL output. 4905 */ 4906 #define SYSCON_MAINCLKSEL_SEL(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_MAINCLKSEL_SEL_SHIFT)) & SYSCON_MAINCLKSEL_SEL_MASK) 4907 /*! @} */ 4908 4909 /*! @name MAINCLKUEN - Main clock source update enable */ 4910 /*! @{ */ 4911 #define SYSCON_MAINCLKUEN_ENA_MASK (0x1U) 4912 #define SYSCON_MAINCLKUEN_ENA_SHIFT (0U) 4913 /*! ENA - Enable main clock source update. 4914 * 0b0..No change. 4915 * 0b1..Update clock source. 4916 */ 4917 #define SYSCON_MAINCLKUEN_ENA(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_MAINCLKUEN_ENA_SHIFT)) & SYSCON_MAINCLKUEN_ENA_MASK) 4918 /*! @} */ 4919 4920 /*! @name SYSAHBCLKDIV - System clock divider */ 4921 /*! @{ */ 4922 #define SYSCON_SYSAHBCLKDIV_DIV_MASK (0xFFU) 4923 #define SYSCON_SYSAHBCLKDIV_DIV_SHIFT (0U) 4924 /*! DIV - System AHB clock divider values 0: System clock disabled. 1: Divide by 1. to 255: Divide by 255. 4925 */ 4926 #define SYSCON_SYSAHBCLKDIV_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKDIV_DIV_SHIFT)) & SYSCON_SYSAHBCLKDIV_DIV_MASK) 4927 /*! @} */ 4928 4929 /*! @name SYSAHBCLKCTRL - System clock control */ 4930 /*! @{ */ 4931 #define SYSCON_SYSAHBCLKCTRL_SYS_MASK (0x1U) 4932 #define SYSCON_SYSAHBCLKCTRL_SYS_SHIFT (0U) 4933 /*! SYS - Enables the clock for the AHB, the APB bridge, the Cortex-M0+ core clocks, SYSCON, and the 4934 * PMU. This bit is read only and always reads as 1. 4935 */ 4936 #define SYSCON_SYSAHBCLKCTRL_SYS(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_SYS_SHIFT)) & SYSCON_SYSAHBCLKCTRL_SYS_MASK) 4937 #define SYSCON_SYSAHBCLKCTRL_ROM_MASK (0x2U) 4938 #define SYSCON_SYSAHBCLKCTRL_ROM_SHIFT (1U) 4939 /*! ROM - Enables clock for ROM. 4940 * 0b0..Disable. 4941 * 0b1..Enable. 4942 */ 4943 #define SYSCON_SYSAHBCLKCTRL_ROM(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_ROM_SHIFT)) & SYSCON_SYSAHBCLKCTRL_ROM_MASK) 4944 #define SYSCON_SYSAHBCLKCTRL_RAM0_1_MASK (0x4U) 4945 #define SYSCON_SYSAHBCLKCTRL_RAM0_1_SHIFT (2U) 4946 /*! RAM0_1 - Enables clock for SRAM0 and SRAM1. 4947 * 0b0..Disable. 4948 * 0b1..Enable. 4949 */ 4950 #define SYSCON_SYSAHBCLKCTRL_RAM0_1(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_RAM0_1_SHIFT)) & SYSCON_SYSAHBCLKCTRL_RAM0_1_MASK) 4951 #define SYSCON_SYSAHBCLKCTRL_FLASHREG_MASK (0x8U) 4952 #define SYSCON_SYSAHBCLKCTRL_FLASHREG_SHIFT (3U) 4953 /*! FLASHREG - Enables clock for flash register interface. 4954 * 0b0..Disable. 4955 * 0b1..Enable. 4956 */ 4957 #define SYSCON_SYSAHBCLKCTRL_FLASHREG(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_FLASHREG_SHIFT)) & SYSCON_SYSAHBCLKCTRL_FLASHREG_MASK) 4958 #define SYSCON_SYSAHBCLKCTRL_FLASH_MASK (0x10U) 4959 #define SYSCON_SYSAHBCLKCTRL_FLASH_SHIFT (4U) 4960 /*! FLASH - Enables clock for flash. 4961 * 0b0..Disable. 4962 * 0b1..Enable. 4963 */ 4964 #define SYSCON_SYSAHBCLKCTRL_FLASH(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_FLASH_SHIFT)) & SYSCON_SYSAHBCLKCTRL_FLASH_MASK) 4965 #define SYSCON_SYSAHBCLKCTRL_I2C0_MASK (0x20U) 4966 #define SYSCON_SYSAHBCLKCTRL_I2C0_SHIFT (5U) 4967 /*! I2C0 - Enables clock for I2C0. 4968 * 0b0..Disable. 4969 * 0b1..Enable. 4970 */ 4971 #define SYSCON_SYSAHBCLKCTRL_I2C0(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_I2C0_SHIFT)) & SYSCON_SYSAHBCLKCTRL_I2C0_MASK) 4972 #define SYSCON_SYSAHBCLKCTRL_GPIO_MASK (0x40U) 4973 #define SYSCON_SYSAHBCLKCTRL_GPIO_SHIFT (6U) 4974 /*! GPIO - Enables clock for GPIO port registers and GPIO pin interrupt registers. 4975 * 0b0..Disable. 4976 * 0b1..Enable. 4977 */ 4978 #define SYSCON_SYSAHBCLKCTRL_GPIO(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_GPIO_SHIFT)) & SYSCON_SYSAHBCLKCTRL_GPIO_MASK) 4979 #define SYSCON_SYSAHBCLKCTRL_SWM_MASK (0x80U) 4980 #define SYSCON_SYSAHBCLKCTRL_SWM_SHIFT (7U) 4981 /*! SWM - Enables clock for switch matrix. 4982 * 0b0..Disable. 4983 * 0b1..Enable. 4984 */ 4985 #define SYSCON_SYSAHBCLKCTRL_SWM(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_SWM_SHIFT)) & SYSCON_SYSAHBCLKCTRL_SWM_MASK) 4986 #define SYSCON_SYSAHBCLKCTRL_SCT_MASK (0x100U) 4987 #define SYSCON_SYSAHBCLKCTRL_SCT_SHIFT (8U) 4988 /*! SCT - Enables clock for state configurable timer SCTimer/PWM. 4989 * 0b0..Disable. 4990 * 0b1..Enable. 4991 */ 4992 #define SYSCON_SYSAHBCLKCTRL_SCT(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_SCT_SHIFT)) & SYSCON_SYSAHBCLKCTRL_SCT_MASK) 4993 #define SYSCON_SYSAHBCLKCTRL_WKT_MASK (0x200U) 4994 #define SYSCON_SYSAHBCLKCTRL_WKT_SHIFT (9U) 4995 /*! WKT - Enables clock for self-wake-up timer. 4996 * 0b0..Disable. 4997 * 0b1..Enable. 4998 */ 4999 #define SYSCON_SYSAHBCLKCTRL_WKT(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_WKT_SHIFT)) & SYSCON_SYSAHBCLKCTRL_WKT_MASK) 5000 #define SYSCON_SYSAHBCLKCTRL_MRT_MASK (0x400U) 5001 #define SYSCON_SYSAHBCLKCTRL_MRT_SHIFT (10U) 5002 /*! MRT - Enables clock for multi-rate timer. 5003 * 0b0..Disable. 5004 * 0b1..Enable. 5005 */ 5006 #define SYSCON_SYSAHBCLKCTRL_MRT(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_MRT_SHIFT)) & SYSCON_SYSAHBCLKCTRL_MRT_MASK) 5007 #define SYSCON_SYSAHBCLKCTRL_SPI0_MASK (0x800U) 5008 #define SYSCON_SYSAHBCLKCTRL_SPI0_SHIFT (11U) 5009 /*! SPI0 - Enables clock for SPI0. 5010 * 0b0..Disable. 5011 * 0b1..Enable. 5012 */ 5013 #define SYSCON_SYSAHBCLKCTRL_SPI0(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_SPI0_SHIFT)) & SYSCON_SYSAHBCLKCTRL_SPI0_MASK) 5014 #define SYSCON_SYSAHBCLKCTRL_SPI1_MASK (0x1000U) 5015 #define SYSCON_SYSAHBCLKCTRL_SPI1_SHIFT (12U) 5016 /*! SPI1 - Enables clock for SPI1. 5017 * 0b0..Disable. 5018 * 0b1..Enable. 5019 */ 5020 #define SYSCON_SYSAHBCLKCTRL_SPI1(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_SPI1_SHIFT)) & SYSCON_SYSAHBCLKCTRL_SPI1_MASK) 5021 #define SYSCON_SYSAHBCLKCTRL_CRC_MASK (0x2000U) 5022 #define SYSCON_SYSAHBCLKCTRL_CRC_SHIFT (13U) 5023 /*! CRC - Enables clock for CRC. 5024 * 0b0..Disable. 5025 * 0b1..Enable. 5026 */ 5027 #define SYSCON_SYSAHBCLKCTRL_CRC(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_CRC_SHIFT)) & SYSCON_SYSAHBCLKCTRL_CRC_MASK) 5028 #define SYSCON_SYSAHBCLKCTRL_UART0_MASK (0x4000U) 5029 #define SYSCON_SYSAHBCLKCTRL_UART0_SHIFT (14U) 5030 /*! UART0 - Enables clock for USART0. 5031 * 0b0..Disable. 5032 * 0b1..Enable. 5033 */ 5034 #define SYSCON_SYSAHBCLKCTRL_UART0(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_UART0_SHIFT)) & SYSCON_SYSAHBCLKCTRL_UART0_MASK) 5035 #define SYSCON_SYSAHBCLKCTRL_UART1_MASK (0x8000U) 5036 #define SYSCON_SYSAHBCLKCTRL_UART1_SHIFT (15U) 5037 /*! UART1 - Enables clock for USART1. 5038 * 0b0..Disable. 5039 * 0b1..Enable. 5040 */ 5041 #define SYSCON_SYSAHBCLKCTRL_UART1(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_UART1_SHIFT)) & SYSCON_SYSAHBCLKCTRL_UART1_MASK) 5042 #define SYSCON_SYSAHBCLKCTRL_UART2_MASK (0x10000U) 5043 #define SYSCON_SYSAHBCLKCTRL_UART2_SHIFT (16U) 5044 /*! UART2 - Enables clock for USART2. 5045 * 0b0..Disable. 5046 * 0b1..Enable. 5047 */ 5048 #define SYSCON_SYSAHBCLKCTRL_UART2(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_UART2_SHIFT)) & SYSCON_SYSAHBCLKCTRL_UART2_MASK) 5049 #define SYSCON_SYSAHBCLKCTRL_WWDT_MASK (0x20000U) 5050 #define SYSCON_SYSAHBCLKCTRL_WWDT_SHIFT (17U) 5051 /*! WWDT - Enables clock for WWDT. 5052 * 0b0..Disable. 5053 * 0b1..Enable. 5054 */ 5055 #define SYSCON_SYSAHBCLKCTRL_WWDT(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_WWDT_SHIFT)) & SYSCON_SYSAHBCLKCTRL_WWDT_MASK) 5056 #define SYSCON_SYSAHBCLKCTRL_IOCON_MASK (0x40000U) 5057 #define SYSCON_SYSAHBCLKCTRL_IOCON_SHIFT (18U) 5058 /*! IOCON - Enables clock for IOCON block. 5059 * 0b0..Disable. 5060 * 0b1..Enable. 5061 */ 5062 #define SYSCON_SYSAHBCLKCTRL_IOCON(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_IOCON_SHIFT)) & SYSCON_SYSAHBCLKCTRL_IOCON_MASK) 5063 #define SYSCON_SYSAHBCLKCTRL_ACMP_MASK (0x80000U) 5064 #define SYSCON_SYSAHBCLKCTRL_ACMP_SHIFT (19U) 5065 /*! ACMP - Enables clock to analog comparator. 5066 * 0b0..Disable. 5067 * 0b1..Enable. 5068 */ 5069 #define SYSCON_SYSAHBCLKCTRL_ACMP(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSAHBCLKCTRL_ACMP_SHIFT)) & SYSCON_SYSAHBCLKCTRL_ACMP_MASK) 5070 /*! @} */ 5071 5072 /*! @name UARTCLKDIV - USART clock divider */ 5073 /*! @{ */ 5074 #define SYSCON_UARTCLKDIV_DIV_MASK (0xFFU) 5075 #define SYSCON_UARTCLKDIV_DIV_SHIFT (0U) 5076 /*! DIV - USART fractional baud rate generator clock divider values. 0: Clock disabled. 1: Divide by 1. to 255: Divide by 255. 5077 */ 5078 #define SYSCON_UARTCLKDIV_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_UARTCLKDIV_DIV_SHIFT)) & SYSCON_UARTCLKDIV_DIV_MASK) 5079 /*! @} */ 5080 5081 /*! @name CLKOUTSEL - CLKOUT clock source select */ 5082 /*! @{ */ 5083 #define SYSCON_CLKOUTSEL_SEL_MASK (0x3U) 5084 #define SYSCON_CLKOUTSEL_SEL_SHIFT (0U) 5085 /*! SEL - CLKOUT clock source. 5086 * 0b00..IRC oscillator 5087 * 0b01..Crystal oscillator (SYSOSC) 5088 * 0b10..Watchdog oscillator 5089 * 0b11..Main clock 5090 */ 5091 #define SYSCON_CLKOUTSEL_SEL(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_CLKOUTSEL_SEL_SHIFT)) & SYSCON_CLKOUTSEL_SEL_MASK) 5092 /*! @} */ 5093 5094 /*! @name CLKOUTUEN - CLKOUT clock source update enable */ 5095 /*! @{ */ 5096 #define SYSCON_CLKOUTUEN_ENA_MASK (0x1U) 5097 #define SYSCON_CLKOUTUEN_ENA_SHIFT (0U) 5098 /*! ENA - Enable CLKOUT clock source update. 5099 * 0b0..No change 5100 * 0b1..Update clock source 5101 */ 5102 #define SYSCON_CLKOUTUEN_ENA(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_CLKOUTUEN_ENA_SHIFT)) & SYSCON_CLKOUTUEN_ENA_MASK) 5103 /*! @} */ 5104 5105 /*! @name CLKOUTDIV - clock out divider */ 5106 /*! @{ */ 5107 #define SYSCON_CLKOUTDIV_DIV_MASK (0xFFU) 5108 #define SYSCON_CLKOUTDIV_DIV_SHIFT (0U) 5109 /*! DIV - CLKOUT clock divider values. 0: Disable CLKOUT clock divider 1: Divide by 1 to 255: Divide by 255 5110 */ 5111 #define SYSCON_CLKOUTDIV_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_CLKOUTDIV_DIV_SHIFT)) & SYSCON_CLKOUTDIV_DIV_MASK) 5112 /*! @} */ 5113 5114 /*! @name UARTFRGDIV - USART common fractional generator divider value */ 5115 /*! @{ */ 5116 #define SYSCON_UARTFRGDIV_DIV_MASK (0xFFU) 5117 #define SYSCON_UARTFRGDIV_DIV_SHIFT (0U) 5118 /*! DIV - Denominator of the fractional divider. DIV is equal to the programmed value +1. Always set 5119 * to 0xFF to use with the fractional baud rate generator. 5120 */ 5121 #define SYSCON_UARTFRGDIV_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_UARTFRGDIV_DIV_SHIFT)) & SYSCON_UARTFRGDIV_DIV_MASK) 5122 /*! @} */ 5123 5124 /*! @name UARTFRGMULT - USART common fractional generator divider value */ 5125 /*! @{ */ 5126 #define SYSCON_UARTFRGMULT_MULT_MASK (0xFFU) 5127 #define SYSCON_UARTFRGMULT_MULT_SHIFT (0U) 5128 /*! MULT - Numerator of the fractional divider. MULT is equal to the programmed value. 5129 */ 5130 #define SYSCON_UARTFRGMULT_MULT(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_UARTFRGMULT_MULT_SHIFT)) & SYSCON_UARTFRGMULT_MULT_MASK) 5131 /*! @} */ 5132 5133 /*! @name EXTTRACECMD - External trace buffer command register */ 5134 /*! @{ */ 5135 #define SYSCON_EXTTRACECMD_START_MASK (0x1U) 5136 #define SYSCON_EXTTRACECMD_START_SHIFT (0U) 5137 /*! START - Trace start command. Writing a one to this bit sets the TSTART signal to the MTB to HIGH 5138 * and starts tracing if the TSTARTEN bit in the MTB master register is set to one as well. 5139 */ 5140 #define SYSCON_EXTTRACECMD_START(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_EXTTRACECMD_START_SHIFT)) & SYSCON_EXTTRACECMD_START_MASK) 5141 #define SYSCON_EXTTRACECMD_STOP_MASK (0x2U) 5142 #define SYSCON_EXTTRACECMD_STOP_SHIFT (1U) 5143 /*! STOP - Trace stop command. Writing a one to this bit sets the TSTOP signal in the MTB to HIGH 5144 * and stops tracing if the TSTOPEN bit in the MTB master register is set to one as well. 5145 */ 5146 #define SYSCON_EXTTRACECMD_STOP(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_EXTTRACECMD_STOP_SHIFT)) & SYSCON_EXTTRACECMD_STOP_MASK) 5147 /*! @} */ 5148 5149 /*! @name PIOPORCAP0 - POR captured PIO status 0 */ 5150 /*! @{ */ 5151 #define SYSCON_PIOPORCAP0_PIOSTAT_MASK (0x3FFFFU) 5152 #define SYSCON_PIOPORCAP0_PIOSTAT_SHIFT (0U) 5153 /*! PIOSTAT - State of PIO0_17 through PIO0_0 at power-on reset 5154 */ 5155 #define SYSCON_PIOPORCAP0_PIOSTAT(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PIOPORCAP0_PIOSTAT_SHIFT)) & SYSCON_PIOPORCAP0_PIOSTAT_MASK) 5156 /*! @} */ 5157 5158 /*! @name IOCONCLKDIV6 - Peripheral clock 6 to the IOCON block for programmable glitch filter */ 5159 /*! @{ */ 5160 #define SYSCON_IOCONCLKDIV6_DIV_MASK (0xFFU) 5161 #define SYSCON_IOCONCLKDIV6_DIV_SHIFT (0U) 5162 /*! DIV - IOCON glitch filter clock divider values 0: Disable IOCONFILTR_PCLK. 1: Divide by 1. to 255: Divide by 255. 5163 */ 5164 #define SYSCON_IOCONCLKDIV6_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_IOCONCLKDIV6_DIV_SHIFT)) & SYSCON_IOCONCLKDIV6_DIV_MASK) 5165 /*! @} */ 5166 5167 /*! @name IOCONCLKDIV5 - Peripheral clock 6 to the IOCON block for programmable glitch filter */ 5168 /*! @{ */ 5169 #define SYSCON_IOCONCLKDIV5_DIV_MASK (0xFFU) 5170 #define SYSCON_IOCONCLKDIV5_DIV_SHIFT (0U) 5171 /*! DIV - IOCON glitch filter clock divider values 0: Disable IOCONFILTR_PCLK. 1: Divide by 1. to 255: Divide by 255. 5172 */ 5173 #define SYSCON_IOCONCLKDIV5_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_IOCONCLKDIV5_DIV_SHIFT)) & SYSCON_IOCONCLKDIV5_DIV_MASK) 5174 /*! @} */ 5175 5176 /*! @name IOCONCLKDIV4 - Peripheral clock 4 to the IOCON block for programmable glitch filter */ 5177 /*! @{ */ 5178 #define SYSCON_IOCONCLKDIV4_DIV_MASK (0xFFU) 5179 #define SYSCON_IOCONCLKDIV4_DIV_SHIFT (0U) 5180 /*! DIV - IOCON glitch filter clock divider values 0: Disable IOCONFILTR_PCLK. 1: Divide by 1. to 255: Divide by 255. 5181 */ 5182 #define SYSCON_IOCONCLKDIV4_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_IOCONCLKDIV4_DIV_SHIFT)) & SYSCON_IOCONCLKDIV4_DIV_MASK) 5183 /*! @} */ 5184 5185 /*! @name IOCONCLKDIV3 - Peripheral clock 3 to the IOCON block for programmable glitch filter */ 5186 /*! @{ */ 5187 #define SYSCON_IOCONCLKDIV3_DIV_MASK (0xFFU) 5188 #define SYSCON_IOCONCLKDIV3_DIV_SHIFT (0U) 5189 /*! DIV - IOCON glitch filter clock divider values 0: Disable IOCONFILTR_PCLK. 1: Divide by 1. to 255: Divide by 255. 5190 */ 5191 #define SYSCON_IOCONCLKDIV3_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_IOCONCLKDIV3_DIV_SHIFT)) & SYSCON_IOCONCLKDIV3_DIV_MASK) 5192 /*! @} */ 5193 5194 /*! @name IOCONCLKDIV2 - Peripheral clock 2 to the IOCON block for programmable glitch filter */ 5195 /*! @{ */ 5196 #define SYSCON_IOCONCLKDIV2_DIV_MASK (0xFFU) 5197 #define SYSCON_IOCONCLKDIV2_DIV_SHIFT (0U) 5198 /*! DIV - IOCON glitch filter clock divider values 0: Disable IOCONFILTR_PCLK. 1: Divide by 1. to 255: Divide by 255. 5199 */ 5200 #define SYSCON_IOCONCLKDIV2_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_IOCONCLKDIV2_DIV_SHIFT)) & SYSCON_IOCONCLKDIV2_DIV_MASK) 5201 /*! @} */ 5202 5203 /*! @name IOCONCLKDIV1 - Peripheral clock 1 to the IOCON block for programmable glitch filter */ 5204 /*! @{ */ 5205 #define SYSCON_IOCONCLKDIV1_DIV_MASK (0xFFU) 5206 #define SYSCON_IOCONCLKDIV1_DIV_SHIFT (0U) 5207 /*! DIV - IOCON glitch filter clock divider values 0: Disable IOCONFILTR_PCLK. 1: Divide by 1. to 255: Divide by 255. 5208 */ 5209 #define SYSCON_IOCONCLKDIV1_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_IOCONCLKDIV1_DIV_SHIFT)) & SYSCON_IOCONCLKDIV1_DIV_MASK) 5210 /*! @} */ 5211 5212 /*! @name IOCONCLKDIV0 - Peripheral clock 0 to the IOCON block for programmable glitch filter */ 5213 /*! @{ */ 5214 #define SYSCON_IOCONCLKDIV0_DIV_MASK (0xFFU) 5215 #define SYSCON_IOCONCLKDIV0_DIV_SHIFT (0U) 5216 /*! DIV - IOCON glitch filter clock divider values 0: Disable IOCONFILTR_PCLK. 1: Divide by 1. to 255: Divide by 255. 5217 */ 5218 #define SYSCON_IOCONCLKDIV0_DIV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_IOCONCLKDIV0_DIV_SHIFT)) & SYSCON_IOCONCLKDIV0_DIV_MASK) 5219 /*! @} */ 5220 5221 /*! @name BODCTRL - BOD control register */ 5222 /*! @{ */ 5223 #define SYSCON_BODCTRL_BODRSTLEV_MASK (0x3U) 5224 #define SYSCON_BODCTRL_BODRSTLEV_SHIFT (0U) 5225 /*! BODRSTLEV - BOD reset level 5226 * 0b00..Reserved 5227 * 0b01..Level 1 5228 * 0b10..Level 2 5229 * 0b11..Level 3 5230 */ 5231 #define SYSCON_BODCTRL_BODRSTLEV(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_BODCTRL_BODRSTLEV_SHIFT)) & SYSCON_BODCTRL_BODRSTLEV_MASK) 5232 #define SYSCON_BODCTRL_BODINTVAL_MASK (0xCU) 5233 #define SYSCON_BODCTRL_BODINTVAL_SHIFT (2U) 5234 /*! BODINTVAL - BOD interrupt level 5235 * 0b00..Reserved 5236 * 0b01..Level 1 5237 * 0b10..Level 2 5238 * 0b11..Level 3 5239 */ 5240 #define SYSCON_BODCTRL_BODINTVAL(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_BODCTRL_BODINTVAL_SHIFT)) & SYSCON_BODCTRL_BODINTVAL_MASK) 5241 #define SYSCON_BODCTRL_BODRSTENA_MASK (0x10U) 5242 #define SYSCON_BODCTRL_BODRSTENA_SHIFT (4U) 5243 /*! BODRSTENA - BOD reset enable 5244 * 0b0..Disable reset function. 5245 * 0b1..Enable reset function. 5246 */ 5247 #define SYSCON_BODCTRL_BODRSTENA(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_BODCTRL_BODRSTENA_SHIFT)) & SYSCON_BODCTRL_BODRSTENA_MASK) 5248 /*! @} */ 5249 5250 /*! @name SYSTCKCAL - System tick timer calibration register */ 5251 /*! @{ */ 5252 #define SYSCON_SYSTCKCAL_CAL_MASK (0x3FFFFFFU) 5253 #define SYSCON_SYSTCKCAL_CAL_SHIFT (0U) 5254 /*! CAL - System tick timer calibration value. 5255 */ 5256 #define SYSCON_SYSTCKCAL_CAL(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_SYSTCKCAL_CAL_SHIFT)) & SYSCON_SYSTCKCAL_CAL_MASK) 5257 /*! @} */ 5258 5259 /*! @name IRQLATENCY - IRQ latency register */ 5260 /*! @{ */ 5261 #define SYSCON_IRQLATENCY_LATENCY_MASK (0xFFU) 5262 #define SYSCON_IRQLATENCY_LATENCY_SHIFT (0U) 5263 /*! LATENCY - 8-bit latency value. 5264 */ 5265 #define SYSCON_IRQLATENCY_LATENCY(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_IRQLATENCY_LATENCY_SHIFT)) & SYSCON_IRQLATENCY_LATENCY_MASK) 5266 /*! @} */ 5267 5268 /*! @name NMISRC - NMI source selection register */ 5269 /*! @{ */ 5270 #define SYSCON_NMISRC_IRQN_MASK (0x1FU) 5271 #define SYSCON_NMISRC_IRQN_SHIFT (0U) 5272 /*! IRQN - The IRQ number of the interrupt that acts as the Non-Maskable Interrupt (NMI) if bit 31 is 1 5273 */ 5274 #define SYSCON_NMISRC_IRQN(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_NMISRC_IRQN_SHIFT)) & SYSCON_NMISRC_IRQN_MASK) 5275 #define SYSCON_NMISRC_NMIEN_MASK (0x80000000U) 5276 #define SYSCON_NMISRC_NMIEN_SHIFT (31U) 5277 /*! NMIEN - Write a 1 to this bit to enable the Non-Maskable Interrupt (NMI) source selected by bits 4:0. 5278 */ 5279 #define SYSCON_NMISRC_NMIEN(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_NMISRC_NMIEN_SHIFT)) & SYSCON_NMISRC_NMIEN_MASK) 5280 /*! @} */ 5281 5282 /*! @name PINTSEL - Pin interrupt select registers N */ 5283 /*! @{ */ 5284 #define SYSCON_PINTSEL_INTPIN_MASK (0x3FU) 5285 #define SYSCON_PINTSEL_INTPIN_SHIFT (0U) 5286 /*! INTPIN - Pin number select for pin interrupt or pattern match engine input. (PIO0_0 to PIO0_17 correspond to numbers 0 to 17). 5287 */ 5288 #define SYSCON_PINTSEL_INTPIN(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PINTSEL_INTPIN_SHIFT)) & SYSCON_PINTSEL_INTPIN_MASK) 5289 /*! @} */ 5290 5291 /* The count of SYSCON_PINTSEL */ 5292 #define SYSCON_PINTSEL_COUNT (8U) 5293 5294 /*! @name STARTERP0 - Start logic 0 pin wake-up enable register 0 */ 5295 /*! @{ */ 5296 #define SYSCON_STARTERP0_PINT0_MASK (0x1U) 5297 #define SYSCON_STARTERP0_PINT0_SHIFT (0U) 5298 /*! PINT0 - GPIO pin interrupt 0 wake-up 5299 * 0b0..Disabled 5300 * 0b1..Enabled 5301 */ 5302 #define SYSCON_STARTERP0_PINT0(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP0_PINT0_SHIFT)) & SYSCON_STARTERP0_PINT0_MASK) 5303 #define SYSCON_STARTERP0_PINT1_MASK (0x2U) 5304 #define SYSCON_STARTERP0_PINT1_SHIFT (1U) 5305 /*! PINT1 - GPIO pin interrupt 1 wake-up 5306 * 0b0..Disabled 5307 * 0b1..Enabled 5308 */ 5309 #define SYSCON_STARTERP0_PINT1(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP0_PINT1_SHIFT)) & SYSCON_STARTERP0_PINT1_MASK) 5310 #define SYSCON_STARTERP0_PINT2_MASK (0x4U) 5311 #define SYSCON_STARTERP0_PINT2_SHIFT (2U) 5312 /*! PINT2 - GPIO pin interrupt 2 wake-up 5313 * 0b0..Disabled 5314 * 0b1..Enabled 5315 */ 5316 #define SYSCON_STARTERP0_PINT2(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP0_PINT2_SHIFT)) & SYSCON_STARTERP0_PINT2_MASK) 5317 #define SYSCON_STARTERP0_PINT3_MASK (0x8U) 5318 #define SYSCON_STARTERP0_PINT3_SHIFT (3U) 5319 /*! PINT3 - GPIO pin interrupt 3 wake-up 5320 * 0b0..Disabled 5321 * 0b1..Enabled 5322 */ 5323 #define SYSCON_STARTERP0_PINT3(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP0_PINT3_SHIFT)) & SYSCON_STARTERP0_PINT3_MASK) 5324 #define SYSCON_STARTERP0_PINT4_MASK (0x10U) 5325 #define SYSCON_STARTERP0_PINT4_SHIFT (4U) 5326 /*! PINT4 - GPIO pin interrupt 4 wake-up 5327 * 0b0..Disabled 5328 * 0b1..Enabled 5329 */ 5330 #define SYSCON_STARTERP0_PINT4(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP0_PINT4_SHIFT)) & SYSCON_STARTERP0_PINT4_MASK) 5331 #define SYSCON_STARTERP0_PINT5_MASK (0x20U) 5332 #define SYSCON_STARTERP0_PINT5_SHIFT (5U) 5333 /*! PINT5 - GPIO pin interrupt 5 wake-up 5334 * 0b0..Disabled 5335 * 0b1..Enabled 5336 */ 5337 #define SYSCON_STARTERP0_PINT5(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP0_PINT5_SHIFT)) & SYSCON_STARTERP0_PINT5_MASK) 5338 #define SYSCON_STARTERP0_PINT6_MASK (0x40U) 5339 #define SYSCON_STARTERP0_PINT6_SHIFT (6U) 5340 /*! PINT6 - GPIO pin interrupt 6 wake-up 5341 * 0b0..Disabled 5342 * 0b1..Enabled 5343 */ 5344 #define SYSCON_STARTERP0_PINT6(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP0_PINT6_SHIFT)) & SYSCON_STARTERP0_PINT6_MASK) 5345 #define SYSCON_STARTERP0_PINT7_MASK (0x80U) 5346 #define SYSCON_STARTERP0_PINT7_SHIFT (7U) 5347 /*! PINT7 - GPIO pin interrupt 7 wake-up 5348 * 0b0..Disabled 5349 * 0b1..Enabled 5350 */ 5351 #define SYSCON_STARTERP0_PINT7(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP0_PINT7_SHIFT)) & SYSCON_STARTERP0_PINT7_MASK) 5352 /*! @} */ 5353 5354 /*! @name STARTERP1 - Start logic 0 pin wake-up enable register 1 */ 5355 /*! @{ */ 5356 #define SYSCON_STARTERP1_SPI0_MASK (0x1U) 5357 #define SYSCON_STARTERP1_SPI0_SHIFT (0U) 5358 /*! SPI0 - SPI0 interrupt wake-up 5359 * 0b0..Disabled 5360 * 0b1..Enabled 5361 */ 5362 #define SYSCON_STARTERP1_SPI0(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP1_SPI0_SHIFT)) & SYSCON_STARTERP1_SPI0_MASK) 5363 #define SYSCON_STARTERP1_SPI1_MASK (0x2U) 5364 #define SYSCON_STARTERP1_SPI1_SHIFT (1U) 5365 /*! SPI1 - SPI1 interrupt wake-up 5366 * 0b0..Disabled 5367 * 0b1..Enabled 5368 */ 5369 #define SYSCON_STARTERP1_SPI1(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP1_SPI1_SHIFT)) & SYSCON_STARTERP1_SPI1_MASK) 5370 #define SYSCON_STARTERP1_USART0_MASK (0x8U) 5371 #define SYSCON_STARTERP1_USART0_SHIFT (3U) 5372 /*! USART0 - USART0 interrupt wake-up. Configure USART in synchronous slave mode. 5373 * 0b0..Disabled 5374 * 0b1..Enabled 5375 */ 5376 #define SYSCON_STARTERP1_USART0(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP1_USART0_SHIFT)) & SYSCON_STARTERP1_USART0_MASK) 5377 #define SYSCON_STARTERP1_USART1_MASK (0x10U) 5378 #define SYSCON_STARTERP1_USART1_SHIFT (4U) 5379 /*! USART1 - USART1 interrupt wake-up. Configure USART in synchronous slave mode. 5380 * 0b0..Disabled 5381 * 0b1..Enabled 5382 */ 5383 #define SYSCON_STARTERP1_USART1(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP1_USART1_SHIFT)) & SYSCON_STARTERP1_USART1_MASK) 5384 #define SYSCON_STARTERP1_USART2_MASK (0x20U) 5385 #define SYSCON_STARTERP1_USART2_SHIFT (5U) 5386 /*! USART2 - USART2 interrupt wake-up. Configure USART in synchronous slave mode. 5387 * 0b0..Disabled 5388 * 0b1..Enabled 5389 */ 5390 #define SYSCON_STARTERP1_USART2(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP1_USART2_SHIFT)) & SYSCON_STARTERP1_USART2_MASK) 5391 #define SYSCON_STARTERP1_I2C0_MASK (0x100U) 5392 #define SYSCON_STARTERP1_I2C0_SHIFT (8U) 5393 /*! I2C0 - I2C0 interrupt wake-up. 5394 * 0b0..Disabled 5395 * 0b1..Enabled 5396 */ 5397 #define SYSCON_STARTERP1_I2C0(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP1_I2C0_SHIFT)) & SYSCON_STARTERP1_I2C0_MASK) 5398 #define SYSCON_STARTERP1_WWDT_MASK (0x1000U) 5399 #define SYSCON_STARTERP1_WWDT_SHIFT (12U) 5400 /*! WWDT - WWDT interrupt wake-up 5401 * 0b0..Disabled 5402 * 0b1..Enabled 5403 */ 5404 #define SYSCON_STARTERP1_WWDT(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP1_WWDT_SHIFT)) & SYSCON_STARTERP1_WWDT_MASK) 5405 #define SYSCON_STARTERP1_BOD_MASK (0x2000U) 5406 #define SYSCON_STARTERP1_BOD_SHIFT (13U) 5407 /*! BOD - BOD interrupt wake-up 5408 * 0b0..Disabled 5409 * 0b1..Enabled 5410 */ 5411 #define SYSCON_STARTERP1_BOD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP1_BOD_SHIFT)) & SYSCON_STARTERP1_BOD_MASK) 5412 #define SYSCON_STARTERP1_WKT_MASK (0x8000U) 5413 #define SYSCON_STARTERP1_WKT_SHIFT (15U) 5414 /*! WKT - Self-wake-up timer interrupt wake-up 5415 * 0b0..Disabled 5416 * 0b1..Enabled 5417 */ 5418 #define SYSCON_STARTERP1_WKT(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_STARTERP1_WKT_SHIFT)) & SYSCON_STARTERP1_WKT_MASK) 5419 /*! @} */ 5420 5421 /*! @name PDSLEEPCFG - Deep-sleep configuration register */ 5422 /*! @{ */ 5423 #define SYSCON_PDSLEEPCFG_BOD_PD_MASK (0x8U) 5424 #define SYSCON_PDSLEEPCFG_BOD_PD_SHIFT (3U) 5425 /*! BOD_PD - BOD power-down control for Deep-sleep and Power-down mode 5426 * 0b0..powered 5427 * 0b1..powered down 5428 */ 5429 #define SYSCON_PDSLEEPCFG_BOD_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDSLEEPCFG_BOD_PD_SHIFT)) & SYSCON_PDSLEEPCFG_BOD_PD_MASK) 5430 #define SYSCON_PDSLEEPCFG_WDTOSC_PD_MASK (0x40U) 5431 #define SYSCON_PDSLEEPCFG_WDTOSC_PD_SHIFT (6U) 5432 /*! WDTOSC_PD - Watchdog oscillator power-down control for Deep-sleep and Power-down mode. Changing 5433 * this bit to powered-down has no effect when the LOCK bit in the WWDT MOD register is set. In 5434 * this case, the watchdog oscillator is always running. 5435 * 0b0..Disabled 5436 * 0b1..Enabled 5437 */ 5438 #define SYSCON_PDSLEEPCFG_WDTOSC_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDSLEEPCFG_WDTOSC_PD_SHIFT)) & SYSCON_PDSLEEPCFG_WDTOSC_PD_MASK) 5439 /*! @} */ 5440 5441 /*! @name PDAWAKECFG - Wake-up configuration register */ 5442 /*! @{ */ 5443 #define SYSCON_PDAWAKECFG_IRCOUT_PD_MASK (0x1U) 5444 #define SYSCON_PDAWAKECFG_IRCOUT_PD_SHIFT (0U) 5445 /*! IRCOUT_PD - IRC oscillator output wake-up configuration 5446 * 0b0..powered 5447 * 0b1..powered down 5448 */ 5449 #define SYSCON_PDAWAKECFG_IRCOUT_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDAWAKECFG_IRCOUT_PD_SHIFT)) & SYSCON_PDAWAKECFG_IRCOUT_PD_MASK) 5450 #define SYSCON_PDAWAKECFG_IRC_PD_MASK (0x2U) 5451 #define SYSCON_PDAWAKECFG_IRC_PD_SHIFT (1U) 5452 /*! IRC_PD - IRC oscillator power-down wake-up configuration 5453 * 0b0..powered 5454 * 0b1..powered down 5455 */ 5456 #define SYSCON_PDAWAKECFG_IRC_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDAWAKECFG_IRC_PD_SHIFT)) & SYSCON_PDAWAKECFG_IRC_PD_MASK) 5457 #define SYSCON_PDAWAKECFG_FLASH_PD_MASK (0x4U) 5458 #define SYSCON_PDAWAKECFG_FLASH_PD_SHIFT (2U) 5459 /*! FLASH_PD - Flash wake-up configuration 5460 * 0b0..powered 5461 * 0b1..powered down 5462 */ 5463 #define SYSCON_PDAWAKECFG_FLASH_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDAWAKECFG_FLASH_PD_SHIFT)) & SYSCON_PDAWAKECFG_FLASH_PD_MASK) 5464 #define SYSCON_PDAWAKECFG_BOD_PD_MASK (0x8U) 5465 #define SYSCON_PDAWAKECFG_BOD_PD_SHIFT (3U) 5466 /*! BOD_PD - BOD wake-up configuration 5467 * 0b0..powered 5468 * 0b1..powered down 5469 */ 5470 #define SYSCON_PDAWAKECFG_BOD_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDAWAKECFG_BOD_PD_SHIFT)) & SYSCON_PDAWAKECFG_BOD_PD_MASK) 5471 #define SYSCON_PDAWAKECFG_SYSOSC_PD_MASK (0x20U) 5472 #define SYSCON_PDAWAKECFG_SYSOSC_PD_SHIFT (5U) 5473 /*! SYSOSC_PD - Crystal oscillator wake-up configuration 5474 * 0b0..powered 5475 * 0b1..powered down 5476 */ 5477 #define SYSCON_PDAWAKECFG_SYSOSC_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDAWAKECFG_SYSOSC_PD_SHIFT)) & SYSCON_PDAWAKECFG_SYSOSC_PD_MASK) 5478 #define SYSCON_PDAWAKECFG_WDTOSC_PD_MASK (0x40U) 5479 #define SYSCON_PDAWAKECFG_WDTOSC_PD_SHIFT (6U) 5480 /*! WDTOSC_PD - Watchdog oscillator wake-up configuration. Changing this bit to powered-down has no 5481 * effect when the LOCK bit in the WWDT MOD register is set. In this case, the watchdog 5482 * oscillator is always running 5483 * 0b0..Disabled 5484 * 0b1..Enabled 5485 */ 5486 #define SYSCON_PDAWAKECFG_WDTOSC_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDAWAKECFG_WDTOSC_PD_SHIFT)) & SYSCON_PDAWAKECFG_WDTOSC_PD_MASK) 5487 #define SYSCON_PDAWAKECFG_SYSPLL_PD_MASK (0x80U) 5488 #define SYSCON_PDAWAKECFG_SYSPLL_PD_SHIFT (7U) 5489 /*! SYSPLL_PD - System PLL wake-up configuration 5490 * 0b0..Disabled 5491 * 0b1..Enabled 5492 */ 5493 #define SYSCON_PDAWAKECFG_SYSPLL_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDAWAKECFG_SYSPLL_PD_SHIFT)) & SYSCON_PDAWAKECFG_SYSPLL_PD_MASK) 5494 #define SYSCON_PDAWAKECFG_ACMP_MASK (0x8000U) 5495 #define SYSCON_PDAWAKECFG_ACMP_SHIFT (15U) 5496 /*! ACMP - Analog comparator wake-up configuration 5497 * 0b0..Disabled 5498 * 0b1..Enabled 5499 */ 5500 #define SYSCON_PDAWAKECFG_ACMP(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDAWAKECFG_ACMP_SHIFT)) & SYSCON_PDAWAKECFG_ACMP_MASK) 5501 /*! @} */ 5502 5503 /*! @name PDRUNCFG - Power configuration register */ 5504 /*! @{ */ 5505 #define SYSCON_PDRUNCFG_IRCOUT_PD_MASK (0x1U) 5506 #define SYSCON_PDRUNCFG_IRCOUT_PD_SHIFT (0U) 5507 /*! IRCOUT_PD - IRC oscillator output wake-up configuration 5508 * 0b0..powered 5509 * 0b1..powered down 5510 */ 5511 #define SYSCON_PDRUNCFG_IRCOUT_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDRUNCFG_IRCOUT_PD_SHIFT)) & SYSCON_PDRUNCFG_IRCOUT_PD_MASK) 5512 #define SYSCON_PDRUNCFG_IRC_PD_MASK (0x2U) 5513 #define SYSCON_PDRUNCFG_IRC_PD_SHIFT (1U) 5514 /*! IRC_PD - IRC oscillator power-down wake-up configuration 5515 * 0b0..powered 5516 * 0b1..powered down 5517 */ 5518 #define SYSCON_PDRUNCFG_IRC_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDRUNCFG_IRC_PD_SHIFT)) & SYSCON_PDRUNCFG_IRC_PD_MASK) 5519 #define SYSCON_PDRUNCFG_FLASH_PD_MASK (0x4U) 5520 #define SYSCON_PDRUNCFG_FLASH_PD_SHIFT (2U) 5521 /*! FLASH_PD - Flash wake-up configuration 5522 * 0b0..powered 5523 * 0b1..powered down 5524 */ 5525 #define SYSCON_PDRUNCFG_FLASH_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDRUNCFG_FLASH_PD_SHIFT)) & SYSCON_PDRUNCFG_FLASH_PD_MASK) 5526 #define SYSCON_PDRUNCFG_BOD_PD_MASK (0x8U) 5527 #define SYSCON_PDRUNCFG_BOD_PD_SHIFT (3U) 5528 /*! BOD_PD - BOD wake-up configuration 5529 * 0b0..powered 5530 * 0b1..powered down 5531 */ 5532 #define SYSCON_PDRUNCFG_BOD_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDRUNCFG_BOD_PD_SHIFT)) & SYSCON_PDRUNCFG_BOD_PD_MASK) 5533 #define SYSCON_PDRUNCFG_SYSOSC_PD_MASK (0x20U) 5534 #define SYSCON_PDRUNCFG_SYSOSC_PD_SHIFT (5U) 5535 /*! SYSOSC_PD - Crystal oscillator wake-up configuration 5536 * 0b0..powered 5537 * 0b1..powered down 5538 */ 5539 #define SYSCON_PDRUNCFG_SYSOSC_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDRUNCFG_SYSOSC_PD_SHIFT)) & SYSCON_PDRUNCFG_SYSOSC_PD_MASK) 5540 #define SYSCON_PDRUNCFG_WDTOSC_PD_MASK (0x40U) 5541 #define SYSCON_PDRUNCFG_WDTOSC_PD_SHIFT (6U) 5542 /*! WDTOSC_PD - Watchdog oscillator wake-up configuration. Changing this bit to powered-down has no 5543 * effect when the LOCK bit in the WWDT MOD register is set. In this case, the watchdog 5544 * oscillator is always running 5545 * 0b0..Disabled 5546 * 0b1..Enabled 5547 */ 5548 #define SYSCON_PDRUNCFG_WDTOSC_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDRUNCFG_WDTOSC_PD_SHIFT)) & SYSCON_PDRUNCFG_WDTOSC_PD_MASK) 5549 #define SYSCON_PDRUNCFG_SYSPLL_PD_MASK (0x80U) 5550 #define SYSCON_PDRUNCFG_SYSPLL_PD_SHIFT (7U) 5551 /*! SYSPLL_PD - System PLL wake-up configuration 5552 * 0b0..Disabled 5553 * 0b1..Enabled 5554 */ 5555 #define SYSCON_PDRUNCFG_SYSPLL_PD(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDRUNCFG_SYSPLL_PD_SHIFT)) & SYSCON_PDRUNCFG_SYSPLL_PD_MASK) 5556 #define SYSCON_PDRUNCFG_ACMP_MASK (0x8000U) 5557 #define SYSCON_PDRUNCFG_ACMP_SHIFT (15U) 5558 /*! ACMP - Analog comparator wake-up configuration 5559 * 0b0..Disabled 5560 * 0b1..Enabled 5561 */ 5562 #define SYSCON_PDRUNCFG_ACMP(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_PDRUNCFG_ACMP_SHIFT)) & SYSCON_PDRUNCFG_ACMP_MASK) 5563 /*! @} */ 5564 5565 /*! @name DEVICE_ID - Part ID register */ 5566 /*! @{ */ 5567 #define SYSCON_DEVICE_ID_DEVICEID_MASK (0xFFFFFFFFU) 5568 #define SYSCON_DEVICE_ID_DEVICEID_SHIFT (0U) 5569 /*! DEVICEID - Part ID 5570 */ 5571 #define SYSCON_DEVICE_ID_DEVICEID(x) (((uint32_t)(((uint32_t)(x)) << SYSCON_DEVICE_ID_DEVICEID_SHIFT)) & SYSCON_DEVICE_ID_DEVICEID_MASK) 5572 /*! @} */ 5573 5574 5575 /*! 5576 * @} 5577 */ /* end of group SYSCON_Register_Masks */ 5578 5579 5580 /* SYSCON - Peripheral instance base addresses */ 5581 /** Peripheral SYSCON base address */ 5582 #define SYSCON_BASE (0x40048000u) 5583 /** Peripheral SYSCON base pointer */ 5584 #define SYSCON ((SYSCON_Type *)SYSCON_BASE) 5585 /** Array initializer of SYSCON peripheral base addresses */ 5586 #define SYSCON_BASE_ADDRS { SYSCON_BASE } 5587 /** Array initializer of SYSCON peripheral base pointers */ 5588 #define SYSCON_BASE_PTRS { SYSCON } 5589 5590 /*! 5591 * @} 5592 */ /* end of group SYSCON_Peripheral_Access_Layer */ 5593 5594 5595 /* ---------------------------------------------------------------------------- 5596 -- USART Peripheral Access Layer 5597 ---------------------------------------------------------------------------- */ 5598 5599 /*! 5600 * @addtogroup USART_Peripheral_Access_Layer USART Peripheral Access Layer 5601 * @{ 5602 */ 5603 5604 /** USART - Register Layout Typedef */ 5605 typedef struct { 5606 __IO uint32_t CFG; /**< USART Configuration register. Basic USART configuration settings that typically are not changed during operation., offset: 0x0 */ 5607 __IO uint32_t CTL; /**< USART Control register. USART control settings that are more likely to change during operation., offset: 0x4 */ 5608 __IO uint32_t STAT; /**< USART Status register. The complete status value can be read here. Writing ones clears some bits in the register. Some bits can be cleared by writing a 1 to them., offset: 0x8 */ 5609 __IO uint32_t INTENSET; /**< Interrupt Enable read and Set register. Contains an individual interrupt enable bit for each potential USART interrupt. A complete value may be read from this register. Writing a 1 to any implemented bit position causes that bit to be set., offset: 0xC */ 5610 __O uint32_t INTENCLR; /**< Interrupt Enable Clear register. Allows clearing any combination of bits in the INTENSET register. Writing a 1 to any implemented bit position causes the corresponding bit to be cleared., offset: 0x10 */ 5611 __I uint32_t RXDAT; /**< Receiver Data register. Contains the last character received., offset: 0x14 */ 5612 __I uint32_t RXDATSTAT; /**< Receiver Data with Status register. Combines the last character received with the current USART receive status. Allows DMA or software to recover incoming data and status together., offset: 0x18 */ 5613 __IO uint32_t TXDAT; /**< Transmit Data register. Data to be transmitted is written here., offset: 0x1C */ 5614 __IO uint32_t BRG; /**< Baud Rate Generator register. 16-bit integer baud rate divisor value., offset: 0x20 */ 5615 __I uint32_t INTSTAT; /**< Interrupt status register. Reflects interrupts that are currently enabled., offset: 0x24 */ 5616 } USART_Type; 5617 5618 /* ---------------------------------------------------------------------------- 5619 -- USART Register Masks 5620 ---------------------------------------------------------------------------- */ 5621 5622 /*! 5623 * @addtogroup USART_Register_Masks USART Register Masks 5624 * @{ 5625 */ 5626 5627 /*! @name CFG - USART Configuration register. Basic USART configuration settings that typically are not changed during operation. */ 5628 /*! @{ */ 5629 #define USART_CFG_ENABLE_MASK (0x1U) 5630 #define USART_CFG_ENABLE_SHIFT (0U) 5631 /*! ENABLE - USART Enable. 5632 * 0b0..Disabled. The USART is disabled and the internal state machine and counters are reset. While Enable = 0, 5633 * all USART interrupts and DMA transfers are disabled. When Enable is set again, CFG and most other control 5634 * bits remain unchanged. When re-enabled, the USART will immediately be ready to transmit because the 5635 * transmitter has been reset and is therefore available. 5636 * 0b1..Enabled. The USART is enabled for operation. 5637 */ 5638 #define USART_CFG_ENABLE(x) (((uint32_t)(((uint32_t)(x)) << USART_CFG_ENABLE_SHIFT)) & USART_CFG_ENABLE_MASK) 5639 #define USART_CFG_DATALEN_MASK (0xCU) 5640 #define USART_CFG_DATALEN_SHIFT (2U) 5641 /*! DATALEN - Selects the data size for the USART. 5642 * 0b00..7 bit Data length. 5643 * 0b01..8 bit Data length. 5644 * 0b10..9 bit data length. The 9th bit is commonly used for addressing in multidrop mode. See the ADDRDET bit in the CTL register. 5645 * 0b11..Reserved. 5646 */ 5647 #define USART_CFG_DATALEN(x) (((uint32_t)(((uint32_t)(x)) << USART_CFG_DATALEN_SHIFT)) & USART_CFG_DATALEN_MASK) 5648 #define USART_CFG_PARITYSEL_MASK (0x30U) 5649 #define USART_CFG_PARITYSEL_SHIFT (4U) 5650 /*! PARITYSEL - Selects what type of parity is used by the USART. 5651 * 0b00..No parity. 5652 * 0b01..Reserved. 5653 * 0b10..Even parity. Adds a bit to each character such that the number of 1s in a transmitted character is even, 5654 * and the number of 1s in a received character is expected to be even. 5655 * 0b11..Odd parity. Adds a bit to each character such that the number of 1s in a transmitted character is odd, 5656 * and the number of 1s in a received character is expected to be odd. 5657 */ 5658 #define USART_CFG_PARITYSEL(x) (((uint32_t)(((uint32_t)(x)) << USART_CFG_PARITYSEL_SHIFT)) & USART_CFG_PARITYSEL_MASK) 5659 #define USART_CFG_STOPLEN_MASK (0x40U) 5660 #define USART_CFG_STOPLEN_SHIFT (6U) 5661 /*! STOPLEN - Number of stop bits appended to transmitted data. Only a single stop bit is required for received data. 5662 * 0b0..1 stop bit. 5663 * 0b1..2 stop bits. This setting should only be used for asynchronous communication. 5664 */ 5665 #define USART_CFG_STOPLEN(x) (((uint32_t)(((uint32_t)(x)) << USART_CFG_STOPLEN_SHIFT)) & USART_CFG_STOPLEN_MASK) 5666 #define USART_CFG_CTSEN_MASK (0x200U) 5667 #define USART_CFG_CTSEN_SHIFT (9U) 5668 /*! CTSEN - CTS Enable. Determines whether CTS is used for flow control. CTS can be from the input 5669 * pin, or from the USART's own RTS if loopback mode is enabled. 5670 * 0b0..No flow control. The transmitter does not receive any automatic flow control signal. 5671 * 0b1..Flow control enabled. The transmitter uses the CTS input (or RTS output in loopback mode) for flow control purposes. 5672 */ 5673 #define USART_CFG_CTSEN(x) (((uint32_t)(((uint32_t)(x)) << USART_CFG_CTSEN_SHIFT)) & USART_CFG_CTSEN_MASK) 5674 #define USART_CFG_SYNCEN_MASK (0x800U) 5675 #define USART_CFG_SYNCEN_SHIFT (11U) 5676 /*! SYNCEN - Selects synchronous or asynchronous operation. 5677 * 0b0..Asynchronous mode. 5678 * 0b1..Synchronous mode. 5679 */ 5680 #define USART_CFG_SYNCEN(x) (((uint32_t)(((uint32_t)(x)) << USART_CFG_SYNCEN_SHIFT)) & USART_CFG_SYNCEN_MASK) 5681 #define USART_CFG_CLKPOL_MASK (0x1000U) 5682 #define USART_CFG_CLKPOL_SHIFT (12U) 5683 /*! CLKPOL - Selects the clock polarity and sampling edge of received data in synchronous mode. 5684 * 0b0..Falling edge. Un_RXD is sampled on the falling edge of SCLK. 5685 * 0b1..Rising edge. Un_RXD is sampled on the rising edge of SCLK. 5686 */ 5687 #define USART_CFG_CLKPOL(x) (((uint32_t)(((uint32_t)(x)) << USART_CFG_CLKPOL_SHIFT)) & USART_CFG_CLKPOL_MASK) 5688 #define USART_CFG_SYNCMST_MASK (0x4000U) 5689 #define USART_CFG_SYNCMST_SHIFT (14U) 5690 /*! SYNCMST - Synchronous mode Master select. 5691 * 0b0..Slave. When synchronous mode is enabled, the USART is a slave. 5692 * 0b1..Master. When synchronous mode is enabled, the USART is a master. 5693 */ 5694 #define USART_CFG_SYNCMST(x) (((uint32_t)(((uint32_t)(x)) << USART_CFG_SYNCMST_SHIFT)) & USART_CFG_SYNCMST_MASK) 5695 #define USART_CFG_LOOP_MASK (0x8000U) 5696 #define USART_CFG_LOOP_SHIFT (15U) 5697 /*! LOOP - Selects data loopback mode. 5698 * 0b0..Normal operation. 5699 * 0b1..Loopback mode. This provides a mechanism to perform diagnostic loopback testing for USART data. Serial 5700 * data from the transmitter (Un_TXD) is connected internally to serial input of the receive (Un_RXD). Un_TXD 5701 * and Un_RTS activity will also appear on external pins if these functions are configured to appear on device 5702 * pins. The receiver RTS signal is also looped back to CTS and performs flow control if enabled by CTSEN. 5703 */ 5704 #define USART_CFG_LOOP(x) (((uint32_t)(((uint32_t)(x)) << USART_CFG_LOOP_SHIFT)) & USART_CFG_LOOP_MASK) 5705 /*! @} */ 5706 5707 /*! @name CTL - USART Control register. USART control settings that are more likely to change during operation. */ 5708 /*! @{ */ 5709 #define USART_CTL_TXBRKEN_MASK (0x2U) 5710 #define USART_CTL_TXBRKEN_SHIFT (1U) 5711 /*! TXBRKEN - Break Enable. 5712 * 0b0..Normal operation. 5713 * 0b1..Continuous break. Continuous break is sent immediately when this bit is set, and remains until this bit 5714 * is cleared. A break may be sent without danger of corrupting any currently transmitting character if the 5715 * transmitter is first disabled (TXDIS in CTL is set) and then waiting for the transmitter to be disabled 5716 * (TXDISINT in STAT = 1) before writing 1 to TXBRKEN. 5717 */ 5718 #define USART_CTL_TXBRKEN(x) (((uint32_t)(((uint32_t)(x)) << USART_CTL_TXBRKEN_SHIFT)) & USART_CTL_TXBRKEN_MASK) 5719 #define USART_CTL_ADDRDET_MASK (0x4U) 5720 #define USART_CTL_ADDRDET_SHIFT (2U) 5721 /*! ADDRDET - Enable address detect mode. 5722 * 0b0..Disabled. The USART presents all incoming data. 5723 * 0b1..Enabled. The USART receiver ignores incoming data that does not have the most significant bit of the data 5724 * (typically the 9th bit) = 1. When the data MSB bit = 1, the receiver treats the incoming data normally, 5725 * generating a received data interrupt. Software can then check the data to see if this is an address that 5726 * should be handled. If it is, the ADDRDET bit is cleared by software and further incoming data is handled 5727 * normally. 5728 */ 5729 #define USART_CTL_ADDRDET(x) (((uint32_t)(((uint32_t)(x)) << USART_CTL_ADDRDET_SHIFT)) & USART_CTL_ADDRDET_MASK) 5730 #define USART_CTL_TXDIS_MASK (0x40U) 5731 #define USART_CTL_TXDIS_SHIFT (6U) 5732 /*! TXDIS - Transmit Disable. 5733 * 0b0..Not disabled. USART transmitter is not disabled. 5734 * 0b1..Disabled. USART transmitter is disabled after any character currently being transmitted is complete. This 5735 * feature can be used to facilitate software flow control. 5736 */ 5737 #define USART_CTL_TXDIS(x) (((uint32_t)(((uint32_t)(x)) << USART_CTL_TXDIS_SHIFT)) & USART_CTL_TXDIS_MASK) 5738 #define USART_CTL_CC_MASK (0x100U) 5739 #define USART_CTL_CC_SHIFT (8U) 5740 /*! CC - Continuous Clock generation. By default, SCLK is only output while data is being transmitted in synchronous mode. 5741 * 0b0..Clock on character. In synchronous mode, SCLK cycles only when characters are being sent on Un_TXD or to 5742 * complete a character that is being received. 5743 * 0b1..Continuous clock. SCLK runs continuously in synchronous mode, allowing characters to be received on 5744 * Un_RxD independently from transmission on Un_TXD). 5745 */ 5746 #define USART_CTL_CC(x) (((uint32_t)(((uint32_t)(x)) << USART_CTL_CC_SHIFT)) & USART_CTL_CC_MASK) 5747 #define USART_CTL_CLRCCONRX_MASK (0x200U) 5748 #define USART_CTL_CLRCCONRX_SHIFT (9U) 5749 /*! CLRCCONRX - Clear Continuous Clock. 5750 * 0b0..No effect. No effect on the CC bit. 5751 * 0b1..Auto-clear. The CC bit is automatically cleared when a complete character has been received. This bit is cleared at the same time. 5752 */ 5753 #define USART_CTL_CLRCCONRX(x) (((uint32_t)(((uint32_t)(x)) << USART_CTL_CLRCCONRX_SHIFT)) & USART_CTL_CLRCCONRX_MASK) 5754 /*! @} */ 5755 5756 /*! @name STAT - USART Status register. The complete status value can be read here. Writing ones clears some bits in the register. Some bits can be cleared by writing a 1 to them. */ 5757 /*! @{ */ 5758 #define USART_STAT_RXRDY_MASK (0x1U) 5759 #define USART_STAT_RXRDY_SHIFT (0U) 5760 /*! RXRDY - Receiver Ready flag. When 1, indicates that data is available to be read from the 5761 * receiver buffer. Cleared after a read of the RXDAT or RXDATSTAT registers. 5762 */ 5763 #define USART_STAT_RXRDY(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_RXRDY_SHIFT)) & USART_STAT_RXRDY_MASK) 5764 #define USART_STAT_RXIDLE_MASK (0x2U) 5765 #define USART_STAT_RXIDLE_SHIFT (1U) 5766 /*! RXIDLE - Receiver Idle. When 0, indicates that the receiver is currently in the process of 5767 * receiving data. When 1, indicates that the receiver is not currently in the process of receiving 5768 * data. 5769 */ 5770 #define USART_STAT_RXIDLE(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_RXIDLE_SHIFT)) & USART_STAT_RXIDLE_MASK) 5771 #define USART_STAT_TXRDY_MASK (0x4U) 5772 #define USART_STAT_TXRDY_SHIFT (2U) 5773 /*! TXRDY - Transmitter Ready flag. When 1, this bit indicates that data may be written to the 5774 * transmit buffer. Previous data may still be in the process of being transmitted. Cleared when data 5775 * is written to TXDAT. Set when the data is moved from the transmit buffer to the transmit shift 5776 * register. 5777 */ 5778 #define USART_STAT_TXRDY(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_TXRDY_SHIFT)) & USART_STAT_TXRDY_MASK) 5779 #define USART_STAT_TXIDLE_MASK (0x8U) 5780 #define USART_STAT_TXIDLE_SHIFT (3U) 5781 /*! TXIDLE - Transmitter Idle. When 0, indicates that the transmitter is currently in the process of 5782 * sending data.When 1, indicate that the transmitter is not currently in the process of sending 5783 * data. 5784 */ 5785 #define USART_STAT_TXIDLE(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_TXIDLE_SHIFT)) & USART_STAT_TXIDLE_MASK) 5786 #define USART_STAT_CTS_MASK (0x10U) 5787 #define USART_STAT_CTS_SHIFT (4U) 5788 /*! CTS - This bit reflects the current state of the CTS signal, regardless of the setting of the 5789 * CTSEN bit in the CFG register. This will be the value of the CTS input pin unless loopback mode 5790 * is enabled. 5791 */ 5792 #define USART_STAT_CTS(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_CTS_SHIFT)) & USART_STAT_CTS_MASK) 5793 #define USART_STAT_DELTACTS_MASK (0x20U) 5794 #define USART_STAT_DELTACTS_SHIFT (5U) 5795 /*! DELTACTS - This bit is set when a change in the state is detected for the CTS flag above. This bit is cleared by software. 5796 */ 5797 #define USART_STAT_DELTACTS(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_DELTACTS_SHIFT)) & USART_STAT_DELTACTS_MASK) 5798 #define USART_STAT_TXDISSTAT_MASK (0x40U) 5799 #define USART_STAT_TXDISSTAT_SHIFT (6U) 5800 /*! TXDISSTAT - Transmitter Disabled Interrupt flag. When 1, this bit indicates that the USART 5801 * transmitter is fully idle after being disabled via the TXDIS in the CTL register (TXDIS = 1). 5802 */ 5803 #define USART_STAT_TXDISSTAT(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_TXDISSTAT_SHIFT)) & USART_STAT_TXDISSTAT_MASK) 5804 #define USART_STAT_OVERRUNINT_MASK (0x100U) 5805 #define USART_STAT_OVERRUNINT_SHIFT (8U) 5806 /*! OVERRUNINT - Overrun Error interrupt flag. This flag is set when a new character is received 5807 * while the receiver buffer is still in use. If this occurs, the newly received character in the 5808 * shift register is lost. 5809 */ 5810 #define USART_STAT_OVERRUNINT(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_OVERRUNINT_SHIFT)) & USART_STAT_OVERRUNINT_MASK) 5811 #define USART_STAT_RXBRK_MASK (0x400U) 5812 #define USART_STAT_RXBRK_SHIFT (10U) 5813 /*! RXBRK - Received Break. This bit reflects the current state of the receiver break detection 5814 * logic. It is set when the Un_RXD pin remains low for 16 bit times. Note that FRAMERRINT will also 5815 * be set when this condition occurs because the stop bit(s) for the character would be missing. 5816 * RXBRK is cleared when the Un_RXD pin goes high. 5817 */ 5818 #define USART_STAT_RXBRK(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_RXBRK_SHIFT)) & USART_STAT_RXBRK_MASK) 5819 #define USART_STAT_DELTARXBRK_MASK (0x800U) 5820 #define USART_STAT_DELTARXBRK_SHIFT (11U) 5821 /*! DELTARXBRK - This bit is set when a change in the state of receiver break detection occurs.Cleared by software. 5822 */ 5823 #define USART_STAT_DELTARXBRK(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_DELTARXBRK_SHIFT)) & USART_STAT_DELTARXBRK_MASK) 5824 #define USART_STAT_START_MASK (0x1000U) 5825 #define USART_STAT_START_SHIFT (12U) 5826 /*! START - This bit is set when a start is detected on the receiver input. Its purpose is primarily 5827 * to allow wake-up from Deep-sleep or Power-down mode immediately when a start is detected. 5828 * Cleared by software. 5829 */ 5830 #define USART_STAT_START(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_START_SHIFT)) & USART_STAT_START_MASK) 5831 #define USART_STAT_FRAMERRINT_MASK (0x2000U) 5832 #define USART_STAT_FRAMERRINT_SHIFT (13U) 5833 /*! FRAMERRINT - Framing Error interrupt flag. This flag is set when a character is received with a 5834 * missing stop bit at the expected location. This could be an indication of a baud rate or 5835 * configuration mismatch with the transmitting source. 5836 */ 5837 #define USART_STAT_FRAMERRINT(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_FRAMERRINT_SHIFT)) & USART_STAT_FRAMERRINT_MASK) 5838 #define USART_STAT_PARITYERRINT_MASK (0x4000U) 5839 #define USART_STAT_PARITYERRINT_SHIFT (14U) 5840 /*! PARITYERRINT - Parity Error interrupt flag. This flag is set when a parity error is detected in a received character. 5841 */ 5842 #define USART_STAT_PARITYERRINT(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_PARITYERRINT_SHIFT)) & USART_STAT_PARITYERRINT_MASK) 5843 #define USART_STAT_RXNOISEINT_MASK (0x8000U) 5844 #define USART_STAT_RXNOISEINT_SHIFT (15U) 5845 /*! RXNOISEINT - Received Noise interrupt flag. Three samples of received data are taken in order to 5846 * determine the value of each received data bit, except in synchronous mode. This acts as a 5847 * noise filter if one sample disagrees. This flag is set when a received data bit contains one 5848 * disagreeing sample. This could indicate line noise, a baud rate or character format mismatch, or 5849 * loss of synchronization during data reception. 5850 */ 5851 #define USART_STAT_RXNOISEINT(x) (((uint32_t)(((uint32_t)(x)) << USART_STAT_RXNOISEINT_SHIFT)) & USART_STAT_RXNOISEINT_MASK) 5852 /*! @} */ 5853 5854 /*! @name INTENSET - Interrupt Enable read and Set register. Contains an individual interrupt enable bit for each potential USART interrupt. A complete value may be read from this register. Writing a 1 to any implemented bit position causes that bit to be set. */ 5855 /*! @{ */ 5856 #define USART_INTENSET_RXRDYEN_MASK (0x1U) 5857 #define USART_INTENSET_RXRDYEN_SHIFT (0U) 5858 /*! RXRDYEN - When 1, enables an interrupt when there is a received character available to be read from the RXDAT register. 5859 */ 5860 #define USART_INTENSET_RXRDYEN(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENSET_RXRDYEN_SHIFT)) & USART_INTENSET_RXRDYEN_MASK) 5861 #define USART_INTENSET_TXRDYEN_MASK (0x4U) 5862 #define USART_INTENSET_TXRDYEN_SHIFT (2U) 5863 /*! TXRDYEN - When 1, enables an interrupt when the TXDAT register is available to take another character to transmit. 5864 */ 5865 #define USART_INTENSET_TXRDYEN(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENSET_TXRDYEN_SHIFT)) & USART_INTENSET_TXRDYEN_MASK) 5866 #define USART_INTENSET_DELTACTSEN_MASK (0x20U) 5867 #define USART_INTENSET_DELTACTSEN_SHIFT (5U) 5868 /*! DELTACTSEN - When 1, enables an interrupt when there is a change in the state of the CTS input. 5869 */ 5870 #define USART_INTENSET_DELTACTSEN(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENSET_DELTACTSEN_SHIFT)) & USART_INTENSET_DELTACTSEN_MASK) 5871 #define USART_INTENSET_TXDISEN_MASK (0x40U) 5872 #define USART_INTENSET_TXDISEN_SHIFT (6U) 5873 /*! TXDISEN - When 1, enables an interrupt when the transmitter is fully disabled as indicated by 5874 * the TXDISINT flag in STAT. See description of the TXDISINT bit for details. 5875 */ 5876 #define USART_INTENSET_TXDISEN(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENSET_TXDISEN_SHIFT)) & USART_INTENSET_TXDISEN_MASK) 5877 #define USART_INTENSET_OVERRUNEN_MASK (0x100U) 5878 #define USART_INTENSET_OVERRUNEN_SHIFT (8U) 5879 /*! OVERRUNEN - When 1, enables an interrupt when an overrun error occurred. 5880 */ 5881 #define USART_INTENSET_OVERRUNEN(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENSET_OVERRUNEN_SHIFT)) & USART_INTENSET_OVERRUNEN_MASK) 5882 #define USART_INTENSET_DELTARXBRKEN_MASK (0x800U) 5883 #define USART_INTENSET_DELTARXBRKEN_SHIFT (11U) 5884 /*! DELTARXBRKEN - When 1, enables an interrupt when a change of state has occurred in the detection 5885 * of a received break condition (break condition asserted or deasserted). 5886 */ 5887 #define USART_INTENSET_DELTARXBRKEN(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENSET_DELTARXBRKEN_SHIFT)) & USART_INTENSET_DELTARXBRKEN_MASK) 5888 #define USART_INTENSET_STARTEN_MASK (0x1000U) 5889 #define USART_INTENSET_STARTEN_SHIFT (12U) 5890 /*! STARTEN - When 1, enables an interrupt when a received start bit has been detected. 5891 */ 5892 #define USART_INTENSET_STARTEN(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENSET_STARTEN_SHIFT)) & USART_INTENSET_STARTEN_MASK) 5893 #define USART_INTENSET_FRAMERREN_MASK (0x2000U) 5894 #define USART_INTENSET_FRAMERREN_SHIFT (13U) 5895 /*! FRAMERREN - When 1, enables an interrupt when a framing error has been detected. 5896 */ 5897 #define USART_INTENSET_FRAMERREN(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENSET_FRAMERREN_SHIFT)) & USART_INTENSET_FRAMERREN_MASK) 5898 #define USART_INTENSET_PARITYERREN_MASK (0x4000U) 5899 #define USART_INTENSET_PARITYERREN_SHIFT (14U) 5900 /*! PARITYERREN - When 1, enables an interrupt when a parity error has been detected. 5901 */ 5902 #define USART_INTENSET_PARITYERREN(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENSET_PARITYERREN_SHIFT)) & USART_INTENSET_PARITYERREN_MASK) 5903 #define USART_INTENSET_RXNOISEEN_MASK (0x8000U) 5904 #define USART_INTENSET_RXNOISEEN_SHIFT (15U) 5905 /*! RXNOISEEN - When 1, enables an interrupt when noise is detected. 5906 */ 5907 #define USART_INTENSET_RXNOISEEN(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENSET_RXNOISEEN_SHIFT)) & USART_INTENSET_RXNOISEEN_MASK) 5908 /*! @} */ 5909 5910 /*! @name INTENCLR - Interrupt Enable Clear register. Allows clearing any combination of bits in the INTENSET register. Writing a 1 to any implemented bit position causes the corresponding bit to be cleared. */ 5911 /*! @{ */ 5912 #define USART_INTENCLR_RXRDYCLR_MASK (0x1U) 5913 #define USART_INTENCLR_RXRDYCLR_SHIFT (0U) 5914 /*! RXRDYCLR - Writing 1 clears the corresponding bit in the INTENSET register. 5915 */ 5916 #define USART_INTENCLR_RXRDYCLR(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENCLR_RXRDYCLR_SHIFT)) & USART_INTENCLR_RXRDYCLR_MASK) 5917 #define USART_INTENCLR_TXRDYCLR_MASK (0x4U) 5918 #define USART_INTENCLR_TXRDYCLR_SHIFT (2U) 5919 /*! TXRDYCLR - Writing 1 clears the corresponding bit in the INTENSET register. 5920 */ 5921 #define USART_INTENCLR_TXRDYCLR(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENCLR_TXRDYCLR_SHIFT)) & USART_INTENCLR_TXRDYCLR_MASK) 5922 #define USART_INTENCLR_DELTACTSCLR_MASK (0x20U) 5923 #define USART_INTENCLR_DELTACTSCLR_SHIFT (5U) 5924 /*! DELTACTSCLR - Writing 1 clears the corresponding bit in the INTENSET register. 5925 */ 5926 #define USART_INTENCLR_DELTACTSCLR(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENCLR_DELTACTSCLR_SHIFT)) & USART_INTENCLR_DELTACTSCLR_MASK) 5927 #define USART_INTENCLR_TXDISINTCLR_MASK (0x40U) 5928 #define USART_INTENCLR_TXDISINTCLR_SHIFT (6U) 5929 /*! TXDISINTCLR - Writing 1 clears the corresponding bit in the INTENSET register. 5930 */ 5931 #define USART_INTENCLR_TXDISINTCLR(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENCLR_TXDISINTCLR_SHIFT)) & USART_INTENCLR_TXDISINTCLR_MASK) 5932 #define USART_INTENCLR_OVERRUNCLR_MASK (0x100U) 5933 #define USART_INTENCLR_OVERRUNCLR_SHIFT (8U) 5934 /*! OVERRUNCLR - Writing 1 clears the corresponding bit in the INTENSET register. 5935 */ 5936 #define USART_INTENCLR_OVERRUNCLR(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENCLR_OVERRUNCLR_SHIFT)) & USART_INTENCLR_OVERRUNCLR_MASK) 5937 #define USART_INTENCLR_DELTARXBRKCLR_MASK (0x800U) 5938 #define USART_INTENCLR_DELTARXBRKCLR_SHIFT (11U) 5939 /*! DELTARXBRKCLR - Writing 1 clears the corresponding bit in the INTENSET register. 5940 */ 5941 #define USART_INTENCLR_DELTARXBRKCLR(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENCLR_DELTARXBRKCLR_SHIFT)) & USART_INTENCLR_DELTARXBRKCLR_MASK) 5942 #define USART_INTENCLR_STARTCLR_MASK (0x1000U) 5943 #define USART_INTENCLR_STARTCLR_SHIFT (12U) 5944 /*! STARTCLR - Writing 1 clears the corresponding bit in the INTENSET register. 5945 */ 5946 #define USART_INTENCLR_STARTCLR(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENCLR_STARTCLR_SHIFT)) & USART_INTENCLR_STARTCLR_MASK) 5947 #define USART_INTENCLR_FRAMERRCLR_MASK (0x2000U) 5948 #define USART_INTENCLR_FRAMERRCLR_SHIFT (13U) 5949 /*! FRAMERRCLR - Writing 1 clears the corresponding bit in the INTENSET register. 5950 */ 5951 #define USART_INTENCLR_FRAMERRCLR(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENCLR_FRAMERRCLR_SHIFT)) & USART_INTENCLR_FRAMERRCLR_MASK) 5952 #define USART_INTENCLR_PARITYERRCLR_MASK (0x4000U) 5953 #define USART_INTENCLR_PARITYERRCLR_SHIFT (14U) 5954 /*! PARITYERRCLR - Writing 1 clears the corresponding bit in the INTENSET register. 5955 */ 5956 #define USART_INTENCLR_PARITYERRCLR(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENCLR_PARITYERRCLR_SHIFT)) & USART_INTENCLR_PARITYERRCLR_MASK) 5957 #define USART_INTENCLR_RXNOISECLR_MASK (0x8000U) 5958 #define USART_INTENCLR_RXNOISECLR_SHIFT (15U) 5959 /*! RXNOISECLR - Writing 1 clears the corresponding bit in the INTENSET register. 5960 */ 5961 #define USART_INTENCLR_RXNOISECLR(x) (((uint32_t)(((uint32_t)(x)) << USART_INTENCLR_RXNOISECLR_SHIFT)) & USART_INTENCLR_RXNOISECLR_MASK) 5962 /*! @} */ 5963 5964 /*! @name RXDAT - Receiver Data register. Contains the last character received. */ 5965 /*! @{ */ 5966 #define USART_RXDAT_RXDAT_MASK (0x1FFU) 5967 #define USART_RXDAT_RXDAT_SHIFT (0U) 5968 /*! RXDAT - The USART Receiver Data register contains the next received character. The number of 5969 * bits that are relevant depends on the USART configuration settings. 5970 */ 5971 #define USART_RXDAT_RXDAT(x) (((uint32_t)(((uint32_t)(x)) << USART_RXDAT_RXDAT_SHIFT)) & USART_RXDAT_RXDAT_MASK) 5972 /*! @} */ 5973 5974 /*! @name RXDATSTAT - Receiver Data with Status register. Combines the last character received with the current USART receive status. Allows DMA or software to recover incoming data and status together. */ 5975 /*! @{ */ 5976 #define USART_RXDATSTAT_RXDAT_MASK (0x1FFU) 5977 #define USART_RXDATSTAT_RXDAT_SHIFT (0U) 5978 /*! RXDAT - The USART Receiver Data register contains the next received character. The number of 5979 * bits that are relevant depends on the USART configuration settings. 5980 */ 5981 #define USART_RXDATSTAT_RXDAT(x) (((uint32_t)(((uint32_t)(x)) << USART_RXDATSTAT_RXDAT_SHIFT)) & USART_RXDATSTAT_RXDAT_MASK) 5982 #define USART_RXDATSTAT_FRAMERR_MASK (0x2000U) 5983 #define USART_RXDATSTAT_FRAMERR_SHIFT (13U) 5984 /*! FRAMERR - Framing Error status flag. This bit is valid when there is a character to be read in 5985 * the RXDAT register and reflects the status of that character. This bit will set when the 5986 * character in RXDAT was received with a missing stop bit at the expected location. This could be an 5987 * indication of a baud rate or configuration mismatch with the transmitting source. 5988 */ 5989 #define USART_RXDATSTAT_FRAMERR(x) (((uint32_t)(((uint32_t)(x)) << USART_RXDATSTAT_FRAMERR_SHIFT)) & USART_RXDATSTAT_FRAMERR_MASK) 5990 #define USART_RXDATSTAT_PARITYERR_MASK (0x4000U) 5991 #define USART_RXDATSTAT_PARITYERR_SHIFT (14U) 5992 /*! PARITYERR - Parity Error status flag. This bit is valid when there is a character to be read in 5993 * the RXDAT register and reflects the status of that character. This bit will be set when a 5994 * parity error is detected in a received character. 5995 */ 5996 #define USART_RXDATSTAT_PARITYERR(x) (((uint32_t)(((uint32_t)(x)) << USART_RXDATSTAT_PARITYERR_SHIFT)) & USART_RXDATSTAT_PARITYERR_MASK) 5997 #define USART_RXDATSTAT_RXNOISE_MASK (0x8000U) 5998 #define USART_RXDATSTAT_RXNOISE_SHIFT (15U) 5999 /*! RXNOISE - Received Noise flag. 6000 */ 6001 #define USART_RXDATSTAT_RXNOISE(x) (((uint32_t)(((uint32_t)(x)) << USART_RXDATSTAT_RXNOISE_SHIFT)) & USART_RXDATSTAT_RXNOISE_MASK) 6002 /*! @} */ 6003 6004 /*! @name TXDAT - Transmit Data register. Data to be transmitted is written here. */ 6005 /*! @{ */ 6006 #define USART_TXDAT_TXDAT_MASK (0x1FFU) 6007 #define USART_TXDAT_TXDAT_SHIFT (0U) 6008 /*! TXDAT - Writing to the USART Transmit Data Register causes the data to be transmitted as soon as 6009 * the transmit shift register is available and any conditions for transmitting data are met: 6010 * CTS low (if CTSEN bit = 1), TXDIS bit = 0. 6011 */ 6012 #define USART_TXDAT_TXDAT(x) (((uint32_t)(((uint32_t)(x)) << USART_TXDAT_TXDAT_SHIFT)) & USART_TXDAT_TXDAT_MASK) 6013 /*! @} */ 6014 6015 /*! @name BRG - Baud Rate Generator register. 16-bit integer baud rate divisor value. */ 6016 /*! @{ */ 6017 #define USART_BRG_BRGVAL_MASK (0xFFFFU) 6018 #define USART_BRG_BRGVAL_SHIFT (0U) 6019 /*! BRGVAL - This value is used to divide the USART input clock to determine the baud rate, based on 6020 * the input clock from the FRG. 0 = FCLK is used directly by the USART function. 1 = FCLK is 6021 * divided by 2 before use by the USART function. 2 = FCLK is divided by 3 before use by the USART 6022 * function. 0xFFFF = FCLK is divided by 65,536 before use by the USART function. 6023 */ 6024 #define USART_BRG_BRGVAL(x) (((uint32_t)(((uint32_t)(x)) << USART_BRG_BRGVAL_SHIFT)) & USART_BRG_BRGVAL_MASK) 6025 /*! @} */ 6026 6027 /*! @name INTSTAT - Interrupt status register. Reflects interrupts that are currently enabled. */ 6028 /*! @{ */ 6029 #define USART_INTSTAT_RXRDY_MASK (0x1U) 6030 #define USART_INTSTAT_RXRDY_SHIFT (0U) 6031 /*! RXRDY - Receiver Ready flag. 6032 */ 6033 #define USART_INTSTAT_RXRDY(x) (((uint32_t)(((uint32_t)(x)) << USART_INTSTAT_RXRDY_SHIFT)) & USART_INTSTAT_RXRDY_MASK) 6034 #define USART_INTSTAT_TXRDY_MASK (0x4U) 6035 #define USART_INTSTAT_TXRDY_SHIFT (2U) 6036 /*! TXRDY - Transmitter Ready flag. 6037 */ 6038 #define USART_INTSTAT_TXRDY(x) (((uint32_t)(((uint32_t)(x)) << USART_INTSTAT_TXRDY_SHIFT)) & USART_INTSTAT_TXRDY_MASK) 6039 #define USART_INTSTAT_DELTACTS_MASK (0x20U) 6040 #define USART_INTSTAT_DELTACTS_SHIFT (5U) 6041 /*! DELTACTS - This bit is set when a change in the state of the CTS input is detected. 6042 */ 6043 #define USART_INTSTAT_DELTACTS(x) (((uint32_t)(((uint32_t)(x)) << USART_INTSTAT_DELTACTS_SHIFT)) & USART_INTSTAT_DELTACTS_MASK) 6044 #define USART_INTSTAT_TXDISINT_MASK (0x40U) 6045 #define USART_INTSTAT_TXDISINT_SHIFT (6U) 6046 /*! TXDISINT - Transmitter Disabled Interrupt flag. 6047 */ 6048 #define USART_INTSTAT_TXDISINT(x) (((uint32_t)(((uint32_t)(x)) << USART_INTSTAT_TXDISINT_SHIFT)) & USART_INTSTAT_TXDISINT_MASK) 6049 #define USART_INTSTAT_OVERRUNINT_MASK (0x100U) 6050 #define USART_INTSTAT_OVERRUNINT_SHIFT (8U) 6051 /*! OVERRUNINT - Overrun Error interrupt flag. 6052 */ 6053 #define USART_INTSTAT_OVERRUNINT(x) (((uint32_t)(((uint32_t)(x)) << USART_INTSTAT_OVERRUNINT_SHIFT)) & USART_INTSTAT_OVERRUNINT_MASK) 6054 #define USART_INTSTAT_DELTARXBRK_MASK (0x800U) 6055 #define USART_INTSTAT_DELTARXBRK_SHIFT (11U) 6056 /*! DELTARXBRK - This bit is set when a change in the state of receiver break detection occurs. 6057 */ 6058 #define USART_INTSTAT_DELTARXBRK(x) (((uint32_t)(((uint32_t)(x)) << USART_INTSTAT_DELTARXBRK_SHIFT)) & USART_INTSTAT_DELTARXBRK_MASK) 6059 #define USART_INTSTAT_START_MASK (0x1000U) 6060 #define USART_INTSTAT_START_SHIFT (12U) 6061 /*! START - This bit is set when a start is detected on the receiver input. 6062 */ 6063 #define USART_INTSTAT_START(x) (((uint32_t)(((uint32_t)(x)) << USART_INTSTAT_START_SHIFT)) & USART_INTSTAT_START_MASK) 6064 #define USART_INTSTAT_FRAMERRINT_MASK (0x2000U) 6065 #define USART_INTSTAT_FRAMERRINT_SHIFT (13U) 6066 /*! FRAMERRINT - Framing Error interrupt flag. 6067 */ 6068 #define USART_INTSTAT_FRAMERRINT(x) (((uint32_t)(((uint32_t)(x)) << USART_INTSTAT_FRAMERRINT_SHIFT)) & USART_INTSTAT_FRAMERRINT_MASK) 6069 #define USART_INTSTAT_PARITYERRINT_MASK (0x4000U) 6070 #define USART_INTSTAT_PARITYERRINT_SHIFT (14U) 6071 /*! PARITYERRINT - Parity Error interrupt flag. 6072 */ 6073 #define USART_INTSTAT_PARITYERRINT(x) (((uint32_t)(((uint32_t)(x)) << USART_INTSTAT_PARITYERRINT_SHIFT)) & USART_INTSTAT_PARITYERRINT_MASK) 6074 #define USART_INTSTAT_RXNOISEINT_MASK (0x8000U) 6075 #define USART_INTSTAT_RXNOISEINT_SHIFT (15U) 6076 /*! RXNOISEINT - Received Noise interrupt flag. 6077 */ 6078 #define USART_INTSTAT_RXNOISEINT(x) (((uint32_t)(((uint32_t)(x)) << USART_INTSTAT_RXNOISEINT_SHIFT)) & USART_INTSTAT_RXNOISEINT_MASK) 6079 /*! @} */ 6080 6081 6082 /*! 6083 * @} 6084 */ /* end of group USART_Register_Masks */ 6085 6086 6087 /* USART - Peripheral instance base addresses */ 6088 /** Peripheral USART0 base address */ 6089 #define USART0_BASE (0x40064000u) 6090 /** Peripheral USART0 base pointer */ 6091 #define USART0 ((USART_Type *)USART0_BASE) 6092 /** Peripheral USART1 base address */ 6093 #define USART1_BASE (0x40068000u) 6094 /** Peripheral USART1 base pointer */ 6095 #define USART1 ((USART_Type *)USART1_BASE) 6096 /** Array initializer of USART peripheral base addresses */ 6097 #define USART_BASE_ADDRS { USART0_BASE, USART1_BASE } 6098 /** Array initializer of USART peripheral base pointers */ 6099 #define USART_BASE_PTRS { USART0, USART1 } 6100 /** Interrupt vectors for the USART peripheral type */ 6101 #define USART_IRQS { USART0_IRQn, USART1_IRQn } 6102 6103 /*! 6104 * @} 6105 */ /* end of group USART_Peripheral_Access_Layer */ 6106 6107 6108 /* ---------------------------------------------------------------------------- 6109 -- WKT Peripheral Access Layer 6110 ---------------------------------------------------------------------------- */ 6111 6112 /*! 6113 * @addtogroup WKT_Peripheral_Access_Layer WKT Peripheral Access Layer 6114 * @{ 6115 */ 6116 6117 /** WKT - Register Layout Typedef */ 6118 typedef struct { 6119 __IO uint32_t CTRL; /**< Self wake-up timer control register., offset: 0x0 */ 6120 uint8_t RESERVED_0[8]; 6121 __IO uint32_t COUNT; /**< Counter register., offset: 0xC */ 6122 } WKT_Type; 6123 6124 /* ---------------------------------------------------------------------------- 6125 -- WKT Register Masks 6126 ---------------------------------------------------------------------------- */ 6127 6128 /*! 6129 * @addtogroup WKT_Register_Masks WKT Register Masks 6130 * @{ 6131 */ 6132 6133 /*! @name CTRL - Self wake-up timer control register. */ 6134 /*! @{ */ 6135 #define WKT_CTRL_CLKSEL_MASK (0x1U) 6136 #define WKT_CTRL_CLKSEL_SHIFT (0U) 6137 /*! CLKSEL - Select the self wake-up timer clock source. Remark: This bit only has an effect if the SEL_EXTCLK bit is not set. 6138 * 0b0..Divided IRC clock. This clock runs at 750 kHz and provides time-out periods of up to approximately 95 6139 * minutes in 1.33 us increments. Remark: This clock is not available in not available in Deep-sleep, 6140 * power-down, deep power-down modes. Do not select this option if the timer is to be used to wake up from one of these 6141 * modes. 6142 * 0b1..This is the (nominally) 10 kHz clock and provides time-out periods of up to approximately 119 hours in 6143 * 100 us increments. The accuracy of this clock is limited to +/- 40 % over temperature and processing. 6144 * Remark: This clock is available in all power modes. Prior to use, the low-power oscillator must be enabled. The 6145 * oscillator must also be set to remain active in Deep power-down if needed. 6146 */ 6147 #define WKT_CTRL_CLKSEL(x) (((uint32_t)(((uint32_t)(x)) << WKT_CTRL_CLKSEL_SHIFT)) & WKT_CTRL_CLKSEL_MASK) 6148 #define WKT_CTRL_ALARMFLAG_MASK (0x2U) 6149 #define WKT_CTRL_ALARMFLAG_SHIFT (1U) 6150 /*! ALARMFLAG - Wake-up or alarm timer flag. 6151 * 0b0..No time-out. The self wake-up timer has not timed out. Writing a 0 to has no effect. 6152 * 0b1..Time-out. The self wake-up timer has timed out. This flag generates an interrupt request which can wake 6153 * up the part from any reduced power mode including Deep power-down if the clock source is the low power 6154 * oscillator. Writing a 1 clears this status bit. 6155 */ 6156 #define WKT_CTRL_ALARMFLAG(x) (((uint32_t)(((uint32_t)(x)) << WKT_CTRL_ALARMFLAG_SHIFT)) & WKT_CTRL_ALARMFLAG_MASK) 6157 #define WKT_CTRL_CLEARCTR_MASK (0x4U) 6158 #define WKT_CTRL_CLEARCTR_SHIFT (2U) 6159 /*! CLEARCTR - Clears the self wake-up timer. 6160 * 0b0..No effect. Reading this bit always returns 0. 6161 * 0b1..Clear the counter. Counting is halted until a new count value is loaded. 6162 */ 6163 #define WKT_CTRL_CLEARCTR(x) (((uint32_t)(((uint32_t)(x)) << WKT_CTRL_CLEARCTR_SHIFT)) & WKT_CTRL_CLEARCTR_MASK) 6164 /*! @} */ 6165 6166 /*! @name COUNT - Counter register. */ 6167 /*! @{ */ 6168 #define WKT_COUNT_VALUE_MASK (0xFFFFFFFFU) 6169 #define WKT_COUNT_VALUE_SHIFT (0U) 6170 /*! VALUE - A write to this register pre-loads start count value into the timer and starts the 6171 * count-down sequence. A read reflects the current value of the timer. 6172 */ 6173 #define WKT_COUNT_VALUE(x) (((uint32_t)(((uint32_t)(x)) << WKT_COUNT_VALUE_SHIFT)) & WKT_COUNT_VALUE_MASK) 6174 /*! @} */ 6175 6176 6177 /*! 6178 * @} 6179 */ /* end of group WKT_Register_Masks */ 6180 6181 6182 /* WKT - Peripheral instance base addresses */ 6183 /** Peripheral WKT base address */ 6184 #define WKT_BASE (0x40008000u) 6185 /** Peripheral WKT base pointer */ 6186 #define WKT ((WKT_Type *)WKT_BASE) 6187 /** Array initializer of WKT peripheral base addresses */ 6188 #define WKT_BASE_ADDRS { WKT_BASE } 6189 /** Array initializer of WKT peripheral base pointers */ 6190 #define WKT_BASE_PTRS { WKT } 6191 /** Interrupt vectors for the WKT peripheral type */ 6192 #define WKT_IRQS { WKT_IRQn } 6193 6194 /*! 6195 * @} 6196 */ /* end of group WKT_Peripheral_Access_Layer */ 6197 6198 6199 /* ---------------------------------------------------------------------------- 6200 -- WWDT Peripheral Access Layer 6201 ---------------------------------------------------------------------------- */ 6202 6203 /*! 6204 * @addtogroup WWDT_Peripheral_Access_Layer WWDT Peripheral Access Layer 6205 * @{ 6206 */ 6207 6208 /** WWDT - Register Layout Typedef */ 6209 typedef struct { 6210 __IO uint32_t MOD; /**< Watchdog mode register. This register contains the basic mode and status of the Watchdog Timer., offset: 0x0 */ 6211 __IO uint32_t TC; /**< Watchdog timer constant register. This 24-bit register determines the time-out value., offset: 0x4 */ 6212 __O uint32_t FEED; /**< Watchdog feed sequence register. Writing 0xAA followed by 0x55 to this register reloads the Watchdog timer with the value contained in TC., offset: 0x8 */ 6213 __I uint32_t TV; /**< Watchdog timer value register. This 24-bit register reads out the current value of the Watchdog timer., offset: 0xC */ 6214 uint8_t RESERVED_0[4]; 6215 __IO uint32_t WARNINT; /**< Watchdog Warning Interrupt compare value., offset: 0x14 */ 6216 __IO uint32_t WINDOW; /**< Watchdog Window compare value., offset: 0x18 */ 6217 } WWDT_Type; 6218 6219 /* ---------------------------------------------------------------------------- 6220 -- WWDT Register Masks 6221 ---------------------------------------------------------------------------- */ 6222 6223 /*! 6224 * @addtogroup WWDT_Register_Masks WWDT Register Masks 6225 * @{ 6226 */ 6227 6228 /*! @name MOD - Watchdog mode register. This register contains the basic mode and status of the Watchdog Timer. */ 6229 /*! @{ */ 6230 #define WWDT_MOD_WDEN_MASK (0x1U) 6231 #define WWDT_MOD_WDEN_SHIFT (0U) 6232 /*! WDEN - Watchdog enable bit. Once this bit is set to one and a watchdog feed is performed, the 6233 * watchdog timer will run permanently. 6234 * 0b0..Stop. The watchdog timer is stopped. 6235 * 0b1..Run. The watchdog timer is running. 6236 */ 6237 #define WWDT_MOD_WDEN(x) (((uint32_t)(((uint32_t)(x)) << WWDT_MOD_WDEN_SHIFT)) & WWDT_MOD_WDEN_MASK) 6238 #define WWDT_MOD_WDRESET_MASK (0x2U) 6239 #define WWDT_MOD_WDRESET_SHIFT (1U) 6240 /*! WDRESET - Watchdog reset enable bit. Once this bit has been written with a 1 it cannot be re-written with a 0. 6241 * 0b0..Interrupt. A watchdog time-out will not cause a chip reset. 6242 * 0b1..Reset. A watchdog time-out will cause a chip reset. 6243 */ 6244 #define WWDT_MOD_WDRESET(x) (((uint32_t)(((uint32_t)(x)) << WWDT_MOD_WDRESET_SHIFT)) & WWDT_MOD_WDRESET_MASK) 6245 #define WWDT_MOD_WDTOF_MASK (0x4U) 6246 #define WWDT_MOD_WDTOF_SHIFT (2U) 6247 /*! WDTOF - Watchdog time-out flag. Set when the watchdog timer times out, by a feed error, or by 6248 * events associated with WDPROTECT. Cleared by software writing a 0 to this bit position. Causes a 6249 * chip reset if WDRESET = 1. 6250 */ 6251 #define WWDT_MOD_WDTOF(x) (((uint32_t)(((uint32_t)(x)) << WWDT_MOD_WDTOF_SHIFT)) & WWDT_MOD_WDTOF_MASK) 6252 #define WWDT_MOD_WDINT_MASK (0x8U) 6253 #define WWDT_MOD_WDINT_SHIFT (3U) 6254 /*! WDINT - Warning interrupt flag. Set when the timer is at or below the value in WDWARNINT. 6255 * Cleared by software writing a 1 to this bit position. Note that this bit cannot be cleared while the 6256 * WARNINT value is equal to the value of the TV register. This can occur if the value of 6257 * WARNINT is 0 and the WDRESET bit is 0 when TV decrements to 0. 6258 */ 6259 #define WWDT_MOD_WDINT(x) (((uint32_t)(((uint32_t)(x)) << WWDT_MOD_WDINT_SHIFT)) & WWDT_MOD_WDINT_MASK) 6260 #define WWDT_MOD_WDPROTECT_MASK (0x10U) 6261 #define WWDT_MOD_WDPROTECT_SHIFT (4U) 6262 /*! WDPROTECT - Watchdog update mode. This bit can be set once by software and is only cleared by a reset. 6263 * 0b0..Flexible. The watchdog time-out value (TC) can be changed at any time. 6264 * 0b1..Threshold. The watchdog time-out value (TC) can be changed only after the counter is below the value of WDWARNINT and WDWINDOW. 6265 */ 6266 #define WWDT_MOD_WDPROTECT(x) (((uint32_t)(((uint32_t)(x)) << WWDT_MOD_WDPROTECT_SHIFT)) & WWDT_MOD_WDPROTECT_MASK) 6267 #define WWDT_MOD_LOCK_MASK (0x20U) 6268 #define WWDT_MOD_LOCK_SHIFT (5U) 6269 /*! LOCK - Once this bit is set to one and a watchdog feed is performed, disabling or powering down 6270 * the watchdog oscillator is prevented by hardware. This bit can be set once by software and is 6271 * only cleared by any reset. 6272 */ 6273 #define WWDT_MOD_LOCK(x) (((uint32_t)(((uint32_t)(x)) << WWDT_MOD_LOCK_SHIFT)) & WWDT_MOD_LOCK_MASK) 6274 /*! @} */ 6275 6276 /*! @name TC - Watchdog timer constant register. This 24-bit register determines the time-out value. */ 6277 /*! @{ */ 6278 #define WWDT_TC_COUNT_MASK (0xFFFFFFU) 6279 #define WWDT_TC_COUNT_SHIFT (0U) 6280 /*! COUNT - Watchdog time-out value. 6281 */ 6282 #define WWDT_TC_COUNT(x) (((uint32_t)(((uint32_t)(x)) << WWDT_TC_COUNT_SHIFT)) & WWDT_TC_COUNT_MASK) 6283 /*! @} */ 6284 6285 /*! @name FEED - Watchdog feed sequence register. Writing 0xAA followed by 0x55 to this register reloads the Watchdog timer with the value contained in TC. */ 6286 /*! @{ */ 6287 #define WWDT_FEED_FEED_MASK (0xFFU) 6288 #define WWDT_FEED_FEED_SHIFT (0U) 6289 /*! FEED - Feed value should be 0xAA followed by 0x55. 6290 */ 6291 #define WWDT_FEED_FEED(x) (((uint32_t)(((uint32_t)(x)) << WWDT_FEED_FEED_SHIFT)) & WWDT_FEED_FEED_MASK) 6292 /*! @} */ 6293 6294 /*! @name TV - Watchdog timer value register. This 24-bit register reads out the current value of the Watchdog timer. */ 6295 /*! @{ */ 6296 #define WWDT_TV_COUNT_MASK (0xFFFFFFU) 6297 #define WWDT_TV_COUNT_SHIFT (0U) 6298 /*! COUNT - Counter timer value. 6299 */ 6300 #define WWDT_TV_COUNT(x) (((uint32_t)(((uint32_t)(x)) << WWDT_TV_COUNT_SHIFT)) & WWDT_TV_COUNT_MASK) 6301 /*! @} */ 6302 6303 /*! @name WARNINT - Watchdog Warning Interrupt compare value. */ 6304 /*! @{ */ 6305 #define WWDT_WARNINT_WARNINT_MASK (0x3FFU) 6306 #define WWDT_WARNINT_WARNINT_SHIFT (0U) 6307 /*! WARNINT - Watchdog warning interrupt compare value. 6308 */ 6309 #define WWDT_WARNINT_WARNINT(x) (((uint32_t)(((uint32_t)(x)) << WWDT_WARNINT_WARNINT_SHIFT)) & WWDT_WARNINT_WARNINT_MASK) 6310 /*! @} */ 6311 6312 /*! @name WINDOW - Watchdog Window compare value. */ 6313 /*! @{ */ 6314 #define WWDT_WINDOW_WINDOW_MASK (0xFFFFFFU) 6315 #define WWDT_WINDOW_WINDOW_SHIFT (0U) 6316 /*! WINDOW - Watchdog window value. 6317 */ 6318 #define WWDT_WINDOW_WINDOW(x) (((uint32_t)(((uint32_t)(x)) << WWDT_WINDOW_WINDOW_SHIFT)) & WWDT_WINDOW_WINDOW_MASK) 6319 /*! @} */ 6320 6321 6322 /*! 6323 * @} 6324 */ /* end of group WWDT_Register_Masks */ 6325 6326 6327 /* WWDT - Peripheral instance base addresses */ 6328 /** Peripheral WWDT base address */ 6329 #define WWDT_BASE (0x40000000u) 6330 /** Peripheral WWDT base pointer */ 6331 #define WWDT ((WWDT_Type *)WWDT_BASE) 6332 /** Array initializer of WWDT peripheral base addresses */ 6333 #define WWDT_BASE_ADDRS { WWDT_BASE } 6334 /** Array initializer of WWDT peripheral base pointers */ 6335 #define WWDT_BASE_PTRS { WWDT } 6336 /** Interrupt vectors for the WWDT peripheral type */ 6337 #define WWDT_IRQS { WDT_IRQn } 6338 6339 /*! 6340 * @} 6341 */ /* end of group WWDT_Peripheral_Access_Layer */ 6342 6343 6344 /* 6345 ** End of section using anonymous unions 6346 */ 6347 6348 #if defined(__ARMCC_VERSION) 6349 #if (__ARMCC_VERSION >= 6010050) 6350 #pragma clang diagnostic pop 6351 #else 6352 #pragma pop 6353 #endif 6354 #elif defined(__GNUC__) 6355 /* leave anonymous unions enabled */ 6356 #elif defined(__IAR_SYSTEMS_ICC__) 6357 #pragma language=default 6358 #else 6359 #error Not supported compiler type 6360 #endif 6361 6362 /*! 6363 * @} 6364 */ /* end of group Peripheral_access_layer */ 6365 6366 6367 /* ---------------------------------------------------------------------------- 6368 -- Macros for use with bit field definitions (xxx_SHIFT, xxx_MASK). 6369 ---------------------------------------------------------------------------- */ 6370 6371 /*! 6372 * @addtogroup Bit_Field_Generic_Macros Macros for use with bit field definitions (xxx_SHIFT, xxx_MASK). 6373 * @{ 6374 */ 6375 6376 #if defined(__ARMCC_VERSION) 6377 #if (__ARMCC_VERSION >= 6010050) 6378 #pragma clang system_header 6379 #endif 6380 #elif defined(__IAR_SYSTEMS_ICC__) 6381 #pragma system_include 6382 #endif 6383 6384 /** 6385 * @brief Mask and left-shift a bit field value for use in a register bit range. 6386 * @param field Name of the register bit field. 6387 * @param value Value of the bit field. 6388 * @return Masked and shifted value. 6389 */ 6390 #define NXP_VAL2FLD(field, value) (((value) << (field ## _SHIFT)) & (field ## _MASK)) 6391 /** 6392 * @brief Mask and right-shift a register value to extract a bit field value. 6393 * @param field Name of the register bit field. 6394 * @param value Value of the register. 6395 * @return Masked and shifted bit field value. 6396 */ 6397 #define NXP_FLD2VAL(field, value) (((value) & (field ## _MASK)) >> (field ## _SHIFT)) 6398 6399 /*! 6400 * @} 6401 */ /* end of group Bit_Field_Generic_Macros */ 6402 6403 6404 /* ---------------------------------------------------------------------------- 6405 -- SDK Compatibility 6406 ---------------------------------------------------------------------------- */ 6407 6408 /*! 6409 * @addtogroup SDK_Compatibility_Symbols SDK Compatibility 6410 * @{ 6411 */ 6412 6413 /* No SDK compatibility issues. */ 6414 6415 /*! 6416 * @} 6417 */ /* end of group SDK_Compatibility_Symbols */ 6418 6419 6420 #endif /* _LPC811_H_ */ 6421 6422