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