1 /* 2 Copyright (c) 2010 - 2024, Nordic Semiconductor ASA All rights reserved.\n 3 \n 4 SPDX-License-Identifier: BSD-3-Clause\n 5 \n 6 Redistribution and use in source and binary forms, with or without\n 7 modification, are permitted provided that the following conditions are met:\n 8 \n 9 1. Redistributions of source code must retain the above copyright notice, this\n 10 list of conditions and the following disclaimer.\n 11 \n 12 2. Redistributions in binary form must reproduce the above copyright\n 13 notice, this list of conditions and the following disclaimer in the\n 14 documentation and/or other materials provided with the distribution.\n 15 \n 16 3. Neither the name of Nordic Semiconductor ASA nor the names of its\n 17 contributors may be used to endorse or promote products derived from this\n 18 software without specific prior written permission.\n 19 \n 20 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\n 21 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n 22 IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE\n 23 ARE DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE\n 24 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n 25 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n 26 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n 27 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n 28 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n 29 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n 30 POSSIBILITY OF SUCH DAMAGE.\n 31 * 32 * @file nrf52811.h 33 * @brief CMSIS HeaderFile 34 * @version 1 35 * @date 22. April 2024 36 * @note Generated by SVDConv V3.3.35 on Monday, 22.04.2024 15:21:03 37 * from File 'nrf52811.svd', 38 * last modified on Monday, 22.04.2024 13:20:06 39 */ 40 41 42 43 /** @addtogroup Nordic Semiconductor 44 * @{ 45 */ 46 47 48 /** @addtogroup nrf52811 49 * @{ 50 */ 51 52 53 #ifndef NRF52811_H 54 #define NRF52811_H 55 56 #ifdef __cplusplus 57 extern "C" { 58 #endif 59 60 61 /** @addtogroup Configuration_of_CMSIS 62 * @{ 63 */ 64 65 66 67 /* =========================================================================================================================== */ 68 /* ================ Interrupt Number Definition ================ */ 69 /* =========================================================================================================================== */ 70 71 typedef enum { 72 /* ======================================= ARM Cortex-M4 Specific Interrupt Numbers ======================================== */ 73 Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ 74 NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ 75 HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ 76 MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation 77 and No Match */ 78 BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory 79 related Fault */ 80 UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ 81 SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ 82 DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ 83 PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ 84 SysTick_IRQn = -1, /*!< -1 System Tick Timer */ 85 /* ========================================== nrf52811 Specific Interrupt Numbers ========================================== */ 86 POWER_CLOCK_IRQn = 0, /*!< 0 POWER_CLOCK */ 87 RADIO_IRQn = 1, /*!< 1 RADIO */ 88 UARTE0_UART0_IRQn = 2, /*!< 2 UARTE0_UART0 */ 89 TWIM0_TWIS0_TWI0_SPIM1_SPIS1_SPI1_IRQn= 3, /*!< 3 TWIM0_TWIS0_TWI0_SPIM1_SPIS1_SPI1 */ 90 SPIM0_SPIS0_SPI0_IRQn = 4, /*!< 4 SPIM0_SPIS0_SPI0 */ 91 GPIOTE_IRQn = 6, /*!< 6 GPIOTE */ 92 SAADC_IRQn = 7, /*!< 7 SAADC */ 93 TIMER0_IRQn = 8, /*!< 8 TIMER0 */ 94 TIMER1_IRQn = 9, /*!< 9 TIMER1 */ 95 TIMER2_IRQn = 10, /*!< 10 TIMER2 */ 96 RTC0_IRQn = 11, /*!< 11 RTC0 */ 97 TEMP_IRQn = 12, /*!< 12 TEMP */ 98 RNG_IRQn = 13, /*!< 13 RNG */ 99 ECB_IRQn = 14, /*!< 14 ECB */ 100 CCM_AAR_IRQn = 15, /*!< 15 CCM_AAR */ 101 WDT_IRQn = 16, /*!< 16 WDT */ 102 RTC1_IRQn = 17, /*!< 17 RTC1 */ 103 QDEC_IRQn = 18, /*!< 18 QDEC */ 104 COMP_IRQn = 19, /*!< 19 COMP */ 105 SWI0_EGU0_IRQn = 20, /*!< 20 SWI0_EGU0 */ 106 SWI1_EGU1_IRQn = 21, /*!< 21 SWI1_EGU1 */ 107 SWI2_IRQn = 22, /*!< 22 SWI2 */ 108 SWI3_IRQn = 23, /*!< 23 SWI3 */ 109 SWI4_IRQn = 24, /*!< 24 SWI4 */ 110 SWI5_IRQn = 25, /*!< 25 SWI5 */ 111 PWM0_IRQn = 28, /*!< 28 PWM0 */ 112 PDM_IRQn = 29 /*!< 29 PDM */ 113 } IRQn_Type; 114 115 116 117 /* =========================================================================================================================== */ 118 /* ================ Processor and Core Peripheral Section ================ */ 119 /* =========================================================================================================================== */ 120 121 /* =========================== Configuration of the ARM Cortex-M4 Processor and Core Peripherals =========================== */ 122 #define __CM4_REV 0x0001U /*!< CM4 Core Revision */ 123 #define __INTERRUPTS_MAX 112 /*!< Top interrupt number */ 124 #define __DSP_PRESENT 1 /*!< DSP present or not */ 125 #define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ 126 #define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ 127 #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ 128 #define __MPU_PRESENT 1 /*!< MPU present */ 129 #define __FPU_PRESENT 0 /*!< FPU present */ 130 131 132 /** @} */ /* End of group Configuration_of_CMSIS */ 133 134 #include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ 135 #include "system_nrf52811.h" /*!< nrf52811 System */ 136 137 #ifndef __IM /*!< Fallback for older CMSIS versions */ 138 #define __IM __I 139 #endif 140 #ifndef __OM /*!< Fallback for older CMSIS versions */ 141 #define __OM __O 142 #endif 143 #ifndef __IOM /*!< Fallback for older CMSIS versions */ 144 #define __IOM __IO 145 #endif 146 147 148 /* ======================================== Start of section using anonymous unions ======================================== */ 149 #if defined (__CC_ARM) 150 #pragma push 151 #pragma anon_unions 152 #elif defined (__ICCARM__) 153 #pragma language=extended 154 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 155 #pragma clang diagnostic push 156 #pragma clang diagnostic ignored "-Wc11-extensions" 157 #pragma clang diagnostic ignored "-Wreserved-id-macro" 158 #pragma clang diagnostic ignored "-Wgnu-anonymous-struct" 159 #pragma clang diagnostic ignored "-Wnested-anon-types" 160 #elif defined (__GNUC__) 161 /* anonymous unions are enabled by default */ 162 #elif defined (__TMS470__) 163 /* anonymous unions are enabled by default */ 164 #elif defined (__TASKING__) 165 #pragma warning 586 166 #elif defined (__CSMC__) 167 /* anonymous unions are enabled by default */ 168 #else 169 #warning Not supported compiler type 170 #endif 171 172 173 /* =========================================================================================================================== */ 174 /* ================ Device Specific Cluster Section ================ */ 175 /* =========================================================================================================================== */ 176 177 178 /** @addtogroup Device_Peripheral_clusters 179 * @{ 180 */ 181 182 183 /** 184 * @brief FICR_INFO [INFO] (Device info) 185 */ 186 typedef struct { 187 __IM uint32_t PART; /*!< (@ 0x00000000) Part code */ 188 __IM uint32_t VARIANT; /*!< (@ 0x00000004) Part variant, hardware version and production 189 configuration */ 190 __IM uint32_t PACKAGE; /*!< (@ 0x00000008) Package option */ 191 __IM uint32_t RAM; /*!< (@ 0x0000000C) RAM variant */ 192 __IM uint32_t FLASH; /*!< (@ 0x00000010) Flash variant */ 193 } FICR_INFO_Type; /*!< Size = 20 (0x14) */ 194 195 196 /** 197 * @brief FICR_TEMP [TEMP] (Registers storing factory TEMP module linearization coefficients) 198 */ 199 typedef struct { 200 __IM uint32_t A0; /*!< (@ 0x00000000) Slope definition A0 */ 201 __IM uint32_t A1; /*!< (@ 0x00000004) Slope definition A1 */ 202 __IM uint32_t A2; /*!< (@ 0x00000008) Slope definition A2 */ 203 __IM uint32_t A3; /*!< (@ 0x0000000C) Slope definition A3 */ 204 __IM uint32_t A4; /*!< (@ 0x00000010) Slope definition A4 */ 205 __IM uint32_t A5; /*!< (@ 0x00000014) Slope definition A5 */ 206 __IM uint32_t B0; /*!< (@ 0x00000018) Y-intercept B0 */ 207 __IM uint32_t B1; /*!< (@ 0x0000001C) Y-intercept B1 */ 208 __IM uint32_t B2; /*!< (@ 0x00000020) Y-intercept B2 */ 209 __IM uint32_t B3; /*!< (@ 0x00000024) Y-intercept B3 */ 210 __IM uint32_t B4; /*!< (@ 0x00000028) Y-intercept B4 */ 211 __IM uint32_t B5; /*!< (@ 0x0000002C) Y-intercept B5 */ 212 __IM uint32_t T0; /*!< (@ 0x00000030) Segment end T0 */ 213 __IM uint32_t T1; /*!< (@ 0x00000034) Segment end T1 */ 214 __IM uint32_t T2; /*!< (@ 0x00000038) Segment end T2 */ 215 __IM uint32_t T3; /*!< (@ 0x0000003C) Segment end T3 */ 216 __IM uint32_t T4; /*!< (@ 0x00000040) Segment end T4 */ 217 } FICR_TEMP_Type; /*!< Size = 68 (0x44) */ 218 219 220 /** 221 * @brief POWER_RAM [RAM] (Unspecified) 222 */ 223 typedef struct { 224 __IOM uint32_t POWER; /*!< (@ 0x00000000) Description cluster: RAMn power control register. 225 The RAM size will vary depending on product 226 variant, and the RAMn register will only 227 be present if the corresponding RAM AHB 228 slave is present on the device. */ 229 __OM uint32_t POWERSET; /*!< (@ 0x00000004) Description cluster: RAMn power control set register */ 230 __OM uint32_t POWERCLR; /*!< (@ 0x00000008) Description cluster: RAMn power control clear 231 register */ 232 __IM uint32_t RESERVED; 233 } POWER_RAM_Type; /*!< Size = 16 (0x10) */ 234 235 236 /** 237 * @brief RADIO_PSEL [PSEL] (Unspecified) 238 */ 239 typedef struct { 240 __IOM uint32_t DFEGPIO[8]; /*!< (@ 0x00000000) Description collection: Pin select for DFE pin 241 n */ 242 } RADIO_PSEL_Type; /*!< Size = 32 (0x20) */ 243 244 245 /** 246 * @brief RADIO_DFEPACKET [DFEPACKET] (DFE packet EasyDMA channel) 247 */ 248 typedef struct { 249 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 250 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of buffer words to transfer */ 251 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of samples transferred in the last transaction */ 252 } RADIO_DFEPACKET_Type; /*!< Size = 12 (0xc) */ 253 254 255 /** 256 * @brief UART_PSEL [PSEL] (Unspecified) 257 */ 258 typedef struct { 259 __IOM uint32_t RTS; /*!< (@ 0x00000000) Pin select for RTS */ 260 __IOM uint32_t TXD; /*!< (@ 0x00000004) Pin select for TXD */ 261 __IOM uint32_t CTS; /*!< (@ 0x00000008) Pin select for CTS */ 262 __IOM uint32_t RXD; /*!< (@ 0x0000000C) Pin select for RXD */ 263 } UART_PSEL_Type; /*!< Size = 16 (0x10) */ 264 265 266 /** 267 * @brief UARTE_PSEL [PSEL] (Unspecified) 268 */ 269 typedef struct { 270 __IOM uint32_t RTS; /*!< (@ 0x00000000) Pin select for RTS signal */ 271 __IOM uint32_t TXD; /*!< (@ 0x00000004) Pin select for TXD signal */ 272 __IOM uint32_t CTS; /*!< (@ 0x00000008) Pin select for CTS signal */ 273 __IOM uint32_t RXD; /*!< (@ 0x0000000C) Pin select for RXD signal */ 274 } UARTE_PSEL_Type; /*!< Size = 16 (0x10) */ 275 276 277 /** 278 * @brief UARTE_RXD [RXD] (RXD EasyDMA channel) 279 */ 280 typedef struct { 281 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 282 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 283 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 284 } UARTE_RXD_Type; /*!< Size = 12 (0xc) */ 285 286 287 /** 288 * @brief UARTE_TXD [TXD] (TXD EasyDMA channel) 289 */ 290 typedef struct { 291 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 292 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 293 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 294 } UARTE_TXD_Type; /*!< Size = 12 (0xc) */ 295 296 297 /** 298 * @brief SPI_PSEL [PSEL] (Unspecified) 299 */ 300 typedef struct { 301 __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */ 302 __IOM uint32_t MOSI; /*!< (@ 0x00000004) Pin select for MOSI signal */ 303 __IOM uint32_t MISO; /*!< (@ 0x00000008) Pin select for MISO signal */ 304 } SPI_PSEL_Type; /*!< Size = 12 (0xc) */ 305 306 307 /** 308 * @brief SPIM_PSEL [PSEL] (Unspecified) 309 */ 310 typedef struct { 311 __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */ 312 __IOM uint32_t MOSI; /*!< (@ 0x00000004) Pin select for MOSI signal */ 313 __IOM uint32_t MISO; /*!< (@ 0x00000008) Pin select for MISO signal */ 314 } SPIM_PSEL_Type; /*!< Size = 12 (0xc) */ 315 316 317 /** 318 * @brief SPIM_RXD [RXD] (RXD EasyDMA channel) 319 */ 320 typedef struct { 321 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 322 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 323 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 324 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 325 } SPIM_RXD_Type; /*!< Size = 16 (0x10) */ 326 327 328 /** 329 * @brief SPIM_TXD [TXD] (TXD EasyDMA channel) 330 */ 331 typedef struct { 332 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 333 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 334 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 335 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 336 } SPIM_TXD_Type; /*!< Size = 16 (0x10) */ 337 338 339 /** 340 * @brief SPIS_PSEL [PSEL] (Unspecified) 341 */ 342 typedef struct { 343 __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */ 344 __IOM uint32_t MISO; /*!< (@ 0x00000004) Pin select for MISO signal */ 345 __IOM uint32_t MOSI; /*!< (@ 0x00000008) Pin select for MOSI signal */ 346 __IOM uint32_t CSN; /*!< (@ 0x0000000C) Pin select for CSN signal */ 347 } SPIS_PSEL_Type; /*!< Size = 16 (0x10) */ 348 349 350 /** 351 * @brief SPIS_RXD [RXD] (Unspecified) 352 */ 353 typedef struct { 354 __IOM uint32_t PTR; /*!< (@ 0x00000000) RXD data pointer */ 355 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 356 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes received in last granted transaction */ 357 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 358 } SPIS_RXD_Type; /*!< Size = 16 (0x10) */ 359 360 361 /** 362 * @brief SPIS_TXD [TXD] (Unspecified) 363 */ 364 typedef struct { 365 __IOM uint32_t PTR; /*!< (@ 0x00000000) TXD data pointer */ 366 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 367 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transmitted in last granted transaction */ 368 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 369 } SPIS_TXD_Type; /*!< Size = 16 (0x10) */ 370 371 372 /** 373 * @brief TWI_PSEL [PSEL] (Unspecified) 374 */ 375 typedef struct { 376 __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL */ 377 __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA */ 378 } TWI_PSEL_Type; /*!< Size = 8 (0x8) */ 379 380 381 /** 382 * @brief TWIM_PSEL [PSEL] (Unspecified) 383 */ 384 typedef struct { 385 __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL signal */ 386 __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA signal */ 387 } TWIM_PSEL_Type; /*!< Size = 8 (0x8) */ 388 389 390 /** 391 * @brief TWIM_RXD [RXD] (RXD EasyDMA channel) 392 */ 393 typedef struct { 394 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 395 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 396 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 397 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 398 } TWIM_RXD_Type; /*!< Size = 16 (0x10) */ 399 400 401 /** 402 * @brief TWIM_TXD [TXD] (TXD EasyDMA channel) 403 */ 404 typedef struct { 405 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 406 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 407 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 408 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 409 } TWIM_TXD_Type; /*!< Size = 16 (0x10) */ 410 411 412 /** 413 * @brief TWIS_PSEL [PSEL] (Unspecified) 414 */ 415 typedef struct { 416 __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL signal */ 417 __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA signal */ 418 } TWIS_PSEL_Type; /*!< Size = 8 (0x8) */ 419 420 421 /** 422 * @brief TWIS_RXD [RXD] (RXD EasyDMA channel) 423 */ 424 typedef struct { 425 __IOM uint32_t PTR; /*!< (@ 0x00000000) RXD Data pointer */ 426 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in RXD buffer */ 427 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last RXD transaction */ 428 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 429 } TWIS_RXD_Type; /*!< Size = 16 (0x10) */ 430 431 432 /** 433 * @brief TWIS_TXD [TXD] (TXD EasyDMA channel) 434 */ 435 typedef struct { 436 __IOM uint32_t PTR; /*!< (@ 0x00000000) TXD Data pointer */ 437 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in TXD buffer */ 438 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last TXD transaction */ 439 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 440 } TWIS_TXD_Type; /*!< Size = 16 (0x10) */ 441 442 443 /** 444 * @brief SAADC_EVENTS_CH [EVENTS_CH] (Peripheral events.) 445 */ 446 typedef struct { 447 __IOM uint32_t LIMITH; /*!< (@ 0x00000000) Description cluster: Last results is equal or 448 above CH[n].LIMIT.HIGH */ 449 __IOM uint32_t LIMITL; /*!< (@ 0x00000004) Description cluster: Last results is equal or 450 below CH[n].LIMIT.LOW */ 451 } SAADC_EVENTS_CH_Type; /*!< Size = 8 (0x8) */ 452 453 454 /** 455 * @brief SAADC_CH [CH] (Unspecified) 456 */ 457 typedef struct { 458 __IOM uint32_t PSELP; /*!< (@ 0x00000000) Description cluster: Input positive pin selection 459 for CH[n] */ 460 __IOM uint32_t PSELN; /*!< (@ 0x00000004) Description cluster: Input negative pin selection 461 for CH[n] */ 462 __IOM uint32_t CONFIG; /*!< (@ 0x00000008) Description cluster: Input configuration for 463 CH[n] */ 464 __IOM uint32_t LIMIT; /*!< (@ 0x0000000C) Description cluster: High/low limits for event 465 monitoring a channel */ 466 } SAADC_CH_Type; /*!< Size = 16 (0x10) */ 467 468 469 /** 470 * @brief SAADC_RESULT [RESULT] (RESULT EasyDMA channel) 471 */ 472 typedef struct { 473 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 474 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of buffer words to transfer */ 475 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of buffer words transferred since last 476 START */ 477 } SAADC_RESULT_Type; /*!< Size = 12 (0xc) */ 478 479 480 /** 481 * @brief QDEC_PSEL [PSEL] (Unspecified) 482 */ 483 typedef struct { 484 __IOM uint32_t LED; /*!< (@ 0x00000000) Pin select for LED signal */ 485 __IOM uint32_t A; /*!< (@ 0x00000004) Pin select for A signal */ 486 __IOM uint32_t B; /*!< (@ 0x00000008) Pin select for B signal */ 487 } QDEC_PSEL_Type; /*!< Size = 12 (0xc) */ 488 489 490 /** 491 * @brief PWM_SEQ [SEQ] (Unspecified) 492 */ 493 typedef struct { 494 __IOM uint32_t PTR; /*!< (@ 0x00000000) Description cluster: Beginning address in RAM 495 of this sequence */ 496 __IOM uint32_t CNT; /*!< (@ 0x00000004) Description cluster: Number of values (duty cycles) 497 in this sequence */ 498 __IOM uint32_t REFRESH; /*!< (@ 0x00000008) Description cluster: Number of additional PWM 499 periods between samples loaded into compare 500 register */ 501 __IOM uint32_t ENDDELAY; /*!< (@ 0x0000000C) Description cluster: Time added after the sequence */ 502 __IM uint32_t RESERVED[4]; 503 } PWM_SEQ_Type; /*!< Size = 32 (0x20) */ 504 505 506 /** 507 * @brief PWM_PSEL [PSEL] (Unspecified) 508 */ 509 typedef struct { 510 __IOM uint32_t OUT[4]; /*!< (@ 0x00000000) Description collection: Output pin select for 511 PWM channel n */ 512 } PWM_PSEL_Type; /*!< Size = 16 (0x10) */ 513 514 515 /** 516 * @brief PDM_PSEL [PSEL] (Unspecified) 517 */ 518 typedef struct { 519 __IOM uint32_t CLK; /*!< (@ 0x00000000) Pin number configuration for PDM CLK signal */ 520 __IOM uint32_t DIN; /*!< (@ 0x00000004) Pin number configuration for PDM DIN signal */ 521 } PDM_PSEL_Type; /*!< Size = 8 (0x8) */ 522 523 524 /** 525 * @brief PDM_SAMPLE [SAMPLE] (Unspecified) 526 */ 527 typedef struct { 528 __IOM uint32_t PTR; /*!< (@ 0x00000000) RAM address pointer to write samples to with 529 EasyDMA */ 530 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Number of samples to allocate memory for in EasyDMA 531 mode */ 532 } PDM_SAMPLE_Type; /*!< Size = 8 (0x8) */ 533 534 535 /** 536 * @brief PPI_TASKS_CHG [TASKS_CHG] (Channel group tasks) 537 */ 538 typedef struct { 539 __OM uint32_t EN; /*!< (@ 0x00000000) Description cluster: Enable channel group n */ 540 __OM uint32_t DIS; /*!< (@ 0x00000004) Description cluster: Disable channel group n */ 541 } PPI_TASKS_CHG_Type; /*!< Size = 8 (0x8) */ 542 543 544 /** 545 * @brief PPI_CH [CH] (PPI Channel) 546 */ 547 typedef struct { 548 __IOM uint32_t EEP; /*!< (@ 0x00000000) Description cluster: Channel n event end-point */ 549 __IOM uint32_t TEP; /*!< (@ 0x00000004) Description cluster: Channel n task end-point */ 550 } PPI_CH_Type; /*!< Size = 8 (0x8) */ 551 552 553 /** 554 * @brief PPI_FORK [FORK] (Fork) 555 */ 556 typedef struct { 557 __IOM uint32_t TEP; /*!< (@ 0x00000000) Description cluster: Channel n task end-point */ 558 } PPI_FORK_Type; /*!< Size = 4 (0x4) */ 559 560 561 /** @} */ /* End of group Device_Peripheral_clusters */ 562 563 564 /* =========================================================================================================================== */ 565 /* ================ Device Specific Peripheral Section ================ */ 566 /* =========================================================================================================================== */ 567 568 569 /** @addtogroup Device_Peripheral_peripherals 570 * @{ 571 */ 572 573 574 575 /* =========================================================================================================================== */ 576 /* ================ FICR ================ */ 577 /* =========================================================================================================================== */ 578 579 580 /** 581 * @brief Factory information configuration registers (FICR) 582 */ 583 584 typedef struct { /*!< (@ 0x10000000) FICR Structure */ 585 __IM uint32_t RESERVED[4]; 586 __IM uint32_t CODEPAGESIZE; /*!< (@ 0x00000010) Code memory page size */ 587 __IM uint32_t CODESIZE; /*!< (@ 0x00000014) Code memory size */ 588 __IM uint32_t RESERVED1[18]; 589 __IM uint32_t DEVICEID[2]; /*!< (@ 0x00000060) Description collection: Device identifier */ 590 __IM uint32_t RESERVED2[6]; 591 __IM uint32_t ER[4]; /*!< (@ 0x00000080) Description collection: Encryption root, word 592 n */ 593 __IM uint32_t IR[4]; /*!< (@ 0x00000090) Description collection: Identity root, word n */ 594 __IM uint32_t DEVICEADDRTYPE; /*!< (@ 0x000000A0) Device address type */ 595 __IM uint32_t DEVICEADDR[2]; /*!< (@ 0x000000A4) Description collection: Device address n */ 596 __IM uint32_t RESERVED3[21]; 597 __IM FICR_INFO_Type INFO; /*!< (@ 0x00000100) Device info */ 598 __IM uint32_t RESERVED4[188]; 599 __IM FICR_TEMP_Type TEMP; /*!< (@ 0x00000404) Registers storing factory TEMP module linearization 600 coefficients */ 601 } NRF_FICR_Type; /*!< Size = 1096 (0x448) */ 602 603 604 605 /* =========================================================================================================================== */ 606 /* ================ UICR ================ */ 607 /* =========================================================================================================================== */ 608 609 610 /** 611 * @brief User information configuration registers (UICR) 612 */ 613 614 typedef struct { /*!< (@ 0x10001000) UICR Structure */ 615 __IM uint32_t RESERVED[5]; 616 __IOM uint32_t NRFFW[13]; /*!< (@ 0x00000014) Description collection: Reserved for Nordic firmware 617 design */ 618 __IM uint32_t RESERVED1[2]; 619 __IOM uint32_t NRFHW[12]; /*!< (@ 0x00000050) Description collection: Reserved for Nordic hardware 620 design */ 621 __IOM uint32_t CUSTOMER[32]; /*!< (@ 0x00000080) Description collection: Reserved for customer */ 622 __IOM uint32_t NRFMDK[8]; /*!< (@ 0x00000100) Description collection: Reserved for Nordic MDK */ 623 __IM uint32_t RESERVED2[56]; 624 __IOM uint32_t PSELRESET[2]; /*!< (@ 0x00000200) Description collection: Mapping of the nRESET 625 function (see POWER chapter for details) */ 626 __IOM uint32_t APPROTECT; /*!< (@ 0x00000208) Access port protection */ 627 } NRF_UICR_Type; /*!< Size = 524 (0x20c) */ 628 629 630 631 /* =========================================================================================================================== */ 632 /* ================ APPROTECT ================ */ 633 /* =========================================================================================================================== */ 634 635 636 /** 637 * @brief Access Port Protection (APPROTECT) 638 */ 639 640 typedef struct { /*!< (@ 0x40000000) APPROTECT Structure */ 641 __IM uint32_t RESERVED[340]; 642 __IOM uint32_t FORCEPROTECT; /*!< (@ 0x00000550) Software force enable APPROTECT mechanism until 643 next reset. */ 644 __IM uint32_t RESERVED1; 645 __IOM uint32_t DISABLE; /*!< (@ 0x00000558) Software disable APPROTECT mechanism */ 646 } NRF_APPROTECT_Type; /*!< Size = 1372 (0x55c) */ 647 648 649 650 /* =========================================================================================================================== */ 651 /* ================ BPROT ================ */ 652 /* =========================================================================================================================== */ 653 654 655 /** 656 * @brief Block Protect (BPROT) 657 */ 658 659 typedef struct { /*!< (@ 0x40000000) BPROT Structure */ 660 __IM uint32_t RESERVED[384]; 661 __IOM uint32_t CONFIG0; /*!< (@ 0x00000600) Block protect configuration register 0 */ 662 __IOM uint32_t CONFIG1; /*!< (@ 0x00000604) Block protect configuration register 1 */ 663 __IOM uint32_t DISABLEINDEBUG; /*!< (@ 0x00000608) Disable protection mechanism in debug mode */ 664 } NRF_BPROT_Type; /*!< Size = 1548 (0x60c) */ 665 666 667 668 /* =========================================================================================================================== */ 669 /* ================ CLOCK ================ */ 670 /* =========================================================================================================================== */ 671 672 673 /** 674 * @brief Clock control (CLOCK) 675 */ 676 677 typedef struct { /*!< (@ 0x40000000) CLOCK Structure */ 678 __OM uint32_t TASKS_HFCLKSTART; /*!< (@ 0x00000000) Start HFCLK crystal oscillator */ 679 __OM uint32_t TASKS_HFCLKSTOP; /*!< (@ 0x00000004) Stop HFCLK crystal oscillator */ 680 __OM uint32_t TASKS_LFCLKSTART; /*!< (@ 0x00000008) Start LFCLK source */ 681 __OM uint32_t TASKS_LFCLKSTOP; /*!< (@ 0x0000000C) Stop LFCLK source */ 682 __OM uint32_t TASKS_CAL; /*!< (@ 0x00000010) Start calibration of LFRC oscillator */ 683 __OM uint32_t TASKS_CTSTART; /*!< (@ 0x00000014) Start calibration timer */ 684 __OM uint32_t TASKS_CTSTOP; /*!< (@ 0x00000018) Stop calibration timer */ 685 __IM uint32_t RESERVED[57]; 686 __IOM uint32_t EVENTS_HFCLKSTARTED; /*!< (@ 0x00000100) HFCLK oscillator started */ 687 __IOM uint32_t EVENTS_LFCLKSTARTED; /*!< (@ 0x00000104) LFCLK started */ 688 __IM uint32_t RESERVED1; 689 __IOM uint32_t EVENTS_DONE; /*!< (@ 0x0000010C) Calibration of LFCLK RC oscillator complete event */ 690 __IOM uint32_t EVENTS_CTTO; /*!< (@ 0x00000110) Calibration timer timeout */ 691 __IM uint32_t RESERVED2[124]; 692 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 693 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 694 __IM uint32_t RESERVED3[63]; 695 __IM uint32_t HFCLKRUN; /*!< (@ 0x00000408) Status indicating that HFCLKSTART task has been 696 triggered */ 697 __IM uint32_t HFCLKSTAT; /*!< (@ 0x0000040C) HFCLK status */ 698 __IM uint32_t RESERVED4; 699 __IM uint32_t LFCLKRUN; /*!< (@ 0x00000414) Status indicating that LFCLKSTART task has been 700 triggered */ 701 __IM uint32_t LFCLKSTAT; /*!< (@ 0x00000418) LFCLK status */ 702 __IM uint32_t LFCLKSRCCOPY; /*!< (@ 0x0000041C) Copy of LFCLKSRC register, set when LFCLKSTART 703 task was triggered */ 704 __IM uint32_t RESERVED5[62]; 705 __IOM uint32_t LFCLKSRC; /*!< (@ 0x00000518) Clock source for the LFCLK */ 706 __IM uint32_t RESERVED6[7]; 707 __IOM uint32_t CTIV; /*!< (@ 0x00000538) Calibration timer interval */ 708 } NRF_CLOCK_Type; /*!< Size = 1340 (0x53c) */ 709 710 711 712 /* =========================================================================================================================== */ 713 /* ================ POWER ================ */ 714 /* =========================================================================================================================== */ 715 716 717 /** 718 * @brief Power control (POWER) 719 */ 720 721 typedef struct { /*!< (@ 0x40000000) POWER Structure */ 722 __IM uint32_t RESERVED[30]; 723 __OM uint32_t TASKS_CONSTLAT; /*!< (@ 0x00000078) Enable Constant Latency mode */ 724 __OM uint32_t TASKS_LOWPWR; /*!< (@ 0x0000007C) Enable Low-power mode (variable latency) */ 725 __IM uint32_t RESERVED1[34]; 726 __IOM uint32_t EVENTS_POFWARN; /*!< (@ 0x00000108) Power failure warning */ 727 __IM uint32_t RESERVED2[2]; 728 __IOM uint32_t EVENTS_SLEEPENTER; /*!< (@ 0x00000114) CPU entered WFI/WFE sleep */ 729 __IOM uint32_t EVENTS_SLEEPEXIT; /*!< (@ 0x00000118) CPU exited WFI/WFE sleep */ 730 __IM uint32_t RESERVED3[122]; 731 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 732 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 733 __IM uint32_t RESERVED4[61]; 734 __IOM uint32_t RESETREAS; /*!< (@ 0x00000400) Reset reason */ 735 __IM uint32_t RESERVED5[63]; 736 __OM uint32_t SYSTEMOFF; /*!< (@ 0x00000500) System OFF register */ 737 __IM uint32_t RESERVED6[3]; 738 __IOM uint32_t POFCON; /*!< (@ 0x00000510) Power failure comparator configuration */ 739 __IM uint32_t RESERVED7[2]; 740 __IOM uint32_t GPREGRET; /*!< (@ 0x0000051C) General purpose retention register */ 741 __IOM uint32_t GPREGRET2; /*!< (@ 0x00000520) General purpose retention register */ 742 __IM uint32_t RESERVED8[21]; 743 __IOM uint32_t DCDCEN; /*!< (@ 0x00000578) DC/DC enable register */ 744 __IM uint32_t RESERVED9[225]; 745 __IOM POWER_RAM_Type RAM[8]; /*!< (@ 0x00000900) Unspecified */ 746 } NRF_POWER_Type; /*!< Size = 2432 (0x980) */ 747 748 749 750 /* =========================================================================================================================== */ 751 /* ================ P0 ================ */ 752 /* =========================================================================================================================== */ 753 754 755 /** 756 * @brief GPIO Port (P0) 757 */ 758 759 typedef struct { /*!< (@ 0x50000000) P0 Structure */ 760 __IM uint32_t RESERVED[321]; 761 __IOM uint32_t OUT; /*!< (@ 0x00000504) Write GPIO port */ 762 __IOM uint32_t OUTSET; /*!< (@ 0x00000508) Set individual bits in GPIO port */ 763 __IOM uint32_t OUTCLR; /*!< (@ 0x0000050C) Clear individual bits in GPIO port */ 764 __IM uint32_t IN; /*!< (@ 0x00000510) Read GPIO port */ 765 __IOM uint32_t DIR; /*!< (@ 0x00000514) Direction of GPIO pins */ 766 __IOM uint32_t DIRSET; /*!< (@ 0x00000518) DIR set register */ 767 __IOM uint32_t DIRCLR; /*!< (@ 0x0000051C) DIR clear register */ 768 __IOM uint32_t LATCH; /*!< (@ 0x00000520) Latch register indicating what GPIO pins that 769 have met the criteria set in the PIN_CNF[n].SENSE 770 registers */ 771 __IOM uint32_t DETECTMODE; /*!< (@ 0x00000524) Select between default DETECT signal behaviour 772 and LDETECT mode */ 773 __IM uint32_t RESERVED1[118]; 774 __IOM uint32_t PIN_CNF[32]; /*!< (@ 0x00000700) Description collection: Configuration of GPIO 775 pins */ 776 } NRF_GPIO_Type; /*!< Size = 1920 (0x780) */ 777 778 779 780 /* =========================================================================================================================== */ 781 /* ================ RADIO ================ */ 782 /* =========================================================================================================================== */ 783 784 785 /** 786 * @brief 2.4 GHz radio (RADIO) 787 */ 788 789 typedef struct { /*!< (@ 0x40001000) RADIO Structure */ 790 __OM uint32_t TASKS_TXEN; /*!< (@ 0x00000000) Enable RADIO in TX mode */ 791 __OM uint32_t TASKS_RXEN; /*!< (@ 0x00000004) Enable RADIO in RX mode */ 792 __OM uint32_t TASKS_START; /*!< (@ 0x00000008) Start RADIO */ 793 __OM uint32_t TASKS_STOP; /*!< (@ 0x0000000C) Stop RADIO */ 794 __OM uint32_t TASKS_DISABLE; /*!< (@ 0x00000010) Disable RADIO */ 795 __OM uint32_t TASKS_RSSISTART; /*!< (@ 0x00000014) Start the RSSI and take one single sample of 796 the receive signal strength */ 797 __OM uint32_t TASKS_RSSISTOP; /*!< (@ 0x00000018) Stop the RSSI measurement */ 798 __OM uint32_t TASKS_BCSTART; /*!< (@ 0x0000001C) Start the bit counter */ 799 __OM uint32_t TASKS_BCSTOP; /*!< (@ 0x00000020) Stop the bit counter */ 800 __OM uint32_t TASKS_EDSTART; /*!< (@ 0x00000024) Start the energy detect measurement used in IEEE 801 802.15.4 mode */ 802 __OM uint32_t TASKS_EDSTOP; /*!< (@ 0x00000028) Stop the energy detect measurement */ 803 __OM uint32_t TASKS_CCASTART; /*!< (@ 0x0000002C) Start the clear channel assessment used in IEEE 804 802.15.4 mode */ 805 __OM uint32_t TASKS_CCASTOP; /*!< (@ 0x00000030) Stop the clear channel assessment */ 806 __IM uint32_t RESERVED[51]; 807 __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) RADIO has ramped up and is ready to be started */ 808 __IOM uint32_t EVENTS_ADDRESS; /*!< (@ 0x00000104) Address sent or received */ 809 __IOM uint32_t EVENTS_PAYLOAD; /*!< (@ 0x00000108) Packet payload sent or received */ 810 __IOM uint32_t EVENTS_END; /*!< (@ 0x0000010C) Packet sent or received */ 811 __IOM uint32_t EVENTS_DISABLED; /*!< (@ 0x00000110) RADIO has been disabled */ 812 __IOM uint32_t EVENTS_DEVMATCH; /*!< (@ 0x00000114) A device address match occurred on the last received 813 packet */ 814 __IOM uint32_t EVENTS_DEVMISS; /*!< (@ 0x00000118) No device address match occurred on the last 815 received packet */ 816 __IOM uint32_t EVENTS_RSSIEND; /*!< (@ 0x0000011C) Sampling of receive signal strength complete */ 817 __IM uint32_t RESERVED1[2]; 818 __IOM uint32_t EVENTS_BCMATCH; /*!< (@ 0x00000128) Bit counter reached bit count value */ 819 __IM uint32_t RESERVED2; 820 __IOM uint32_t EVENTS_CRCOK; /*!< (@ 0x00000130) Packet received with CRC ok */ 821 __IOM uint32_t EVENTS_CRCERROR; /*!< (@ 0x00000134) Packet received with CRC error */ 822 __IOM uint32_t EVENTS_FRAMESTART; /*!< (@ 0x00000138) IEEE 802.15.4 length field received */ 823 __IOM uint32_t EVENTS_EDEND; /*!< (@ 0x0000013C) Sampling of energy detection complete. A new 824 ED sample is ready for readout from the 825 RADIO.EDSAMPLE register. */ 826 __IOM uint32_t EVENTS_EDSTOPPED; /*!< (@ 0x00000140) The sampling of energy detection has stopped */ 827 __IOM uint32_t EVENTS_CCAIDLE; /*!< (@ 0x00000144) Wireless medium in idle - clear to send */ 828 __IOM uint32_t EVENTS_CCABUSY; /*!< (@ 0x00000148) Wireless medium busy - do not send */ 829 __IOM uint32_t EVENTS_CCASTOPPED; /*!< (@ 0x0000014C) The CCA has stopped */ 830 __IOM uint32_t EVENTS_RATEBOOST; /*!< (@ 0x00000150) Ble_LR CI field received, receive mode is changed 831 from Ble_LR125Kbit to Ble_LR500Kbit. */ 832 __IOM uint32_t EVENTS_TXREADY; /*!< (@ 0x00000154) RADIO has ramped up and is ready to be started 833 TX path */ 834 __IOM uint32_t EVENTS_RXREADY; /*!< (@ 0x00000158) RADIO has ramped up and is ready to be started 835 RX path */ 836 __IOM uint32_t EVENTS_MHRMATCH; /*!< (@ 0x0000015C) MAC header match found */ 837 __IM uint32_t RESERVED3[2]; 838 __IOM uint32_t EVENTS_SYNC; /*!< (@ 0x00000168) Preamble indicator */ 839 __IOM uint32_t EVENTS_PHYEND; /*!< (@ 0x0000016C) Generated when last bit is sent on air, or received 840 from air */ 841 __IOM uint32_t EVENTS_CTEPRESENT; /*!< (@ 0x00000170) CTE is present (early warning right after receiving 842 CTEInfo byte) */ 843 __IM uint32_t RESERVED4[35]; 844 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 845 __IM uint32_t RESERVED5[64]; 846 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 847 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 848 __IM uint32_t RESERVED6[61]; 849 __IM uint32_t CRCSTATUS; /*!< (@ 0x00000400) CRC status */ 850 __IM uint32_t RESERVED7; 851 __IM uint32_t RXMATCH; /*!< (@ 0x00000408) Received address */ 852 __IM uint32_t RXCRC; /*!< (@ 0x0000040C) CRC field of previously received packet */ 853 __IM uint32_t DAI; /*!< (@ 0x00000410) Device address match index */ 854 __IM uint32_t PDUSTAT; /*!< (@ 0x00000414) Payload status */ 855 __IM uint32_t RESERVED8[13]; 856 __IM uint32_t CTESTATUS; /*!< (@ 0x0000044C) CTEInfo parsed from received packet */ 857 __IM uint32_t RESERVED9[2]; 858 __IM uint32_t DFESTATUS; /*!< (@ 0x00000458) DFE status information */ 859 __IM uint32_t RESERVED10[42]; 860 __IOM uint32_t PACKETPTR; /*!< (@ 0x00000504) Packet pointer */ 861 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000508) Frequency */ 862 __IOM uint32_t TXPOWER; /*!< (@ 0x0000050C) Output power */ 863 __IOM uint32_t MODE; /*!< (@ 0x00000510) Data rate and modulation */ 864 __IOM uint32_t PCNF0; /*!< (@ 0x00000514) Packet configuration register 0 */ 865 __IOM uint32_t PCNF1; /*!< (@ 0x00000518) Packet configuration register 1 */ 866 __IOM uint32_t BASE0; /*!< (@ 0x0000051C) Base address 0 */ 867 __IOM uint32_t BASE1; /*!< (@ 0x00000520) Base address 1 */ 868 __IOM uint32_t PREFIX0; /*!< (@ 0x00000524) Prefixes bytes for logical addresses 0-3 */ 869 __IOM uint32_t PREFIX1; /*!< (@ 0x00000528) Prefixes bytes for logical addresses 4-7 */ 870 __IOM uint32_t TXADDRESS; /*!< (@ 0x0000052C) Transmit address select */ 871 __IOM uint32_t RXADDRESSES; /*!< (@ 0x00000530) Receive address select */ 872 __IOM uint32_t CRCCNF; /*!< (@ 0x00000534) CRC configuration */ 873 __IOM uint32_t CRCPOLY; /*!< (@ 0x00000538) CRC polynomial */ 874 __IOM uint32_t CRCINIT; /*!< (@ 0x0000053C) CRC initial value */ 875 __IM uint32_t RESERVED11; 876 __IOM uint32_t TIFS; /*!< (@ 0x00000544) Interframe spacing in us */ 877 __IM uint32_t RSSISAMPLE; /*!< (@ 0x00000548) RSSI sample */ 878 __IM uint32_t RESERVED12; 879 __IM uint32_t STATE; /*!< (@ 0x00000550) Current radio state */ 880 __IOM uint32_t DATAWHITEIV; /*!< (@ 0x00000554) Data whitening initial value */ 881 __IM uint32_t RESERVED13[2]; 882 __IOM uint32_t BCC; /*!< (@ 0x00000560) Bit counter compare */ 883 __IM uint32_t RESERVED14[39]; 884 __IOM uint32_t DAB[8]; /*!< (@ 0x00000600) Description collection: Device address base segment 885 n */ 886 __IOM uint32_t DAP[8]; /*!< (@ 0x00000620) Description collection: Device address prefix 887 n */ 888 __IOM uint32_t DACNF; /*!< (@ 0x00000640) Device address match configuration */ 889 __IOM uint32_t MHRMATCHCONF; /*!< (@ 0x00000644) Search pattern configuration */ 890 __IOM uint32_t MHRMATCHMAS; /*!< (@ 0x00000648) Pattern mask */ 891 __IM uint32_t RESERVED15; 892 __IOM uint32_t MODECNF0; /*!< (@ 0x00000650) Radio mode configuration register 0 */ 893 __IM uint32_t RESERVED16[3]; 894 __IOM uint32_t SFD; /*!< (@ 0x00000660) IEEE 802.15.4 start of frame delimiter */ 895 __IOM uint32_t EDCNT; /*!< (@ 0x00000664) IEEE 802.15.4 energy detect loop count */ 896 __IM uint32_t EDSAMPLE; /*!< (@ 0x00000668) IEEE 802.15.4 energy detect level */ 897 __IOM uint32_t CCACTRL; /*!< (@ 0x0000066C) IEEE 802.15.4 clear channel assessment control */ 898 __IM uint32_t RESERVED17[164]; 899 __IOM uint32_t DFEMODE; /*!< (@ 0x00000900) Whether to use Angle-of-Arrival (AOA) or Angle-of-Departure 900 (AOD) */ 901 __IOM uint32_t CTEINLINECONF; /*!< (@ 0x00000904) Configuration for CTE inline mode */ 902 __IM uint32_t RESERVED18[2]; 903 __IOM uint32_t DFECTRL1; /*!< (@ 0x00000910) Various configuration for Direction finding */ 904 __IOM uint32_t DFECTRL2; /*!< (@ 0x00000914) Start offset for Direction finding */ 905 __IM uint32_t RESERVED19[4]; 906 __IOM uint32_t SWITCHPATTERN; /*!< (@ 0x00000928) GPIO patterns to be used for each antenna */ 907 __IOM uint32_t CLEARPATTERN; /*!< (@ 0x0000092C) Clear the GPIO pattern array for antenna control */ 908 __IOM RADIO_PSEL_Type PSEL; /*!< (@ 0x00000930) Unspecified */ 909 __IOM RADIO_DFEPACKET_Type DFEPACKET; /*!< (@ 0x00000950) DFE packet EasyDMA channel */ 910 __IM uint32_t RESERVED20[424]; 911 __IOM uint32_t POWER; /*!< (@ 0x00000FFC) Peripheral power control */ 912 } NRF_RADIO_Type; /*!< Size = 4096 (0x1000) */ 913 914 915 916 /* =========================================================================================================================== */ 917 /* ================ UART0 ================ */ 918 /* =========================================================================================================================== */ 919 920 921 /** 922 * @brief Universal Asynchronous Receiver/Transmitter (UART0) 923 */ 924 925 typedef struct { /*!< (@ 0x40002000) UART0 Structure */ 926 __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start UART receiver */ 927 __OM uint32_t TASKS_STOPRX; /*!< (@ 0x00000004) Stop UART receiver */ 928 __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start UART transmitter */ 929 __OM uint32_t TASKS_STOPTX; /*!< (@ 0x0000000C) Stop UART transmitter */ 930 __IM uint32_t RESERVED[3]; 931 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend UART */ 932 __IM uint32_t RESERVED1[56]; 933 __IOM uint32_t EVENTS_CTS; /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send. */ 934 __IOM uint32_t EVENTS_NCTS; /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send. */ 935 __IOM uint32_t EVENTS_RXDRDY; /*!< (@ 0x00000108) Data received in RXD */ 936 __IM uint32_t RESERVED2[4]; 937 __IOM uint32_t EVENTS_TXDRDY; /*!< (@ 0x0000011C) Data sent from TXD */ 938 __IM uint32_t RESERVED3; 939 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) Error detected */ 940 __IM uint32_t RESERVED4[7]; 941 __IOM uint32_t EVENTS_RXTO; /*!< (@ 0x00000144) Receiver timeout */ 942 __IM uint32_t RESERVED5[46]; 943 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 944 __IM uint32_t RESERVED6[64]; 945 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 946 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 947 __IM uint32_t RESERVED7[93]; 948 __IOM uint32_t ERRORSRC; /*!< (@ 0x00000480) Error source */ 949 __IM uint32_t RESERVED8[31]; 950 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable UART */ 951 __IM uint32_t RESERVED9; 952 __IOM UART_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 953 __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */ 954 __OM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */ 955 __IM uint32_t RESERVED10; 956 __IOM uint32_t BAUDRATE; /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source 957 selected. */ 958 __IM uint32_t RESERVED11[17]; 959 __IOM uint32_t CONFIG; /*!< (@ 0x0000056C) Configuration of parity and hardware flow control */ 960 } NRF_UART_Type; /*!< Size = 1392 (0x570) */ 961 962 963 964 /* =========================================================================================================================== */ 965 /* ================ UARTE0 ================ */ 966 /* =========================================================================================================================== */ 967 968 969 /** 970 * @brief UART with EasyDMA (UARTE0) 971 */ 972 973 typedef struct { /*!< (@ 0x40002000) UARTE0 Structure */ 974 __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start UART receiver */ 975 __OM uint32_t TASKS_STOPRX; /*!< (@ 0x00000004) Stop UART receiver */ 976 __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start UART transmitter */ 977 __OM uint32_t TASKS_STOPTX; /*!< (@ 0x0000000C) Stop UART transmitter */ 978 __IM uint32_t RESERVED[7]; 979 __OM uint32_t TASKS_FLUSHRX; /*!< (@ 0x0000002C) Flush RX FIFO into RX buffer */ 980 __IM uint32_t RESERVED1[52]; 981 __IOM uint32_t EVENTS_CTS; /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send. */ 982 __IOM uint32_t EVENTS_NCTS; /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send. */ 983 __IOM uint32_t EVENTS_RXDRDY; /*!< (@ 0x00000108) Data received in RXD (but potentially not yet 984 transferred to Data RAM) */ 985 __IM uint32_t RESERVED2; 986 __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) Receive buffer is filled up */ 987 __IM uint32_t RESERVED3[2]; 988 __IOM uint32_t EVENTS_TXDRDY; /*!< (@ 0x0000011C) Data sent from TXD */ 989 __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000120) Last TX byte transmitted */ 990 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) Error detected */ 991 __IM uint32_t RESERVED4[7]; 992 __IOM uint32_t EVENTS_RXTO; /*!< (@ 0x00000144) Receiver timeout */ 993 __IM uint32_t RESERVED5; 994 __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) UART receiver has started */ 995 __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) UART transmitter has started */ 996 __IM uint32_t RESERVED6; 997 __IOM uint32_t EVENTS_TXSTOPPED; /*!< (@ 0x00000158) Transmitter stopped */ 998 __IM uint32_t RESERVED7[41]; 999 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1000 __IM uint32_t RESERVED8[63]; 1001 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1002 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1003 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1004 __IM uint32_t RESERVED9[93]; 1005 __IOM uint32_t ERRORSRC; /*!< (@ 0x00000480) Error source Note : this register is read / write 1006 one to clear. */ 1007 __IM uint32_t RESERVED10[31]; 1008 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable UART */ 1009 __IM uint32_t RESERVED11; 1010 __IOM UARTE_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1011 __IM uint32_t RESERVED12[3]; 1012 __IOM uint32_t BAUDRATE; /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source 1013 selected. */ 1014 __IM uint32_t RESERVED13[3]; 1015 __IOM UARTE_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1016 __IM uint32_t RESERVED14; 1017 __IOM UARTE_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1018 __IM uint32_t RESERVED15[7]; 1019 __IOM uint32_t CONFIG; /*!< (@ 0x0000056C) Configuration of parity and hardware flow control */ 1020 } NRF_UARTE_Type; /*!< Size = 1392 (0x570) */ 1021 1022 1023 1024 /* =========================================================================================================================== */ 1025 /* ================ SPI1 ================ */ 1026 /* =========================================================================================================================== */ 1027 1028 1029 /** 1030 * @brief Serial Peripheral Interface 0 (SPI1) 1031 */ 1032 1033 typedef struct { /*!< (@ 0x40003000) SPI1 Structure */ 1034 __IM uint32_t RESERVED[66]; 1035 __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000108) TXD byte sent and RXD byte received */ 1036 __IM uint32_t RESERVED1[126]; 1037 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1038 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1039 __IM uint32_t RESERVED2[125]; 1040 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPI */ 1041 __IM uint32_t RESERVED3; 1042 __IOM SPI_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1043 __IM uint32_t RESERVED4; 1044 __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */ 1045 __IOM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */ 1046 __IM uint32_t RESERVED5; 1047 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK 1048 source selected. */ 1049 __IM uint32_t RESERVED6[11]; 1050 __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */ 1051 } NRF_SPI_Type; /*!< Size = 1368 (0x558) */ 1052 1053 1054 1055 /* =========================================================================================================================== */ 1056 /* ================ SPIM1 ================ */ 1057 /* =========================================================================================================================== */ 1058 1059 1060 /** 1061 * @brief Serial Peripheral Interface Master with EasyDMA 0 (SPIM1) 1062 */ 1063 1064 typedef struct { /*!< (@ 0x40003000) SPIM1 Structure */ 1065 __IM uint32_t RESERVED[4]; 1066 __OM uint32_t TASKS_START; /*!< (@ 0x00000010) Start SPI transaction */ 1067 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop SPI transaction */ 1068 __IM uint32_t RESERVED1; 1069 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend SPI transaction */ 1070 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume SPI transaction */ 1071 __IM uint32_t RESERVED2[56]; 1072 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) SPI transaction has stopped */ 1073 __IM uint32_t RESERVED3[2]; 1074 __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) End of RXD buffer reached */ 1075 __IM uint32_t RESERVED4; 1076 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000118) End of RXD buffer and TXD buffer reached */ 1077 __IM uint32_t RESERVED5; 1078 __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000120) End of TXD buffer reached */ 1079 __IM uint32_t RESERVED6[10]; 1080 __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x0000014C) Transaction started */ 1081 __IM uint32_t RESERVED7[44]; 1082 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1083 __IM uint32_t RESERVED8[64]; 1084 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1085 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1086 __IM uint32_t RESERVED9[125]; 1087 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPIM */ 1088 __IM uint32_t RESERVED10; 1089 __IOM SPIM_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1090 __IM uint32_t RESERVED11[4]; 1091 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK 1092 source selected. */ 1093 __IM uint32_t RESERVED12[3]; 1094 __IOM SPIM_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1095 __IOM SPIM_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1096 __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */ 1097 __IM uint32_t RESERVED13[26]; 1098 __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character. Character clocked out in 1099 case and over-read of the TXD buffer. */ 1100 } NRF_SPIM_Type; /*!< Size = 1476 (0x5c4) */ 1101 1102 1103 1104 /* =========================================================================================================================== */ 1105 /* ================ SPIS1 ================ */ 1106 /* =========================================================================================================================== */ 1107 1108 1109 /** 1110 * @brief SPI Slave 0 (SPIS1) 1111 */ 1112 1113 typedef struct { /*!< (@ 0x40003000) SPIS1 Structure */ 1114 __IM uint32_t RESERVED[9]; 1115 __OM uint32_t TASKS_ACQUIRE; /*!< (@ 0x00000024) Acquire SPI semaphore */ 1116 __OM uint32_t TASKS_RELEASE; /*!< (@ 0x00000028) Release SPI semaphore, enabling the SPI slave 1117 to acquire it */ 1118 __IM uint32_t RESERVED1[54]; 1119 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000104) Granted transaction completed */ 1120 __IM uint32_t RESERVED2[2]; 1121 __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) End of RXD buffer reached */ 1122 __IM uint32_t RESERVED3[5]; 1123 __IOM uint32_t EVENTS_ACQUIRED; /*!< (@ 0x00000128) Semaphore acquired */ 1124 __IM uint32_t RESERVED4[53]; 1125 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1126 __IM uint32_t RESERVED5[64]; 1127 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1128 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1129 __IM uint32_t RESERVED6[61]; 1130 __IM uint32_t SEMSTAT; /*!< (@ 0x00000400) Semaphore status register */ 1131 __IM uint32_t RESERVED7[15]; 1132 __IOM uint32_t STATUS; /*!< (@ 0x00000440) Status from last transaction */ 1133 __IM uint32_t RESERVED8[47]; 1134 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPI slave */ 1135 __IM uint32_t RESERVED9; 1136 __IOM SPIS_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1137 __IM uint32_t RESERVED10[7]; 1138 __IOM SPIS_RXD_Type RXD; /*!< (@ 0x00000534) Unspecified */ 1139 __IOM SPIS_TXD_Type TXD; /*!< (@ 0x00000544) Unspecified */ 1140 __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */ 1141 __IM uint32_t RESERVED11; 1142 __IOM uint32_t DEF; /*!< (@ 0x0000055C) Default character. Character clocked out in case 1143 of an ignored transaction. */ 1144 __IM uint32_t RESERVED12[24]; 1145 __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character */ 1146 } NRF_SPIS_Type; /*!< Size = 1476 (0x5c4) */ 1147 1148 1149 1150 /* =========================================================================================================================== */ 1151 /* ================ TWI0 ================ */ 1152 /* =========================================================================================================================== */ 1153 1154 1155 /** 1156 * @brief I2C compatible Two-Wire Interface (TWI0) 1157 */ 1158 1159 typedef struct { /*!< (@ 0x40003000) TWI0 Structure */ 1160 __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start TWI receive sequence */ 1161 __IM uint32_t RESERVED; 1162 __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start TWI transmit sequence */ 1163 __IM uint32_t RESERVED1[2]; 1164 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction */ 1165 __IM uint32_t RESERVED2; 1166 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */ 1167 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */ 1168 __IM uint32_t RESERVED3[56]; 1169 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */ 1170 __IOM uint32_t EVENTS_RXDREADY; /*!< (@ 0x00000108) TWI RXD byte received */ 1171 __IM uint32_t RESERVED4[4]; 1172 __IOM uint32_t EVENTS_TXDSENT; /*!< (@ 0x0000011C) TWI TXD byte sent */ 1173 __IM uint32_t RESERVED5; 1174 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */ 1175 __IM uint32_t RESERVED6[4]; 1176 __IOM uint32_t EVENTS_BB; /*!< (@ 0x00000138) TWI byte boundary, generated before each byte 1177 that is sent or received */ 1178 __IM uint32_t RESERVED7[3]; 1179 __IOM uint32_t EVENTS_SUSPENDED; /*!< (@ 0x00000148) TWI entered the suspended state */ 1180 __IM uint32_t RESERVED8[45]; 1181 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1182 __IM uint32_t RESERVED9[64]; 1183 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1184 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1185 __IM uint32_t RESERVED10[110]; 1186 __IOM uint32_t ERRORSRC; /*!< (@ 0x000004C4) Error source */ 1187 __IM uint32_t RESERVED11[14]; 1188 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWI */ 1189 __IM uint32_t RESERVED12; 1190 __IOM TWI_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1191 __IM uint32_t RESERVED13[2]; 1192 __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */ 1193 __IOM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */ 1194 __IM uint32_t RESERVED14; 1195 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK 1196 source selected. */ 1197 __IM uint32_t RESERVED15[24]; 1198 __IOM uint32_t ADDRESS; /*!< (@ 0x00000588) Address used in the TWI transfer */ 1199 } NRF_TWI_Type; /*!< Size = 1420 (0x58c) */ 1200 1201 1202 1203 /* =========================================================================================================================== */ 1204 /* ================ TWIM0 ================ */ 1205 /* =========================================================================================================================== */ 1206 1207 1208 /** 1209 * @brief I2C compatible Two-Wire Master Interface with EasyDMA (TWIM0) 1210 */ 1211 1212 typedef struct { /*!< (@ 0x40003000) TWIM0 Structure */ 1213 __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start TWI receive sequence */ 1214 __IM uint32_t RESERVED; 1215 __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start TWI transmit sequence */ 1216 __IM uint32_t RESERVED1[2]; 1217 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction. Must be issued while the 1218 TWI master is not suspended. */ 1219 __IM uint32_t RESERVED2; 1220 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */ 1221 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */ 1222 __IM uint32_t RESERVED3[56]; 1223 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */ 1224 __IM uint32_t RESERVED4[7]; 1225 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */ 1226 __IM uint32_t RESERVED5[8]; 1227 __IOM uint32_t EVENTS_SUSPENDED; /*!< (@ 0x00000148) Last byte has been sent out after the SUSPEND 1228 task has been issued, TWI traffic is now 1229 suspended. */ 1230 __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) Receive sequence started */ 1231 __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) Transmit sequence started */ 1232 __IM uint32_t RESERVED6[2]; 1233 __IOM uint32_t EVENTS_LASTRX; /*!< (@ 0x0000015C) Byte boundary, starting to receive the last byte */ 1234 __IOM uint32_t EVENTS_LASTTX; /*!< (@ 0x00000160) Byte boundary, starting to transmit the last 1235 byte */ 1236 __IM uint32_t RESERVED7[39]; 1237 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1238 __IM uint32_t RESERVED8[63]; 1239 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1240 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1241 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1242 __IM uint32_t RESERVED9[110]; 1243 __IOM uint32_t ERRORSRC; /*!< (@ 0x000004C4) Error source */ 1244 __IM uint32_t RESERVED10[14]; 1245 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWIM */ 1246 __IM uint32_t RESERVED11; 1247 __IOM TWIM_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1248 __IM uint32_t RESERVED12[5]; 1249 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK 1250 source selected. */ 1251 __IM uint32_t RESERVED13[3]; 1252 __IOM TWIM_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1253 __IOM TWIM_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1254 __IM uint32_t RESERVED14[13]; 1255 __IOM uint32_t ADDRESS; /*!< (@ 0x00000588) Address used in the TWI transfer */ 1256 } NRF_TWIM_Type; /*!< Size = 1420 (0x58c) */ 1257 1258 1259 1260 /* =========================================================================================================================== */ 1261 /* ================ TWIS0 ================ */ 1262 /* =========================================================================================================================== */ 1263 1264 1265 /** 1266 * @brief I2C compatible Two-Wire Slave Interface with EasyDMA (TWIS0) 1267 */ 1268 1269 typedef struct { /*!< (@ 0x40003000) TWIS0 Structure */ 1270 __IM uint32_t RESERVED[5]; 1271 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction */ 1272 __IM uint32_t RESERVED1; 1273 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */ 1274 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */ 1275 __IM uint32_t RESERVED2[3]; 1276 __OM uint32_t TASKS_PREPARERX; /*!< (@ 0x00000030) Prepare the TWI slave to respond to a write command */ 1277 __OM uint32_t TASKS_PREPARETX; /*!< (@ 0x00000034) Prepare the TWI slave to respond to a read command */ 1278 __IM uint32_t RESERVED3[51]; 1279 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */ 1280 __IM uint32_t RESERVED4[7]; 1281 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */ 1282 __IM uint32_t RESERVED5[9]; 1283 __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) Receive sequence started */ 1284 __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) Transmit sequence started */ 1285 __IM uint32_t RESERVED6[4]; 1286 __IOM uint32_t EVENTS_WRITE; /*!< (@ 0x00000164) Write command received */ 1287 __IOM uint32_t EVENTS_READ; /*!< (@ 0x00000168) Read command received */ 1288 __IM uint32_t RESERVED7[37]; 1289 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1290 __IM uint32_t RESERVED8[63]; 1291 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1292 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1293 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1294 __IM uint32_t RESERVED9[113]; 1295 __IOM uint32_t ERRORSRC; /*!< (@ 0x000004D0) Error source */ 1296 __IM uint32_t MATCH; /*!< (@ 0x000004D4) Status register indicating which address had 1297 a match */ 1298 __IM uint32_t RESERVED10[10]; 1299 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWIS */ 1300 __IM uint32_t RESERVED11; 1301 __IOM TWIS_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1302 __IM uint32_t RESERVED12[9]; 1303 __IOM TWIS_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1304 __IOM TWIS_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1305 __IM uint32_t RESERVED13[13]; 1306 __IOM uint32_t ADDRESS[2]; /*!< (@ 0x00000588) Description collection: TWI slave address n */ 1307 __IM uint32_t RESERVED14; 1308 __IOM uint32_t CONFIG; /*!< (@ 0x00000594) Configuration register for the address match 1309 mechanism */ 1310 __IM uint32_t RESERVED15[10]; 1311 __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character. Character sent out in case 1312 of an over-read of the transmit buffer. */ 1313 } NRF_TWIS_Type; /*!< Size = 1476 (0x5c4) */ 1314 1315 1316 1317 /* =========================================================================================================================== */ 1318 /* ================ GPIOTE ================ */ 1319 /* =========================================================================================================================== */ 1320 1321 1322 /** 1323 * @brief GPIO Tasks and Events (GPIOTE) 1324 */ 1325 1326 typedef struct { /*!< (@ 0x40006000) GPIOTE Structure */ 1327 __OM uint32_t TASKS_OUT[8]; /*!< (@ 0x00000000) Description collection: Task for writing to pin 1328 specified in CONFIG[n].PSEL. Action on pin 1329 is configured in CONFIG[n].POLARITY. */ 1330 __IM uint32_t RESERVED[4]; 1331 __OM uint32_t TASKS_SET[8]; /*!< (@ 0x00000030) Description collection: Task for writing to pin 1332 specified in CONFIG[n].PSEL. Action on pin 1333 is to set it high. */ 1334 __IM uint32_t RESERVED1[4]; 1335 __OM uint32_t TASKS_CLR[8]; /*!< (@ 0x00000060) Description collection: Task for writing to pin 1336 specified in CONFIG[n].PSEL. Action on pin 1337 is to set it low. */ 1338 __IM uint32_t RESERVED2[32]; 1339 __IOM uint32_t EVENTS_IN[8]; /*!< (@ 0x00000100) Description collection: Event generated from 1340 pin specified in CONFIG[n].PSEL */ 1341 __IM uint32_t RESERVED3[23]; 1342 __IOM uint32_t EVENTS_PORT; /*!< (@ 0x0000017C) Event generated from multiple input GPIO pins 1343 with SENSE mechanism enabled */ 1344 __IM uint32_t RESERVED4[97]; 1345 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1346 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1347 __IM uint32_t RESERVED5[129]; 1348 __IOM uint32_t CONFIG[8]; /*!< (@ 0x00000510) Description collection: Configuration for OUT[n], 1349 SET[n] and CLR[n] tasks and IN[n] event */ 1350 } NRF_GPIOTE_Type; /*!< Size = 1328 (0x530) */ 1351 1352 1353 1354 /* =========================================================================================================================== */ 1355 /* ================ SAADC ================ */ 1356 /* =========================================================================================================================== */ 1357 1358 1359 /** 1360 * @brief Analog to Digital Converter (SAADC) 1361 */ 1362 1363 typedef struct { /*!< (@ 0x40007000) SAADC Structure */ 1364 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start the ADC and prepare the result buffer in 1365 RAM */ 1366 __OM uint32_t TASKS_SAMPLE; /*!< (@ 0x00000004) Take one ADC sample, if scan is enabled all channels 1367 are sampled */ 1368 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop the ADC and terminate any on-going conversion */ 1369 __OM uint32_t TASKS_CALIBRATEOFFSET; /*!< (@ 0x0000000C) Starts offset auto-calibration */ 1370 __IM uint32_t RESERVED[60]; 1371 __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000100) The ADC has started */ 1372 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000104) The ADC has filled up the Result buffer */ 1373 __IOM uint32_t EVENTS_DONE; /*!< (@ 0x00000108) A conversion task has been completed. Depending 1374 on the mode, multiple conversions might 1375 be needed for a result to be transferred 1376 to RAM. */ 1377 __IOM uint32_t EVENTS_RESULTDONE; /*!< (@ 0x0000010C) A result is ready to get transferred to RAM. */ 1378 __IOM uint32_t EVENTS_CALIBRATEDONE; /*!< (@ 0x00000110) Calibration is complete */ 1379 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000114) The ADC has stopped */ 1380 __IOM SAADC_EVENTS_CH_Type EVENTS_CH[8]; /*!< (@ 0x00000118) Peripheral events. */ 1381 __IM uint32_t RESERVED1[106]; 1382 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1383 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1384 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1385 __IM uint32_t RESERVED2[61]; 1386 __IM uint32_t STATUS; /*!< (@ 0x00000400) Status */ 1387 __IM uint32_t RESERVED3[63]; 1388 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable or disable ADC */ 1389 __IM uint32_t RESERVED4[3]; 1390 __IOM SAADC_CH_Type CH[8]; /*!< (@ 0x00000510) Unspecified */ 1391 __IM uint32_t RESERVED5[24]; 1392 __IOM uint32_t RESOLUTION; /*!< (@ 0x000005F0) Resolution configuration */ 1393 __IOM uint32_t OVERSAMPLE; /*!< (@ 0x000005F4) Oversampling configuration. OVERSAMPLE should 1394 not be combined with SCAN. The RESOLUTION 1395 is applied before averaging, thus for high 1396 OVERSAMPLE a higher RESOLUTION should be 1397 used. */ 1398 __IOM uint32_t SAMPLERATE; /*!< (@ 0x000005F8) Controls normal or continuous sample rate */ 1399 __IM uint32_t RESERVED6[12]; 1400 __IOM SAADC_RESULT_Type RESULT; /*!< (@ 0x0000062C) RESULT EasyDMA channel */ 1401 } NRF_SAADC_Type; /*!< Size = 1592 (0x638) */ 1402 1403 1404 1405 /* =========================================================================================================================== */ 1406 /* ================ TIMER0 ================ */ 1407 /* =========================================================================================================================== */ 1408 1409 1410 /** 1411 * @brief Timer/Counter 0 (TIMER0) 1412 */ 1413 1414 typedef struct { /*!< (@ 0x40008000) TIMER0 Structure */ 1415 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start Timer */ 1416 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop Timer */ 1417 __OM uint32_t TASKS_COUNT; /*!< (@ 0x00000008) Increment Timer (Counter mode only) */ 1418 __OM uint32_t TASKS_CLEAR; /*!< (@ 0x0000000C) Clear time */ 1419 __OM uint32_t TASKS_SHUTDOWN; /*!< (@ 0x00000010) Deprecated register - Shut down timer */ 1420 __IM uint32_t RESERVED[11]; 1421 __OM uint32_t TASKS_CAPTURE[6]; /*!< (@ 0x00000040) Description collection: Capture Timer value to 1422 CC[n] register */ 1423 __IM uint32_t RESERVED1[58]; 1424 __IOM uint32_t EVENTS_COMPARE[6]; /*!< (@ 0x00000140) Description collection: Compare event on CC[n] 1425 match */ 1426 __IM uint32_t RESERVED2[42]; 1427 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1428 __IM uint32_t RESERVED3[64]; 1429 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1430 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1431 __IM uint32_t RESERVED4[126]; 1432 __IOM uint32_t MODE; /*!< (@ 0x00000504) Timer mode selection */ 1433 __IOM uint32_t BITMODE; /*!< (@ 0x00000508) Configure the number of bits used by the TIMER */ 1434 __IM uint32_t RESERVED5; 1435 __IOM uint32_t PRESCALER; /*!< (@ 0x00000510) Timer prescaler register */ 1436 __IM uint32_t RESERVED6[11]; 1437 __IOM uint32_t CC[6]; /*!< (@ 0x00000540) Description collection: Capture/Compare register 1438 n */ 1439 } NRF_TIMER_Type; /*!< Size = 1368 (0x558) */ 1440 1441 1442 1443 /* =========================================================================================================================== */ 1444 /* ================ RTC0 ================ */ 1445 /* =========================================================================================================================== */ 1446 1447 1448 /** 1449 * @brief Real time counter 0 (RTC0) 1450 */ 1451 1452 typedef struct { /*!< (@ 0x4000B000) RTC0 Structure */ 1453 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start RTC COUNTER */ 1454 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop RTC COUNTER */ 1455 __OM uint32_t TASKS_CLEAR; /*!< (@ 0x00000008) Clear RTC COUNTER */ 1456 __OM uint32_t TASKS_TRIGOVRFLW; /*!< (@ 0x0000000C) Set COUNTER to 0xFFFFF0 */ 1457 __IM uint32_t RESERVED[60]; 1458 __IOM uint32_t EVENTS_TICK; /*!< (@ 0x00000100) Event on COUNTER increment */ 1459 __IOM uint32_t EVENTS_OVRFLW; /*!< (@ 0x00000104) Event on COUNTER overflow */ 1460 __IM uint32_t RESERVED1[14]; 1461 __IOM uint32_t EVENTS_COMPARE[4]; /*!< (@ 0x00000140) Description collection: Compare event on CC[n] 1462 match */ 1463 __IM uint32_t RESERVED2[109]; 1464 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1465 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1466 __IM uint32_t RESERVED3[13]; 1467 __IOM uint32_t EVTEN; /*!< (@ 0x00000340) Enable or disable event routing */ 1468 __IOM uint32_t EVTENSET; /*!< (@ 0x00000344) Enable event routing */ 1469 __IOM uint32_t EVTENCLR; /*!< (@ 0x00000348) Disable event routing */ 1470 __IM uint32_t RESERVED4[110]; 1471 __IM uint32_t COUNTER; /*!< (@ 0x00000504) Current COUNTER value */ 1472 __IOM uint32_t PRESCALER; /*!< (@ 0x00000508) 12 bit prescaler for COUNTER frequency (32768/(PRESCALER+1)).Mu 1473 t be written when RTC is stopped */ 1474 __IM uint32_t RESERVED5[13]; 1475 __IOM uint32_t CC[4]; /*!< (@ 0x00000540) Description collection: Compare register n */ 1476 } NRF_RTC_Type; /*!< Size = 1360 (0x550) */ 1477 1478 1479 1480 /* =========================================================================================================================== */ 1481 /* ================ TEMP ================ */ 1482 /* =========================================================================================================================== */ 1483 1484 1485 /** 1486 * @brief Temperature Sensor (TEMP) 1487 */ 1488 1489 typedef struct { /*!< (@ 0x4000C000) TEMP Structure */ 1490 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start temperature measurement */ 1491 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop temperature measurement */ 1492 __IM uint32_t RESERVED[62]; 1493 __IOM uint32_t EVENTS_DATARDY; /*!< (@ 0x00000100) Temperature measurement complete, data ready */ 1494 __IM uint32_t RESERVED1[128]; 1495 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1496 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1497 __IM uint32_t RESERVED2[127]; 1498 __IM int32_t TEMP; /*!< (@ 0x00000508) Temperature in degC (0.25deg steps) */ 1499 __IM uint32_t RESERVED3[5]; 1500 __IOM uint32_t A0; /*!< (@ 0x00000520) Slope of 1st piece wise linear function */ 1501 __IOM uint32_t A1; /*!< (@ 0x00000524) Slope of 2nd piece wise linear function */ 1502 __IOM uint32_t A2; /*!< (@ 0x00000528) Slope of 3rd piece wise linear function */ 1503 __IOM uint32_t A3; /*!< (@ 0x0000052C) Slope of 4th piece wise linear function */ 1504 __IOM uint32_t A4; /*!< (@ 0x00000530) Slope of 5th piece wise linear function */ 1505 __IOM uint32_t A5; /*!< (@ 0x00000534) Slope of 6th piece wise linear function */ 1506 __IM uint32_t RESERVED4[2]; 1507 __IOM uint32_t B0; /*!< (@ 0x00000540) y-intercept of 1st piece wise linear function */ 1508 __IOM uint32_t B1; /*!< (@ 0x00000544) y-intercept of 2nd piece wise linear function */ 1509 __IOM uint32_t B2; /*!< (@ 0x00000548) y-intercept of 3rd piece wise linear function */ 1510 __IOM uint32_t B3; /*!< (@ 0x0000054C) y-intercept of 4th piece wise linear function */ 1511 __IOM uint32_t B4; /*!< (@ 0x00000550) y-intercept of 5th piece wise linear function */ 1512 __IOM uint32_t B5; /*!< (@ 0x00000554) y-intercept of 6th piece wise linear function */ 1513 __IM uint32_t RESERVED5[2]; 1514 __IOM uint32_t T0; /*!< (@ 0x00000560) End point of 1st piece wise linear function */ 1515 __IOM uint32_t T1; /*!< (@ 0x00000564) End point of 2nd piece wise linear function */ 1516 __IOM uint32_t T2; /*!< (@ 0x00000568) End point of 3rd piece wise linear function */ 1517 __IOM uint32_t T3; /*!< (@ 0x0000056C) End point of 4th piece wise linear function */ 1518 __IOM uint32_t T4; /*!< (@ 0x00000570) End point of 5th piece wise linear function */ 1519 } NRF_TEMP_Type; /*!< Size = 1396 (0x574) */ 1520 1521 1522 1523 /* =========================================================================================================================== */ 1524 /* ================ RNG ================ */ 1525 /* =========================================================================================================================== */ 1526 1527 1528 /** 1529 * @brief Random Number Generator (RNG) 1530 */ 1531 1532 typedef struct { /*!< (@ 0x4000D000) RNG Structure */ 1533 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Task starting the random number generator */ 1534 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Task stopping the random number generator */ 1535 __IM uint32_t RESERVED[62]; 1536 __IOM uint32_t EVENTS_VALRDY; /*!< (@ 0x00000100) Event being generated for every new random number 1537 written to the VALUE register */ 1538 __IM uint32_t RESERVED1[63]; 1539 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1540 __IM uint32_t RESERVED2[64]; 1541 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1542 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1543 __IM uint32_t RESERVED3[126]; 1544 __IOM uint32_t CONFIG; /*!< (@ 0x00000504) Configuration register */ 1545 __IM uint32_t VALUE; /*!< (@ 0x00000508) Output random number */ 1546 } NRF_RNG_Type; /*!< Size = 1292 (0x50c) */ 1547 1548 1549 1550 /* =========================================================================================================================== */ 1551 /* ================ ECB ================ */ 1552 /* =========================================================================================================================== */ 1553 1554 1555 /** 1556 * @brief AES ECB Mode Encryption (ECB) 1557 */ 1558 1559 typedef struct { /*!< (@ 0x4000E000) ECB Structure */ 1560 __OM uint32_t TASKS_STARTECB; /*!< (@ 0x00000000) Start ECB block encrypt */ 1561 __OM uint32_t TASKS_STOPECB; /*!< (@ 0x00000004) Abort a possible executing ECB operation */ 1562 __IM uint32_t RESERVED[62]; 1563 __IOM uint32_t EVENTS_ENDECB; /*!< (@ 0x00000100) ECB block encrypt complete */ 1564 __IOM uint32_t EVENTS_ERRORECB; /*!< (@ 0x00000104) ECB block encrypt aborted because of a STOPECB 1565 task or due to an error */ 1566 __IM uint32_t RESERVED1[127]; 1567 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1568 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1569 __IM uint32_t RESERVED2[126]; 1570 __IOM uint32_t ECBDATAPTR; /*!< (@ 0x00000504) ECB block encrypt memory pointers */ 1571 } NRF_ECB_Type; /*!< Size = 1288 (0x508) */ 1572 1573 1574 1575 /* =========================================================================================================================== */ 1576 /* ================ AAR ================ */ 1577 /* =========================================================================================================================== */ 1578 1579 1580 /** 1581 * @brief Accelerated Address Resolver (AAR) 1582 */ 1583 1584 typedef struct { /*!< (@ 0x4000F000) AAR Structure */ 1585 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start resolving addresses based on IRKs specified 1586 in the IRK data structure */ 1587 __IM uint32_t RESERVED; 1588 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop resolving addresses */ 1589 __IM uint32_t RESERVED1[61]; 1590 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000100) Address resolution procedure complete */ 1591 __IOM uint32_t EVENTS_RESOLVED; /*!< (@ 0x00000104) Address resolved */ 1592 __IOM uint32_t EVENTS_NOTRESOLVED; /*!< (@ 0x00000108) Address not resolved */ 1593 __IM uint32_t RESERVED2[126]; 1594 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1595 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1596 __IM uint32_t RESERVED3[61]; 1597 __IM uint32_t STATUS; /*!< (@ 0x00000400) Resolution status */ 1598 __IM uint32_t RESERVED4[63]; 1599 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable AAR */ 1600 __IOM uint32_t NIRK; /*!< (@ 0x00000504) Number of IRKs */ 1601 __IOM uint32_t IRKPTR; /*!< (@ 0x00000508) Pointer to IRK data structure */ 1602 __IM uint32_t RESERVED5; 1603 __IOM uint32_t ADDRPTR; /*!< (@ 0x00000510) Pointer to the resolvable address */ 1604 __IOM uint32_t SCRATCHPTR; /*!< (@ 0x00000514) Pointer to data area used for temporary storage */ 1605 } NRF_AAR_Type; /*!< Size = 1304 (0x518) */ 1606 1607 1608 1609 /* =========================================================================================================================== */ 1610 /* ================ CCM ================ */ 1611 /* =========================================================================================================================== */ 1612 1613 1614 /** 1615 * @brief AES CCM mode encryption (CCM) 1616 */ 1617 1618 typedef struct { /*!< (@ 0x4000F000) CCM Structure */ 1619 __OM uint32_t TASKS_KSGEN; /*!< (@ 0x00000000) Start generation of keystream. This operation 1620 will stop by itself when completed. */ 1621 __OM uint32_t TASKS_CRYPT; /*!< (@ 0x00000004) Start encryption/decryption. This operation will 1622 stop by itself when completed. */ 1623 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop encryption/decryption */ 1624 __OM uint32_t TASKS_RATEOVERRIDE; /*!< (@ 0x0000000C) Override DATARATE setting in MODE register with 1625 the contents of the RATEOVERRIDE register 1626 for any ongoing encryption/decryption */ 1627 __IM uint32_t RESERVED[60]; 1628 __IOM uint32_t EVENTS_ENDKSGEN; /*!< (@ 0x00000100) Keystream generation complete */ 1629 __IOM uint32_t EVENTS_ENDCRYPT; /*!< (@ 0x00000104) Encrypt/decrypt complete */ 1630 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000108) Deprecated register - CCM error event */ 1631 __IM uint32_t RESERVED1[61]; 1632 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1633 __IM uint32_t RESERVED2[64]; 1634 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1635 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1636 __IM uint32_t RESERVED3[61]; 1637 __IM uint32_t MICSTATUS; /*!< (@ 0x00000400) MIC check result */ 1638 __IM uint32_t RESERVED4[63]; 1639 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable */ 1640 __IOM uint32_t MODE; /*!< (@ 0x00000504) Operation mode */ 1641 __IOM uint32_t CNFPTR; /*!< (@ 0x00000508) Pointer to data structure holding the AES key 1642 and the NONCE vector */ 1643 __IOM uint32_t INPTR; /*!< (@ 0x0000050C) Input pointer */ 1644 __IOM uint32_t OUTPTR; /*!< (@ 0x00000510) Output pointer */ 1645 __IOM uint32_t SCRATCHPTR; /*!< (@ 0x00000514) Pointer to data area used for temporary storage */ 1646 __IOM uint32_t MAXPACKETSIZE; /*!< (@ 0x00000518) Length of keystream generated when MODE.LENGTH 1647 = Extended */ 1648 __IOM uint32_t RATEOVERRIDE; /*!< (@ 0x0000051C) Data rate override setting. */ 1649 } NRF_CCM_Type; /*!< Size = 1312 (0x520) */ 1650 1651 1652 1653 /* =========================================================================================================================== */ 1654 /* ================ WDT ================ */ 1655 /* =========================================================================================================================== */ 1656 1657 1658 /** 1659 * @brief Watchdog Timer (WDT) 1660 */ 1661 1662 typedef struct { /*!< (@ 0x40010000) WDT Structure */ 1663 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start the watchdog */ 1664 __IM uint32_t RESERVED[63]; 1665 __IOM uint32_t EVENTS_TIMEOUT; /*!< (@ 0x00000100) Watchdog timeout */ 1666 __IM uint32_t RESERVED1[128]; 1667 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1668 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1669 __IM uint32_t RESERVED2[61]; 1670 __IM uint32_t RUNSTATUS; /*!< (@ 0x00000400) Run status */ 1671 __IM uint32_t REQSTATUS; /*!< (@ 0x00000404) Request status */ 1672 __IM uint32_t RESERVED3[63]; 1673 __IOM uint32_t CRV; /*!< (@ 0x00000504) Counter reload value */ 1674 __IOM uint32_t RREN; /*!< (@ 0x00000508) Enable register for reload request registers */ 1675 __IOM uint32_t CONFIG; /*!< (@ 0x0000050C) Configuration register */ 1676 __IM uint32_t RESERVED4[60]; 1677 __OM uint32_t RR[8]; /*!< (@ 0x00000600) Description collection: Reload request n */ 1678 } NRF_WDT_Type; /*!< Size = 1568 (0x620) */ 1679 1680 1681 1682 /* =========================================================================================================================== */ 1683 /* ================ QDEC ================ */ 1684 /* =========================================================================================================================== */ 1685 1686 1687 /** 1688 * @brief Quadrature Decoder (QDEC) 1689 */ 1690 1691 typedef struct { /*!< (@ 0x40012000) QDEC Structure */ 1692 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Task starting the quadrature decoder */ 1693 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Task stopping the quadrature decoder */ 1694 __OM uint32_t TASKS_READCLRACC; /*!< (@ 0x00000008) Read and clear ACC and ACCDBL */ 1695 __OM uint32_t TASKS_RDCLRACC; /*!< (@ 0x0000000C) Read and clear ACC */ 1696 __OM uint32_t TASKS_RDCLRDBL; /*!< (@ 0x00000010) Read and clear ACCDBL */ 1697 __IM uint32_t RESERVED[59]; 1698 __IOM uint32_t EVENTS_SAMPLERDY; /*!< (@ 0x00000100) Event being generated for every new sample value 1699 written to the SAMPLE register */ 1700 __IOM uint32_t EVENTS_REPORTRDY; /*!< (@ 0x00000104) Non-null report ready */ 1701 __IOM uint32_t EVENTS_ACCOF; /*!< (@ 0x00000108) ACC or ACCDBL register overflow */ 1702 __IOM uint32_t EVENTS_DBLRDY; /*!< (@ 0x0000010C) Double displacement(s) detected */ 1703 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000110) QDEC has been stopped */ 1704 __IM uint32_t RESERVED1[59]; 1705 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1706 __IM uint32_t RESERVED2[64]; 1707 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1708 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1709 __IM uint32_t RESERVED3[125]; 1710 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable the quadrature decoder */ 1711 __IOM uint32_t LEDPOL; /*!< (@ 0x00000504) LED output pin polarity */ 1712 __IOM uint32_t SAMPLEPER; /*!< (@ 0x00000508) Sample period */ 1713 __IM int32_t SAMPLE; /*!< (@ 0x0000050C) Motion sample value */ 1714 __IOM uint32_t REPORTPER; /*!< (@ 0x00000510) Number of samples to be taken before REPORTRDY 1715 and DBLRDY events can be generated */ 1716 __IM int32_t ACC; /*!< (@ 0x00000514) Register accumulating the valid transitions */ 1717 __IM int32_t ACCREAD; /*!< (@ 0x00000518) Snapshot of the ACC register, updated by the 1718 READCLRACC or RDCLRACC task */ 1719 __IOM QDEC_PSEL_Type PSEL; /*!< (@ 0x0000051C) Unspecified */ 1720 __IOM uint32_t DBFEN; /*!< (@ 0x00000528) Enable input debounce filters */ 1721 __IM uint32_t RESERVED4[5]; 1722 __IOM uint32_t LEDPRE; /*!< (@ 0x00000540) Time period the LED is switched ON prior to sampling */ 1723 __IM uint32_t ACCDBL; /*!< (@ 0x00000544) Register accumulating the number of detected 1724 double transitions */ 1725 __IM uint32_t ACCDBLREAD; /*!< (@ 0x00000548) Snapshot of the ACCDBL, updated by the READCLRACC 1726 or RDCLRDBL task */ 1727 } NRF_QDEC_Type; /*!< Size = 1356 (0x54c) */ 1728 1729 1730 1731 /* =========================================================================================================================== */ 1732 /* ================ COMP ================ */ 1733 /* =========================================================================================================================== */ 1734 1735 1736 /** 1737 * @brief Comparator (COMP) 1738 */ 1739 1740 typedef struct { /*!< (@ 0x40013000) COMP Structure */ 1741 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start comparator */ 1742 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop comparator */ 1743 __OM uint32_t TASKS_SAMPLE; /*!< (@ 0x00000008) Sample comparator value */ 1744 __IM uint32_t RESERVED[61]; 1745 __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) COMP is ready and output is valid */ 1746 __IOM uint32_t EVENTS_DOWN; /*!< (@ 0x00000104) Downward crossing */ 1747 __IOM uint32_t EVENTS_UP; /*!< (@ 0x00000108) Upward crossing */ 1748 __IOM uint32_t EVENTS_CROSS; /*!< (@ 0x0000010C) Downward or upward crossing */ 1749 __IM uint32_t RESERVED1[60]; 1750 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1751 __IM uint32_t RESERVED2[63]; 1752 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1753 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1754 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1755 __IM uint32_t RESERVED3[61]; 1756 __IM uint32_t RESULT; /*!< (@ 0x00000400) Compare result */ 1757 __IM uint32_t RESERVED4[63]; 1758 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) COMP enable */ 1759 __IOM uint32_t PSEL; /*!< (@ 0x00000504) Pin select */ 1760 __IOM uint32_t REFSEL; /*!< (@ 0x00000508) Reference source select for single-ended mode */ 1761 __IOM uint32_t EXTREFSEL; /*!< (@ 0x0000050C) External reference select */ 1762 __IM uint32_t RESERVED5[8]; 1763 __IOM uint32_t TH; /*!< (@ 0x00000530) Threshold configuration for hysteresis unit */ 1764 __IOM uint32_t MODE; /*!< (@ 0x00000534) Mode configuration */ 1765 __IOM uint32_t HYST; /*!< (@ 0x00000538) Comparator hysteresis enable */ 1766 } NRF_COMP_Type; /*!< Size = 1340 (0x53c) */ 1767 1768 1769 1770 /* =========================================================================================================================== */ 1771 /* ================ EGU0 ================ */ 1772 /* =========================================================================================================================== */ 1773 1774 1775 /** 1776 * @brief Event generator unit 0 (EGU0) 1777 */ 1778 1779 typedef struct { /*!< (@ 0x40014000) EGU0 Structure */ 1780 __OM uint32_t TASKS_TRIGGER[16]; /*!< (@ 0x00000000) Description collection: Trigger n for triggering 1781 the corresponding TRIGGERED[n] event */ 1782 __IM uint32_t RESERVED[48]; 1783 __IOM uint32_t EVENTS_TRIGGERED[16]; /*!< (@ 0x00000100) Description collection: Event number n generated 1784 by triggering the corresponding TRIGGER[n] 1785 task */ 1786 __IM uint32_t RESERVED1[112]; 1787 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1788 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1789 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1790 } NRF_EGU_Type; /*!< Size = 780 (0x30c) */ 1791 1792 1793 1794 /* =========================================================================================================================== */ 1795 /* ================ SWI0 ================ */ 1796 /* =========================================================================================================================== */ 1797 1798 1799 /** 1800 * @brief Software interrupt 0 (SWI0) 1801 */ 1802 1803 typedef struct { /*!< (@ 0x40014000) SWI0 Structure */ 1804 __IM uint32_t UNUSED; /*!< (@ 0x00000000) Unused. */ 1805 } NRF_SWI_Type; /*!< Size = 4 (0x4) */ 1806 1807 1808 1809 /* =========================================================================================================================== */ 1810 /* ================ PWM0 ================ */ 1811 /* =========================================================================================================================== */ 1812 1813 1814 /** 1815 * @brief Pulse width modulation unit (PWM0) 1816 */ 1817 1818 typedef struct { /*!< (@ 0x4001C000) PWM0 Structure */ 1819 __IM uint32_t RESERVED; 1820 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops PWM pulse generation on all channels at 1821 the end of current PWM period, and stops 1822 sequence playback */ 1823 __OM uint32_t TASKS_SEQSTART[2]; /*!< (@ 0x00000008) Description collection: Loads the first PWM value 1824 on all enabled channels from sequence n, 1825 and starts playing that sequence at the 1826 rate defined in SEQ[n]REFRESH and/or DECODER.MODE. 1827 Causes PWM generation to start if not running. */ 1828 __OM uint32_t TASKS_NEXTSTEP; /*!< (@ 0x00000010) Steps by one value in the current sequence on 1829 all enabled channels if DECODER.MODE=NextStep. 1830 Does not cause PWM generation to start if 1831 not running. */ 1832 __IM uint32_t RESERVED1[60]; 1833 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) Response to STOP task, emitted when PWM pulses 1834 are no longer generated */ 1835 __IOM uint32_t EVENTS_SEQSTARTED[2]; /*!< (@ 0x00000108) Description collection: First PWM period started 1836 on sequence n */ 1837 __IOM uint32_t EVENTS_SEQEND[2]; /*!< (@ 0x00000110) Description collection: Emitted at end of every 1838 sequence n, when last value from RAM has 1839 been applied to wave counter */ 1840 __IOM uint32_t EVENTS_PWMPERIODEND; /*!< (@ 0x00000118) Emitted at the end of each PWM period */ 1841 __IOM uint32_t EVENTS_LOOPSDONE; /*!< (@ 0x0000011C) Concatenated sequences have been played the amount 1842 of times defined in LOOP.CNT */ 1843 __IM uint32_t RESERVED2[56]; 1844 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1845 __IM uint32_t RESERVED3[63]; 1846 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1847 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1848 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1849 __IM uint32_t RESERVED4[125]; 1850 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) PWM module enable register */ 1851 __IOM uint32_t MODE; /*!< (@ 0x00000504) Selects operating mode of the wave counter */ 1852 __IOM uint32_t COUNTERTOP; /*!< (@ 0x00000508) Value up to which the pulse generator counter 1853 counts */ 1854 __IOM uint32_t PRESCALER; /*!< (@ 0x0000050C) Configuration for PWM_CLK */ 1855 __IOM uint32_t DECODER; /*!< (@ 0x00000510) Configuration of the decoder */ 1856 __IOM uint32_t LOOP; /*!< (@ 0x00000514) Number of playbacks of a loop */ 1857 __IM uint32_t RESERVED5[2]; 1858 __IOM PWM_SEQ_Type SEQ[2]; /*!< (@ 0x00000520) Unspecified */ 1859 __IOM PWM_PSEL_Type PSEL; /*!< (@ 0x00000560) Unspecified */ 1860 } NRF_PWM_Type; /*!< Size = 1392 (0x570) */ 1861 1862 1863 1864 /* =========================================================================================================================== */ 1865 /* ================ PDM ================ */ 1866 /* =========================================================================================================================== */ 1867 1868 1869 /** 1870 * @brief Pulse Density Modulation (Digital Microphone) Interface (PDM) 1871 */ 1872 1873 typedef struct { /*!< (@ 0x4001D000) PDM Structure */ 1874 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Starts continuous PDM transfer */ 1875 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops PDM transfer */ 1876 __IM uint32_t RESERVED[62]; 1877 __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000100) PDM transfer has started */ 1878 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) PDM transfer has finished */ 1879 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000108) The PDM has written the last sample specified 1880 by SAMPLE.MAXCNT (or the last sample after 1881 a STOP task has been received) to Data RAM */ 1882 __IM uint32_t RESERVED1[125]; 1883 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1884 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1885 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1886 __IM uint32_t RESERVED2[125]; 1887 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) PDM module enable register */ 1888 __IOM uint32_t PDMCLKCTRL; /*!< (@ 0x00000504) PDM clock generator control */ 1889 __IOM uint32_t MODE; /*!< (@ 0x00000508) Defines the routing of the connected PDM microphones' 1890 signals */ 1891 __IM uint32_t RESERVED3[3]; 1892 __IOM uint32_t GAINL; /*!< (@ 0x00000518) Left output gain adjustment */ 1893 __IOM uint32_t GAINR; /*!< (@ 0x0000051C) Right output gain adjustment */ 1894 __IM uint32_t RESERVED4[8]; 1895 __IOM PDM_PSEL_Type PSEL; /*!< (@ 0x00000540) Unspecified */ 1896 __IM uint32_t RESERVED5[6]; 1897 __IOM PDM_SAMPLE_Type SAMPLE; /*!< (@ 0x00000560) Unspecified */ 1898 } NRF_PDM_Type; /*!< Size = 1384 (0x568) */ 1899 1900 1901 1902 /* =========================================================================================================================== */ 1903 /* ================ NVMC ================ */ 1904 /* =========================================================================================================================== */ 1905 1906 1907 /** 1908 * @brief Non-volatile memory controller (NVMC) 1909 */ 1910 1911 typedef struct { /*!< (@ 0x4001E000) NVMC Structure */ 1912 __IM uint32_t RESERVED[256]; 1913 __IM uint32_t READY; /*!< (@ 0x00000400) Ready flag */ 1914 __IM uint32_t RESERVED1[64]; 1915 __IOM uint32_t CONFIG; /*!< (@ 0x00000504) Configuration register */ 1916 1917 union { 1918 __IOM uint32_t ERASEPAGE; /*!< (@ 0x00000508) Register for erasing a page in code area */ 1919 __IOM uint32_t ERASEPCR1; /*!< (@ 0x00000508) Deprecated register - Register for erasing a 1920 page in code area. Equivalent to ERASEPAGE. */ 1921 }; 1922 __IOM uint32_t ERASEALL; /*!< (@ 0x0000050C) Register for erasing all non-volatile user memory */ 1923 __IOM uint32_t ERASEPCR0; /*!< (@ 0x00000510) Deprecated register - Register for erasing a 1924 page in code area. Equivalent to ERASEPAGE. */ 1925 __IOM uint32_t ERASEUICR; /*!< (@ 0x00000514) Register for erasing user information configuration 1926 registers */ 1927 __IOM uint32_t ERASEPAGEPARTIAL; /*!< (@ 0x00000518) Register for partial erase of a page in code 1928 area */ 1929 __IOM uint32_t ERASEPAGEPARTIALCFG; /*!< (@ 0x0000051C) Register for partial erase configuration */ 1930 } NRF_NVMC_Type; /*!< Size = 1312 (0x520) */ 1931 1932 1933 1934 /* =========================================================================================================================== */ 1935 /* ================ PPI ================ */ 1936 /* =========================================================================================================================== */ 1937 1938 1939 /** 1940 * @brief Programmable Peripheral Interconnect (PPI) 1941 */ 1942 1943 typedef struct { /*!< (@ 0x4001F000) PPI Structure */ 1944 __OM PPI_TASKS_CHG_Type TASKS_CHG[6]; /*!< (@ 0x00000000) Channel group tasks */ 1945 __IM uint32_t RESERVED[308]; 1946 __IOM uint32_t CHEN; /*!< (@ 0x00000500) Channel enable register */ 1947 __IOM uint32_t CHENSET; /*!< (@ 0x00000504) Channel enable set register */ 1948 __IOM uint32_t CHENCLR; /*!< (@ 0x00000508) Channel enable clear register */ 1949 __IM uint32_t RESERVED1; 1950 __IOM PPI_CH_Type CH[20]; /*!< (@ 0x00000510) PPI Channel */ 1951 __IM uint32_t RESERVED2[148]; 1952 __IOM uint32_t CHG[6]; /*!< (@ 0x00000800) Description collection: Channel group n */ 1953 __IM uint32_t RESERVED3[62]; 1954 __IOM PPI_FORK_Type FORK[32]; /*!< (@ 0x00000910) Fork */ 1955 } NRF_PPI_Type; /*!< Size = 2448 (0x990) */ 1956 1957 1958 /** @} */ /* End of group Device_Peripheral_peripherals */ 1959 1960 1961 /* =========================================================================================================================== */ 1962 /* ================ Device Specific Peripheral Address Map ================ */ 1963 /* =========================================================================================================================== */ 1964 1965 1966 /** @addtogroup Device_Peripheral_peripheralAddr 1967 * @{ 1968 */ 1969 1970 #define NRF_FICR_BASE 0x10000000UL 1971 #define NRF_UICR_BASE 0x10001000UL 1972 #define NRF_APPROTECT_BASE 0x40000000UL 1973 #define NRF_BPROT_BASE 0x40000000UL 1974 #define NRF_CLOCK_BASE 0x40000000UL 1975 #define NRF_POWER_BASE 0x40000000UL 1976 #define NRF_P0_BASE 0x50000000UL 1977 #define NRF_RADIO_BASE 0x40001000UL 1978 #define NRF_UART0_BASE 0x40002000UL 1979 #define NRF_UARTE0_BASE 0x40002000UL 1980 #define NRF_SPI1_BASE 0x40003000UL 1981 #define NRF_SPIM1_BASE 0x40003000UL 1982 #define NRF_SPIS1_BASE 0x40003000UL 1983 #define NRF_TWI0_BASE 0x40003000UL 1984 #define NRF_TWIM0_BASE 0x40003000UL 1985 #define NRF_TWIS0_BASE 0x40003000UL 1986 #define NRF_SPI0_BASE 0x40004000UL 1987 #define NRF_SPIM0_BASE 0x40004000UL 1988 #define NRF_SPIS0_BASE 0x40004000UL 1989 #define NRF_GPIOTE_BASE 0x40006000UL 1990 #define NRF_SAADC_BASE 0x40007000UL 1991 #define NRF_TIMER0_BASE 0x40008000UL 1992 #define NRF_TIMER1_BASE 0x40009000UL 1993 #define NRF_TIMER2_BASE 0x4000A000UL 1994 #define NRF_RTC0_BASE 0x4000B000UL 1995 #define NRF_TEMP_BASE 0x4000C000UL 1996 #define NRF_RNG_BASE 0x4000D000UL 1997 #define NRF_ECB_BASE 0x4000E000UL 1998 #define NRF_AAR_BASE 0x4000F000UL 1999 #define NRF_CCM_BASE 0x4000F000UL 2000 #define NRF_WDT_BASE 0x40010000UL 2001 #define NRF_RTC1_BASE 0x40011000UL 2002 #define NRF_QDEC_BASE 0x40012000UL 2003 #define NRF_COMP_BASE 0x40013000UL 2004 #define NRF_EGU0_BASE 0x40014000UL 2005 #define NRF_SWI0_BASE 0x40014000UL 2006 #define NRF_EGU1_BASE 0x40015000UL 2007 #define NRF_SWI1_BASE 0x40015000UL 2008 #define NRF_SWI2_BASE 0x40016000UL 2009 #define NRF_SWI3_BASE 0x40017000UL 2010 #define NRF_SWI4_BASE 0x40018000UL 2011 #define NRF_SWI5_BASE 0x40019000UL 2012 #define NRF_PWM0_BASE 0x4001C000UL 2013 #define NRF_PDM_BASE 0x4001D000UL 2014 #define NRF_NVMC_BASE 0x4001E000UL 2015 #define NRF_PPI_BASE 0x4001F000UL 2016 2017 /** @} */ /* End of group Device_Peripheral_peripheralAddr */ 2018 2019 2020 /* =========================================================================================================================== */ 2021 /* ================ Peripheral declaration ================ */ 2022 /* =========================================================================================================================== */ 2023 2024 2025 /** @addtogroup Device_Peripheral_declaration 2026 * @{ 2027 */ 2028 2029 #define NRF_FICR ((NRF_FICR_Type*) NRF_FICR_BASE) 2030 #define NRF_UICR ((NRF_UICR_Type*) NRF_UICR_BASE) 2031 #define NRF_APPROTECT ((NRF_APPROTECT_Type*) NRF_APPROTECT_BASE) 2032 #define NRF_BPROT ((NRF_BPROT_Type*) NRF_BPROT_BASE) 2033 #define NRF_CLOCK ((NRF_CLOCK_Type*) NRF_CLOCK_BASE) 2034 #define NRF_POWER ((NRF_POWER_Type*) NRF_POWER_BASE) 2035 #define NRF_P0 ((NRF_GPIO_Type*) NRF_P0_BASE) 2036 #define NRF_RADIO ((NRF_RADIO_Type*) NRF_RADIO_BASE) 2037 #define NRF_UART0 ((NRF_UART_Type*) NRF_UART0_BASE) 2038 #define NRF_UARTE0 ((NRF_UARTE_Type*) NRF_UARTE0_BASE) 2039 #define NRF_SPI1 ((NRF_SPI_Type*) NRF_SPI1_BASE) 2040 #define NRF_SPIM1 ((NRF_SPIM_Type*) NRF_SPIM1_BASE) 2041 #define NRF_SPIS1 ((NRF_SPIS_Type*) NRF_SPIS1_BASE) 2042 #define NRF_TWI0 ((NRF_TWI_Type*) NRF_TWI0_BASE) 2043 #define NRF_TWIM0 ((NRF_TWIM_Type*) NRF_TWIM0_BASE) 2044 #define NRF_TWIS0 ((NRF_TWIS_Type*) NRF_TWIS0_BASE) 2045 #define NRF_SPI0 ((NRF_SPI_Type*) NRF_SPI0_BASE) 2046 #define NRF_SPIM0 ((NRF_SPIM_Type*) NRF_SPIM0_BASE) 2047 #define NRF_SPIS0 ((NRF_SPIS_Type*) NRF_SPIS0_BASE) 2048 #define NRF_GPIOTE ((NRF_GPIOTE_Type*) NRF_GPIOTE_BASE) 2049 #define NRF_SAADC ((NRF_SAADC_Type*) NRF_SAADC_BASE) 2050 #define NRF_TIMER0 ((NRF_TIMER_Type*) NRF_TIMER0_BASE) 2051 #define NRF_TIMER1 ((NRF_TIMER_Type*) NRF_TIMER1_BASE) 2052 #define NRF_TIMER2 ((NRF_TIMER_Type*) NRF_TIMER2_BASE) 2053 #define NRF_RTC0 ((NRF_RTC_Type*) NRF_RTC0_BASE) 2054 #define NRF_TEMP ((NRF_TEMP_Type*) NRF_TEMP_BASE) 2055 #define NRF_RNG ((NRF_RNG_Type*) NRF_RNG_BASE) 2056 #define NRF_ECB ((NRF_ECB_Type*) NRF_ECB_BASE) 2057 #define NRF_AAR ((NRF_AAR_Type*) NRF_AAR_BASE) 2058 #define NRF_CCM ((NRF_CCM_Type*) NRF_CCM_BASE) 2059 #define NRF_WDT ((NRF_WDT_Type*) NRF_WDT_BASE) 2060 #define NRF_RTC1 ((NRF_RTC_Type*) NRF_RTC1_BASE) 2061 #define NRF_QDEC ((NRF_QDEC_Type*) NRF_QDEC_BASE) 2062 #define NRF_COMP ((NRF_COMP_Type*) NRF_COMP_BASE) 2063 #define NRF_EGU0 ((NRF_EGU_Type*) NRF_EGU0_BASE) 2064 #define NRF_SWI0 ((NRF_SWI_Type*) NRF_SWI0_BASE) 2065 #define NRF_EGU1 ((NRF_EGU_Type*) NRF_EGU1_BASE) 2066 #define NRF_SWI1 ((NRF_SWI_Type*) NRF_SWI1_BASE) 2067 #define NRF_SWI2 ((NRF_SWI_Type*) NRF_SWI2_BASE) 2068 #define NRF_SWI3 ((NRF_SWI_Type*) NRF_SWI3_BASE) 2069 #define NRF_SWI4 ((NRF_SWI_Type*) NRF_SWI4_BASE) 2070 #define NRF_SWI5 ((NRF_SWI_Type*) NRF_SWI5_BASE) 2071 #define NRF_PWM0 ((NRF_PWM_Type*) NRF_PWM0_BASE) 2072 #define NRF_PDM ((NRF_PDM_Type*) NRF_PDM_BASE) 2073 #define NRF_NVMC ((NRF_NVMC_Type*) NRF_NVMC_BASE) 2074 #define NRF_PPI ((NRF_PPI_Type*) NRF_PPI_BASE) 2075 2076 /** @} */ /* End of group Device_Peripheral_declaration */ 2077 2078 2079 /* ========================================= End of section using anonymous unions ========================================= */ 2080 #if defined (__CC_ARM) 2081 #pragma pop 2082 #elif defined (__ICCARM__) 2083 /* leave anonymous unions enabled */ 2084 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 2085 #pragma clang diagnostic pop 2086 #elif defined (__GNUC__) 2087 /* anonymous unions are enabled by default */ 2088 #elif defined (__TMS470__) 2089 /* anonymous unions are enabled by default */ 2090 #elif defined (__TASKING__) 2091 #pragma warning restore 2092 #elif defined (__CSMC__) 2093 /* anonymous unions are enabled by default */ 2094 #endif 2095 2096 2097 #ifdef __cplusplus 2098 } 2099 #endif 2100 2101 #endif /* NRF52811_H */ 2102 2103 2104 /** @} */ /* End of group nrf52811 */ 2105 2106 /** @} */ /* End of group Nordic Semiconductor */ 2107