1 /* 2 Copyright (c) 2010 - 2025, Nordic Semiconductor ASA All rights reserved. 3 4 SPDX-License-Identifier: BSD-3-Clause 5 6 Redistribution and use in source and binary forms, with or without 7 modification, are permitted provided that the following conditions are met: 8 9 1. Redistributions of source code must retain the above copyright notice, this 10 list of conditions and the following disclaimer. 11 12 2. Redistributions in binary form must reproduce the above copyright 13 notice, this list of conditions and the following disclaimer in the 14 documentation and/or other materials provided with the distribution. 15 16 3. Neither the name of Nordic Semiconductor ASA nor the names of its 17 contributors may be used to endorse or promote products derived from this 18 software without specific prior written permission. 19 20 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE 23 ARE DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE 24 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 POSSIBILITY OF SUCH DAMAGE. 31 * 32 * @file nrf9120.h 33 * @brief CMSIS HeaderFile 34 * @version 1 35 * @date 07. January 2025 36 * @note Generated by SVDConv V3.3.35 on Tuesday, 07.01.2025 15:34:29 37 * from File 'nrf9120.svd', 38 * last modified on Friday, 13.12.2024 08:41:27 39 */ 40 41 42 43 /** @addtogroup Nordic Semiconductor 44 * @{ 45 */ 46 47 48 /** @addtogroup nrf9120 49 * @{ 50 */ 51 52 53 #ifndef NRF9120_H 54 #define NRF9120_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-M33 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 SecureFault_IRQn = -9, /*!< -9 Secure Fault Handler */ 82 SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ 83 DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ 84 PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ 85 SysTick_IRQn = -1, /*!< -1 System Tick Timer */ 86 /* ========================================== nrf9120 Specific Interrupt Numbers =========================================== */ 87 SPU_IRQn = 3, /*!< 3 SPU */ 88 CLOCK_POWER_IRQn = 5, /*!< 5 CLOCK_POWER */ 89 SPIM0_SPIS0_TWIM0_TWIS0_UARTE0_IRQn= 8, /*!< 8 SPIM0_SPIS0_TWIM0_TWIS0_UARTE0 */ 90 SPIM1_SPIS1_TWIM1_TWIS1_UARTE1_IRQn= 9, /*!< 9 SPIM1_SPIS1_TWIM1_TWIS1_UARTE1 */ 91 SPIM2_SPIS2_TWIM2_TWIS2_UARTE2_IRQn= 10, /*!< 10 SPIM2_SPIS2_TWIM2_TWIS2_UARTE2 */ 92 SPIM3_SPIS3_TWIM3_TWIS3_UARTE3_IRQn= 11, /*!< 11 SPIM3_SPIS3_TWIM3_TWIS3_UARTE3 */ 93 GPIOTE0_IRQn = 13, /*!< 13 GPIOTE0 */ 94 SAADC_IRQn = 14, /*!< 14 SAADC */ 95 TIMER0_IRQn = 15, /*!< 15 TIMER0 */ 96 TIMER1_IRQn = 16, /*!< 16 TIMER1 */ 97 TIMER2_IRQn = 17, /*!< 17 TIMER2 */ 98 RTC0_IRQn = 20, /*!< 20 RTC0 */ 99 RTC1_IRQn = 21, /*!< 21 RTC1 */ 100 WDT_IRQn = 24, /*!< 24 WDT */ 101 EGU0_IRQn = 27, /*!< 27 EGU0 */ 102 EGU1_IRQn = 28, /*!< 28 EGU1 */ 103 EGU2_IRQn = 29, /*!< 29 EGU2 */ 104 EGU3_IRQn = 30, /*!< 30 EGU3 */ 105 EGU4_IRQn = 31, /*!< 31 EGU4 */ 106 EGU5_IRQn = 32, /*!< 32 EGU5 */ 107 PWM0_IRQn = 33, /*!< 33 PWM0 */ 108 PWM1_IRQn = 34, /*!< 34 PWM1 */ 109 PWM2_IRQn = 35, /*!< 35 PWM2 */ 110 PWM3_IRQn = 36, /*!< 36 PWM3 */ 111 PDM_IRQn = 38, /*!< 38 PDM */ 112 I2S_IRQn = 40, /*!< 40 I2S */ 113 IPC_IRQn = 42, /*!< 42 IPC */ 114 FPU_IRQn = 44, /*!< 44 FPU */ 115 GPIOTE1_IRQn = 49, /*!< 49 GPIOTE1 */ 116 KMU_IRQn = 57, /*!< 57 KMU */ 117 CRYPTOCELL_IRQn = 64 /*!< 64 CRYPTOCELL */ 118 } IRQn_Type; 119 120 121 122 /* =========================================================================================================================== */ 123 /* ================ Processor and Core Peripheral Section ================ */ 124 /* =========================================================================================================================== */ 125 126 /* ========================== Configuration of the ARM Cortex-M33 Processor and Core Peripherals =========================== */ 127 #define __CM33_REV 0x0004U /*!< CM33 Core Revision */ 128 #define __INTERRUPTS_MAX 240 /*!< Top interrupt number */ 129 #define __DSP_PRESENT 1 /*!< DSP present or not */ 130 #define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ 131 #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ 132 #define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ 133 #define __MPU_PRESENT 1 /*!< MPU present */ 134 #define __FPU_PRESENT 1 /*!< FPU present */ 135 #define __FPU_DP 0 /*!< Double Precision FPU */ 136 #define __SAUREGION_PRESENT 0 /*!< SAU region present */ 137 138 139 /** @} */ /* End of group Configuration_of_CMSIS */ 140 141 #include "core_cm33.h" /*!< ARM Cortex-M33 processor and core peripherals */ 142 #include "system_nrf9120.h" /*!< nrf9120 System */ 143 144 #ifndef __IM /*!< Fallback for older CMSIS versions */ 145 #define __IM __I 146 #endif 147 #ifndef __OM /*!< Fallback for older CMSIS versions */ 148 #define __OM __O 149 #endif 150 #ifndef __IOM /*!< Fallback for older CMSIS versions */ 151 #define __IOM __IO 152 #endif 153 154 155 /* ======================================== Start of section using anonymous unions ======================================== */ 156 #if defined (__CC_ARM) 157 #pragma push 158 #pragma anon_unions 159 #elif defined (__ICCARM__) 160 #pragma language=extended 161 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 162 #pragma clang diagnostic push 163 #pragma clang diagnostic ignored "-Wc11-extensions" 164 #pragma clang diagnostic ignored "-Wreserved-id-macro" 165 #pragma clang diagnostic ignored "-Wgnu-anonymous-struct" 166 #pragma clang diagnostic ignored "-Wnested-anon-types" 167 #elif defined (__GNUC__) 168 /* anonymous unions are enabled by default */ 169 #elif defined (__TMS470__) 170 /* anonymous unions are enabled by default */ 171 #elif defined (__TASKING__) 172 #pragma warning 586 173 #elif defined (__CSMC__) 174 /* anonymous unions are enabled by default */ 175 #else 176 #warning Not supported compiler type 177 #endif 178 179 180 /* =========================================================================================================================== */ 181 /* ================ Device Specific Cluster Section ================ */ 182 /* =========================================================================================================================== */ 183 184 185 /** @addtogroup Device_Peripheral_clusters 186 * @{ 187 */ 188 189 190 /** 191 * @brief FICR_INFO [INFO] (Device info) 192 */ 193 typedef struct { 194 __IM uint32_t RESERVED; 195 __IM uint32_t DEVICEID[2]; /*!< (@ 0x00000004) Description collection: Device identifier */ 196 __IM uint32_t PART; /*!< (@ 0x0000000C) Part code */ 197 __IM uint32_t VARIANT; /*!< (@ 0x00000010) Part Variant, Hardware version and Production 198 configuration */ 199 __IM uint32_t PACKAGE; /*!< (@ 0x00000014) Package option */ 200 __IM uint32_t RAM; /*!< (@ 0x00000018) RAM variant */ 201 __IM uint32_t FLASH; /*!< (@ 0x0000001C) Flash variant */ 202 __IM uint32_t CODEPAGESIZE; /*!< (@ 0x00000020) Code memory page size */ 203 __IM uint32_t CODESIZE; /*!< (@ 0x00000024) Code memory size */ 204 __IM uint32_t DEVICETYPE; /*!< (@ 0x00000028) Device type */ 205 } FICR_INFO_Type; /*!< Size = 44 (0x2c) */ 206 207 208 /** 209 * @brief FICR_TRIMCNF [TRIMCNF] (Unspecified) 210 */ 211 typedef struct { 212 __IM uint32_t ADDR; /*!< (@ 0x00000000) Description cluster: Address */ 213 __IM uint32_t DATA; /*!< (@ 0x00000004) Description cluster: Data */ 214 } FICR_TRIMCNF_Type; /*!< Size = 8 (0x8) */ 215 216 217 /** 218 * @brief FICR_TRNG90B [TRNG90B] (NIST800-90B RNG calibration data) 219 */ 220 typedef struct { 221 __IM uint32_t BYTES; /*!< (@ 0x00000000) Amount of bytes for the required entropy bits */ 222 __IM uint32_t RCCUTOFF; /*!< (@ 0x00000004) Repetition counter cutoff */ 223 __IM uint32_t APCUTOFF; /*!< (@ 0x00000008) Adaptive proportion cutoff */ 224 __IM uint32_t STARTUP; /*!< (@ 0x0000000C) Amount of bytes for the startup tests */ 225 __IM uint32_t ROSC1; /*!< (@ 0x00000010) Sample count for ring oscillator configuration 226 1 */ 227 __IM uint32_t ROSC2; /*!< (@ 0x00000014) Sample count for ring oscillator configuration 228 2 */ 229 __IM uint32_t ROSC3; /*!< (@ 0x00000018) Sample count for ring oscillator configuration 230 3 */ 231 __IM uint32_t ROSC4; /*!< (@ 0x0000001C) Sample count for ring oscillator configuration 232 4 */ 233 } FICR_TRNG90B_Type; /*!< Size = 32 (0x20) */ 234 235 236 /** 237 * @brief UICR_KEYSLOT_CONFIG [CONFIG] (Unspecified) 238 */ 239 typedef struct { 240 __IOM uint32_t DEST; /*!< (@ 0x00000000) Description cluster: Destination address where 241 content of the key value registers (KEYSLOT.KEYn.VALUE[0-3 242 ) will be pushed by KMU. Note that this 243 address must match that of a peripheral's 244 APB mapped write-only key registers, otherwise 245 the KMU can push this key value into an 246 address range which the CPU can potentially 247 read. */ 248 __IOM uint32_t PERM; /*!< (@ 0x00000004) Description cluster: Define permissions for the 249 key slot. Bits 0-15 and 16-31 can only be 250 written when equal to 0xFFFF. */ 251 } UICR_KEYSLOT_CONFIG_Type; /*!< Size = 8 (0x8) */ 252 253 254 /** 255 * @brief UICR_KEYSLOT_KEY [KEY] (Unspecified) 256 */ 257 typedef struct { 258 __IOM uint32_t VALUE[4]; /*!< (@ 0x00000000) Description collection: Define bits [31+o*32:0+o*32] 259 of value assigned to KMU key slot. */ 260 } UICR_KEYSLOT_KEY_Type; /*!< Size = 16 (0x10) */ 261 262 263 /** 264 * @brief UICR_KEYSLOT [KEYSLOT] (Unspecified) 265 */ 266 typedef struct { 267 __IOM UICR_KEYSLOT_CONFIG_Type CONFIG[128]; /*!< (@ 0x00000000) Unspecified */ 268 __IOM UICR_KEYSLOT_KEY_Type KEY[128]; /*!< (@ 0x00000400) Unspecified */ 269 } UICR_KEYSLOT_Type; /*!< Size = 3072 (0xc00) */ 270 271 272 /** 273 * @brief TAD_PSEL [PSEL] (Unspecified) 274 */ 275 typedef struct { 276 __IOM uint32_t TRACECLK; /*!< (@ 0x00000000) Pin configuration for TRACECLK */ 277 __IOM uint32_t TRACEDATA0; /*!< (@ 0x00000004) Pin configuration for TRACEDATA[0] */ 278 __IOM uint32_t TRACEDATA1; /*!< (@ 0x00000008) Pin configuration for TRACEDATA[1] */ 279 __IOM uint32_t TRACEDATA2; /*!< (@ 0x0000000C) Pin configuration for TRACEDATA[2] */ 280 __IOM uint32_t TRACEDATA3; /*!< (@ 0x00000010) Pin configuration for TRACEDATA[3] */ 281 } TAD_PSEL_Type; /*!< Size = 20 (0x14) */ 282 283 284 /** 285 * @brief SPU_EXTDOMAIN [EXTDOMAIN] (Unspecified) 286 */ 287 typedef struct { 288 __IOM uint32_t PERM; /*!< (@ 0x00000000) Description cluster: Access for bus access generated 289 from the external domain n List capabilities 290 of the external domain n */ 291 } SPU_EXTDOMAIN_Type; /*!< Size = 4 (0x4) */ 292 293 294 /** 295 * @brief SPU_DPPI [DPPI] (Unspecified) 296 */ 297 typedef struct { 298 __IOM uint32_t PERM; /*!< (@ 0x00000000) Description cluster: Select between secure and 299 non-secure attribute for the DPPI channels. */ 300 __IOM uint32_t LOCK; /*!< (@ 0x00000004) Description cluster: Prevent further modification 301 of the corresponding PERM register */ 302 } SPU_DPPI_Type; /*!< Size = 8 (0x8) */ 303 304 305 /** 306 * @brief SPU_GPIOPORT [GPIOPORT] (Unspecified) 307 */ 308 typedef struct { 309 __IOM uint32_t PERM; /*!< (@ 0x00000000) Description cluster: Select between secure and 310 non-secure attribute for pins 0 to 31 of 311 port n. */ 312 __IOM uint32_t LOCK; /*!< (@ 0x00000004) Description cluster: Prevent further modification 313 of the corresponding PERM register */ 314 } SPU_GPIOPORT_Type; /*!< Size = 8 (0x8) */ 315 316 317 /** 318 * @brief SPU_FLASHNSC [FLASHNSC] (Unspecified) 319 */ 320 typedef struct { 321 __IOM uint32_t REGION; /*!< (@ 0x00000000) Description cluster: Define which flash region 322 can contain the non-secure callable (NSC) 323 region n */ 324 __IOM uint32_t SIZE; /*!< (@ 0x00000004) Description cluster: Define the size of the non-secure 325 callable (NSC) region n */ 326 } SPU_FLASHNSC_Type; /*!< Size = 8 (0x8) */ 327 328 329 /** 330 * @brief SPU_RAMNSC [RAMNSC] (Unspecified) 331 */ 332 typedef struct { 333 __IOM uint32_t REGION; /*!< (@ 0x00000000) Description cluster: Define which RAM region 334 can contain the non-secure callable (NSC) 335 region n */ 336 __IOM uint32_t SIZE; /*!< (@ 0x00000004) Description cluster: Define the size of the non-secure 337 callable (NSC) region n */ 338 } SPU_RAMNSC_Type; /*!< Size = 8 (0x8) */ 339 340 341 /** 342 * @brief SPU_FLASHREGION [FLASHREGION] (Unspecified) 343 */ 344 typedef struct { 345 __IOM uint32_t PERM; /*!< (@ 0x00000000) Description cluster: Access permissions for flash 346 region n */ 347 } SPU_FLASHREGION_Type; /*!< Size = 4 (0x4) */ 348 349 350 /** 351 * @brief SPU_RAMREGION [RAMREGION] (Unspecified) 352 */ 353 typedef struct { 354 __IOM uint32_t PERM; /*!< (@ 0x00000000) Description cluster: Access permissions for RAM 355 region n */ 356 } SPU_RAMREGION_Type; /*!< Size = 4 (0x4) */ 357 358 359 /** 360 * @brief SPU_PERIPHID [PERIPHID] (Unspecified) 361 */ 362 typedef struct { 363 __IOM uint32_t PERM; /*!< (@ 0x00000000) Description cluster: List capabilities and access 364 permissions for the peripheral with ID n */ 365 } SPU_PERIPHID_Type; /*!< Size = 4 (0x4) */ 366 367 368 /** 369 * @brief POWER_LTEMODEM [LTEMODEM] (LTE Modem) 370 */ 371 typedef struct { 372 __IOM uint32_t STARTN; /*!< (@ 0x00000000) Start LTE modem */ 373 __IOM uint32_t FORCEOFF; /*!< (@ 0x00000004) Force off LTE modem */ 374 } POWER_LTEMODEM_Type; /*!< Size = 8 (0x8) */ 375 376 377 /** 378 * @brief CTRLAPPERI_MAILBOX [MAILBOX] (Unspecified) 379 */ 380 typedef struct { 381 __IM uint32_t RXDATA; /*!< (@ 0x00000000) Data sent from the debugger to the CPU. */ 382 __IM uint32_t RXSTATUS; /*!< (@ 0x00000004) This register shows a status that indicates if 383 data sent from the debugger to the CPU has 384 been read. */ 385 __IM uint32_t RESERVED[30]; 386 __IOM uint32_t TXDATA; /*!< (@ 0x00000080) Data sent from the CPU to the debugger. */ 387 __IM uint32_t TXSTATUS; /*!< (@ 0x00000084) This register shows a status that indicates if 388 the data sent from the CPU to the debugger 389 has been read. */ 390 } CTRLAPPERI_MAILBOX_Type; /*!< Size = 136 (0x88) */ 391 392 393 /** 394 * @brief CTRLAPPERI_ERASEPROTECT [ERASEPROTECT] (Unspecified) 395 */ 396 typedef struct { 397 __IOM uint32_t LOCK; /*!< (@ 0x00000000) This register locks the ERASEPROTECT.DISABLE 398 register from being written until next reset. */ 399 __IOM uint32_t DISABLE; /*!< (@ 0x00000004) This register disables the ERASEPROTECT register 400 and performs an ERASEALL operation. */ 401 } CTRLAPPERI_ERASEPROTECT_Type; /*!< Size = 8 (0x8) */ 402 403 404 /** 405 * @brief SPIM_PSEL [PSEL] (Unspecified) 406 */ 407 typedef struct { 408 __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */ 409 __IOM uint32_t MOSI; /*!< (@ 0x00000004) Pin select for MOSI signal */ 410 __IOM uint32_t MISO; /*!< (@ 0x00000008) Pin select for MISO signal */ 411 } SPIM_PSEL_Type; /*!< Size = 12 (0xc) */ 412 413 414 /** 415 * @brief SPIM_RXD [RXD] (RXD EasyDMA channel) 416 */ 417 typedef struct { 418 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 419 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 420 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 421 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 422 } SPIM_RXD_Type; /*!< Size = 16 (0x10) */ 423 424 425 /** 426 * @brief SPIM_TXD [TXD] (TXD EasyDMA channel) 427 */ 428 typedef struct { 429 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 430 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 431 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 432 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 433 } SPIM_TXD_Type; /*!< Size = 16 (0x10) */ 434 435 436 /** 437 * @brief SPIS_PSEL [PSEL] (Unspecified) 438 */ 439 typedef struct { 440 __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */ 441 __IOM uint32_t MISO; /*!< (@ 0x00000004) Pin select for MISO signal */ 442 __IOM uint32_t MOSI; /*!< (@ 0x00000008) Pin select for MOSI signal */ 443 __IOM uint32_t CSN; /*!< (@ 0x0000000C) Pin select for CSN signal */ 444 } SPIS_PSEL_Type; /*!< Size = 16 (0x10) */ 445 446 447 /** 448 * @brief SPIS_RXD [RXD] (Unspecified) 449 */ 450 typedef struct { 451 __IOM uint32_t PTR; /*!< (@ 0x00000000) RXD data pointer */ 452 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 453 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes received in last granted transaction */ 454 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 455 } SPIS_RXD_Type; /*!< Size = 16 (0x10) */ 456 457 458 /** 459 * @brief SPIS_TXD [TXD] (Unspecified) 460 */ 461 typedef struct { 462 __IOM uint32_t PTR; /*!< (@ 0x00000000) TXD data pointer */ 463 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 464 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transmitted in last granted transaction */ 465 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 466 } SPIS_TXD_Type; /*!< Size = 16 (0x10) */ 467 468 469 /** 470 * @brief TWIM_PSEL [PSEL] (Unspecified) 471 */ 472 typedef struct { 473 __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL signal */ 474 __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA signal */ 475 } TWIM_PSEL_Type; /*!< Size = 8 (0x8) */ 476 477 478 /** 479 * @brief TWIM_RXD [RXD] (RXD EasyDMA channel) 480 */ 481 typedef struct { 482 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 483 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 484 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 485 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 486 } TWIM_RXD_Type; /*!< Size = 16 (0x10) */ 487 488 489 /** 490 * @brief TWIM_TXD [TXD] (TXD EasyDMA channel) 491 */ 492 typedef struct { 493 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 494 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 495 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 496 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 497 } TWIM_TXD_Type; /*!< Size = 16 (0x10) */ 498 499 500 /** 501 * @brief TWIS_PSEL [PSEL] (Unspecified) 502 */ 503 typedef struct { 504 __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL signal */ 505 __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA signal */ 506 } TWIS_PSEL_Type; /*!< Size = 8 (0x8) */ 507 508 509 /** 510 * @brief TWIS_RXD [RXD] (RXD EasyDMA channel) 511 */ 512 typedef struct { 513 __IOM uint32_t PTR; /*!< (@ 0x00000000) RXD Data pointer */ 514 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in RXD buffer */ 515 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last RXD transaction */ 516 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 517 } TWIS_RXD_Type; /*!< Size = 16 (0x10) */ 518 519 520 /** 521 * @brief TWIS_TXD [TXD] (TXD EasyDMA channel) 522 */ 523 typedef struct { 524 __IOM uint32_t PTR; /*!< (@ 0x00000000) TXD Data pointer */ 525 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in TXD buffer */ 526 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last TXD transaction */ 527 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 528 } TWIS_TXD_Type; /*!< Size = 16 (0x10) */ 529 530 531 /** 532 * @brief UARTE_PSEL [PSEL] (Unspecified) 533 */ 534 typedef struct { 535 __IOM uint32_t RTS; /*!< (@ 0x00000000) Pin select for RTS signal */ 536 __IOM uint32_t TXD; /*!< (@ 0x00000004) Pin select for TXD signal */ 537 __IOM uint32_t CTS; /*!< (@ 0x00000008) Pin select for CTS signal */ 538 __IOM uint32_t RXD; /*!< (@ 0x0000000C) Pin select for RXD signal */ 539 } UARTE_PSEL_Type; /*!< Size = 16 (0x10) */ 540 541 542 /** 543 * @brief UARTE_RXD [RXD] (RXD EasyDMA channel) 544 */ 545 typedef struct { 546 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 547 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 548 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 549 } UARTE_RXD_Type; /*!< Size = 12 (0xc) */ 550 551 552 /** 553 * @brief UARTE_TXD [TXD] (TXD EasyDMA channel) 554 */ 555 typedef struct { 556 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 557 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 558 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 559 } UARTE_TXD_Type; /*!< Size = 12 (0xc) */ 560 561 562 /** 563 * @brief SAADC_EVENTS_CH [EVENTS_CH] (Peripheral events.) 564 */ 565 typedef struct { 566 __IOM uint32_t LIMITH; /*!< (@ 0x00000000) Description cluster: Last results is equal or 567 above CH[n].LIMIT.HIGH */ 568 __IOM uint32_t LIMITL; /*!< (@ 0x00000004) Description cluster: Last results is equal or 569 below CH[n].LIMIT.LOW */ 570 } SAADC_EVENTS_CH_Type; /*!< Size = 8 (0x8) */ 571 572 573 /** 574 * @brief SAADC_PUBLISH_CH [PUBLISH_CH] (Publish configuration for events) 575 */ 576 typedef struct { 577 __IOM uint32_t LIMITH; /*!< (@ 0x00000000) Description cluster: Publish configuration for 578 event CH[n].LIMITH */ 579 __IOM uint32_t LIMITL; /*!< (@ 0x00000004) Description cluster: Publish configuration for 580 event CH[n].LIMITL */ 581 } SAADC_PUBLISH_CH_Type; /*!< Size = 8 (0x8) */ 582 583 584 /** 585 * @brief SAADC_CH [CH] (Unspecified) 586 */ 587 typedef struct { 588 __IOM uint32_t PSELP; /*!< (@ 0x00000000) Description cluster: Input positive pin selection 589 for CH[n] */ 590 __IOM uint32_t PSELN; /*!< (@ 0x00000004) Description cluster: Input negative pin selection 591 for CH[n] */ 592 __IOM uint32_t CONFIG; /*!< (@ 0x00000008) Description cluster: Input configuration for 593 CH[n] */ 594 __IOM uint32_t LIMIT; /*!< (@ 0x0000000C) Description cluster: High/low limits for event 595 monitoring a channel */ 596 } SAADC_CH_Type; /*!< Size = 16 (0x10) */ 597 598 599 /** 600 * @brief SAADC_RESULT [RESULT] (RESULT EasyDMA channel) 601 */ 602 typedef struct { 603 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 604 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of buffer words to transfer */ 605 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of buffer words transferred since last 606 START */ 607 } SAADC_RESULT_Type; /*!< Size = 12 (0xc) */ 608 609 610 /** 611 * @brief DPPIC_TASKS_CHG [TASKS_CHG] (Channel group tasks) 612 */ 613 typedef struct { 614 __OM uint32_t EN; /*!< (@ 0x00000000) Description cluster: Enable channel group n */ 615 __OM uint32_t DIS; /*!< (@ 0x00000004) Description cluster: Disable channel group n */ 616 } DPPIC_TASKS_CHG_Type; /*!< Size = 8 (0x8) */ 617 618 619 /** 620 * @brief DPPIC_SUBSCRIBE_CHG [SUBSCRIBE_CHG] (Subscribe configuration for tasks) 621 */ 622 typedef struct { 623 __IOM uint32_t EN; /*!< (@ 0x00000000) Description cluster: Subscribe configuration 624 for task CHG[n].EN */ 625 __IOM uint32_t DIS; /*!< (@ 0x00000004) Description cluster: Subscribe configuration 626 for task CHG[n].DIS */ 627 } DPPIC_SUBSCRIBE_CHG_Type; /*!< Size = 8 (0x8) */ 628 629 630 /** 631 * @brief PWM_SEQ [SEQ] (Unspecified) 632 */ 633 typedef struct { 634 __IOM uint32_t PTR; /*!< (@ 0x00000000) Description cluster: Beginning address in RAM 635 of this sequence */ 636 __IOM uint32_t CNT; /*!< (@ 0x00000004) Description cluster: Number of values (duty cycles) 637 in this sequence */ 638 __IOM uint32_t REFRESH; /*!< (@ 0x00000008) Description cluster: Number of additional PWM 639 periods between samples loaded into compare 640 register */ 641 __IOM uint32_t ENDDELAY; /*!< (@ 0x0000000C) Description cluster: Time added after the sequence */ 642 __IM uint32_t RESERVED[4]; 643 } PWM_SEQ_Type; /*!< Size = 32 (0x20) */ 644 645 646 /** 647 * @brief PWM_PSEL [PSEL] (Unspecified) 648 */ 649 typedef struct { 650 __IOM uint32_t OUT[4]; /*!< (@ 0x00000000) Description collection: Output pin select for 651 PWM channel n */ 652 } PWM_PSEL_Type; /*!< Size = 16 (0x10) */ 653 654 655 /** 656 * @brief PDM_PSEL [PSEL] (Unspecified) 657 */ 658 typedef struct { 659 __IOM uint32_t CLK; /*!< (@ 0x00000000) Pin number configuration for PDM CLK signal */ 660 __IOM uint32_t DIN; /*!< (@ 0x00000004) Pin number configuration for PDM DIN signal */ 661 } PDM_PSEL_Type; /*!< Size = 8 (0x8) */ 662 663 664 /** 665 * @brief PDM_SAMPLE [SAMPLE] (Unspecified) 666 */ 667 typedef struct { 668 __IOM uint32_t PTR; /*!< (@ 0x00000000) RAM address pointer to write samples to with 669 EasyDMA */ 670 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Number of samples to allocate memory for in EasyDMA 671 mode */ 672 } PDM_SAMPLE_Type; /*!< Size = 8 (0x8) */ 673 674 675 /** 676 * @brief I2S_CONFIG [CONFIG] (Unspecified) 677 */ 678 typedef struct { 679 __IOM uint32_t MODE; /*!< (@ 0x00000000) I2S mode. */ 680 __IOM uint32_t RXEN; /*!< (@ 0x00000004) Reception (RX) enable. */ 681 __IOM uint32_t TXEN; /*!< (@ 0x00000008) Transmission (TX) enable. */ 682 __IOM uint32_t MCKEN; /*!< (@ 0x0000000C) Master clock generator enable. */ 683 __IOM uint32_t MCKFREQ; /*!< (@ 0x00000010) Master clock generator frequency. */ 684 __IOM uint32_t RATIO; /*!< (@ 0x00000014) MCK / LRCK ratio. */ 685 __IOM uint32_t SWIDTH; /*!< (@ 0x00000018) Sample width. */ 686 __IOM uint32_t ALIGN; /*!< (@ 0x0000001C) Alignment of sample within a frame. */ 687 __IOM uint32_t FORMAT; /*!< (@ 0x00000020) Frame format. */ 688 __IOM uint32_t CHANNELS; /*!< (@ 0x00000024) Enable channels. */ 689 } I2S_CONFIG_Type; /*!< Size = 40 (0x28) */ 690 691 692 /** 693 * @brief I2S_RXD [RXD] (Unspecified) 694 */ 695 typedef struct { 696 __IOM uint32_t PTR; /*!< (@ 0x00000000) Receive buffer RAM start address. */ 697 } I2S_RXD_Type; /*!< Size = 4 (0x4) */ 698 699 700 /** 701 * @brief I2S_TXD [TXD] (Unspecified) 702 */ 703 typedef struct { 704 __IOM uint32_t PTR; /*!< (@ 0x00000000) Transmit buffer RAM start address. */ 705 } I2S_TXD_Type; /*!< Size = 4 (0x4) */ 706 707 708 /** 709 * @brief I2S_RXTXD [RXTXD] (Unspecified) 710 */ 711 typedef struct { 712 __IOM uint32_t MAXCNT; /*!< (@ 0x00000000) Size of RXD and TXD buffers. */ 713 } I2S_RXTXD_Type; /*!< Size = 4 (0x4) */ 714 715 716 /** 717 * @brief I2S_PSEL [PSEL] (Unspecified) 718 */ 719 typedef struct { 720 __IOM uint32_t MCK; /*!< (@ 0x00000000) Pin select for MCK signal. */ 721 __IOM uint32_t SCK; /*!< (@ 0x00000004) Pin select for SCK signal. */ 722 __IOM uint32_t LRCK; /*!< (@ 0x00000008) Pin select for LRCK signal. */ 723 __IOM uint32_t SDIN; /*!< (@ 0x0000000C) Pin select for SDIN signal. */ 724 __IOM uint32_t SDOUT; /*!< (@ 0x00000010) Pin select for SDOUT signal. */ 725 } I2S_PSEL_Type; /*!< Size = 20 (0x14) */ 726 727 728 /** 729 * @brief APPROTECT_SECUREAPPROTECT [SECUREAPPROTECT] (Unspecified) 730 */ 731 typedef struct { 732 union { 733 __IOM uint32_t DISABLE; /*!< (@ 0x00000000) Software disable SECUREAPPROTECT mechanism */ 734 __IOM uint32_t FORCEPROTECT; /*!< (@ 0x00000000) Software force SECUREAPPROTECT mechanism */ 735 }; 736 } APPROTECT_SECUREAPPROTECT_Type; /*!< Size = 4 (0x4) */ 737 738 739 /** 740 * @brief APPROTECT_APPROTECT [APPROTECT] (Unspecified) 741 */ 742 typedef struct { 743 union { 744 __IOM uint32_t DISABLE; /*!< (@ 0x00000000) Software disable APPROTECT mechanism */ 745 __IOM uint32_t FORCEPROTECT; /*!< (@ 0x00000000) Software force APPROTECT mechanism */ 746 }; 747 } APPROTECT_APPROTECT_Type; /*!< Size = 4 (0x4) */ 748 749 750 /** 751 * @brief VMC_RAM [RAM] (Unspecified) 752 */ 753 typedef struct { 754 __IOM uint32_t POWER; /*!< (@ 0x00000000) Description cluster: RAMn power control register */ 755 __OM uint32_t POWERSET; /*!< (@ 0x00000004) Description cluster: RAMn power control set register */ 756 __OM uint32_t POWERCLR; /*!< (@ 0x00000008) Description cluster: RAMn power control clear 757 register */ 758 __IM uint32_t RESERVED; 759 } VMC_RAM_Type; /*!< Size = 16 (0x10) */ 760 761 762 /** @} */ /* End of group Device_Peripheral_clusters */ 763 764 765 /* =========================================================================================================================== */ 766 /* ================ Device Specific Peripheral Section ================ */ 767 /* =========================================================================================================================== */ 768 769 770 /** @addtogroup Device_Peripheral_peripherals 771 * @{ 772 */ 773 774 775 776 /* =========================================================================================================================== */ 777 /* ================ FICR_S ================ */ 778 /* =========================================================================================================================== */ 779 780 781 /** 782 * @brief Factory Information Configuration Registers (FICR_S) 783 */ 784 785 typedef struct { /*!< (@ 0x00FF0000) FICR_S Structure */ 786 __IM uint32_t RESERVED[128]; 787 __IOM FICR_INFO_Type INFO; /*!< (@ 0x00000200) Device info */ 788 __IM uint32_t RESERVED1[53]; 789 __IOM FICR_TRIMCNF_Type TRIMCNF[256]; /*!< (@ 0x00000300) Unspecified */ 790 __IM uint32_t RESERVED2[64]; 791 __IOM FICR_TRNG90B_Type TRNG90B; /*!< (@ 0x00000C00) NIST800-90B RNG calibration data */ 792 } NRF_FICR_Type; /*!< Size = 3104 (0xc20) */ 793 794 795 796 /* =========================================================================================================================== */ 797 /* ================ UICR_S ================ */ 798 /* =========================================================================================================================== */ 799 800 801 /** 802 * @brief User information configuration registers User information configuration registers (UICR_S) 803 */ 804 805 typedef struct { /*!< (@ 0x00FF8000) UICR_S Structure */ 806 __IOM uint32_t APPROTECT; /*!< (@ 0x00000000) Access port protection */ 807 __IM uint32_t RESERVED[4]; 808 __IOM uint32_t XOSC32M; /*!< (@ 0x00000014) Oscillator control */ 809 __IM uint32_t RESERVED1; 810 __IOM uint32_t HFXOSRC; /*!< (@ 0x0000001C) HFXO clock source selection */ 811 __IOM uint32_t HFXOCNT; /*!< (@ 0x00000020) HFXO startup counter */ 812 __IOM uint32_t APPNVMCPOFGUARD; /*!< (@ 0x00000024) Enable blocking NVM WRITE and aborting NVM ERASE 813 for Application NVM in POFWARN condition. */ 814 __IOM uint32_t PMICCONF; /*!< (@ 0x00000028) Polarity of PMIC polarity configuration signals. */ 815 __IOM uint32_t SECUREAPPROTECT; /*!< (@ 0x0000002C) Secure access port protection */ 816 __IOM uint32_t ERASEPROTECT; /*!< (@ 0x00000030) Erase protection */ 817 __IM uint32_t RESERVED2[53]; 818 __IOM uint32_t OTP[190]; /*!< (@ 0x00000108) Description collection: One time programmable 819 memory */ 820 __IOM UICR_KEYSLOT_Type KEYSLOT; /*!< (@ 0x00000400) Unspecified */ 821 } NRF_UICR_Type; /*!< Size = 4096 (0x1000) */ 822 823 824 825 /* =========================================================================================================================== */ 826 /* ================ ETM_NS ================ */ 827 /* =========================================================================================================================== */ 828 829 830 /** 831 * @brief Embedded Trace Macrocell (ETM_NS) 832 */ 833 834 typedef struct { /*!< (@ 0xE0041000) ETM_NS Structure */ 835 __IM uint32_t RESERVED; 836 __IOM uint32_t TRCPRGCTLR; /*!< (@ 0x00000004) Enables the trace unit. */ 837 __IOM uint32_t TRCPROCSELR; /*!< (@ 0x00000008) Controls which PE to trace. Might ignore writes 838 when the trace unit is enabled or not idle. 839 Before writing to this register, ensure 840 that TRCSTATR.IDLE == 1 so that the trace 841 unit can synchronize with the chosen PE. 842 Implemented if TRCIDR3.NUMPROC is greater 843 than zero. */ 844 __IOM uint32_t TRCSTATR; /*!< (@ 0x0000000C) Idle status bit */ 845 __IOM uint32_t TRCCONFIGR; /*!< (@ 0x00000010) Controls the tracing options This register must 846 always be programmed as part of trace unit 847 initialization. Might ignore writes when 848 the trace unit is enabled or not idle. */ 849 __IM uint32_t RESERVED1[3]; 850 __IOM uint32_t TRCEVENTCTL0R; /*!< (@ 0x00000020) Controls the tracing of arbitrary events. If 851 the selected event occurs a trace element 852 is generated in the trace stream according 853 to the settings in TRCEVENTCTL1R.DATAEN 854 and TRCEVENTCTL1R.INSTEN. */ 855 __IOM uint32_t TRCEVENTCTL1R; /*!< (@ 0x00000024) Controls the behavior of the events that TRCEVENTCTL0R 856 selects. This register must always be programmed 857 as part of trace unit initialization. Might 858 ignore writes when the trace unit is enabled 859 or not idle. */ 860 __IM uint32_t RESERVED2; 861 __IOM uint32_t TRCSTALLCTLR; /*!< (@ 0x0000002C) Enables trace unit functionality that prevents 862 trace unit buffer overflows. Might ignore 863 writes when the trace unit is enabled or 864 not idle. Must be programmed if TRCIDR3.STALLCTL 865 == 1. */ 866 __IOM uint32_t TRCTSCTLR; /*!< (@ 0x00000030) Controls the insertion of global timestamps in 867 the trace streams. When the selected event 868 is triggered, the trace unit inserts a global 869 timestamp into the trace streams. Might 870 ignore writes when the trace unit is enabled 871 or not idle. Must be programmed if TRCCONFIGR.TS 872 == 1. */ 873 __IOM uint32_t TRCSYNCPR; /*!< (@ 0x00000034) Controls how often trace synchronization requests 874 occur. Might ignore writes when the trace 875 unit is enabled or not idle. If writes are 876 permitted then the register must be programmed. */ 877 __IOM uint32_t TRCCCCTLR; /*!< (@ 0x00000038) Sets the threshold value for cycle counting. 878 Might ignore writes when the trace unit 879 is enabled or not idle. Must be programmed 880 if TRCCONFIGR.CCI==1. */ 881 __IOM uint32_t TRCBBCTLR; /*!< (@ 0x0000003C) Controls which regions in the memory map are 882 enabled to use branch broadcasting. Might 883 ignore writes when the trace unit is enabled 884 or not idle. Must be programmed if TRCCONFIGR.BB 885 == 1. */ 886 __IOM uint32_t TRCTRACEIDR; /*!< (@ 0x00000040) Sets the trace ID for instruction trace. If data 887 trace is enabled then it also sets the trace 888 ID for data trace, to (trace ID for instruction 889 trace) + 1. This register must always be 890 programmed as part of trace unit initialization. 891 Might ignore writes when the trace unit 892 is enabled or not idle. */ 893 __IOM uint32_t TRCQCTLR; /*!< (@ 0x00000044) Controls when Q elements are enabled. Might ignore 894 writes when the trace unit is enabled or 895 not idle. This register must be programmed 896 if it is implemented and TRCCONFIGR.QE is 897 set to any value other than 0b00. */ 898 __IM uint32_t RESERVED3[14]; 899 __IOM uint32_t TRCVICTLR; /*!< (@ 0x00000080) Controls instruction trace filtering. Might ignore 900 writes when the trace unit is enabled or 901 not idle. Only returns stable data when 902 TRCSTATR.PMSTABLE == 1. Must be programmed, 903 particularly to set the value of the SSSTATUS 904 bit, which sets the state of the start/stop 905 logic. */ 906 __IOM uint32_t TRCVIIECTLR; /*!< (@ 0x00000084) ViewInst exclude control. Might ignore writes 907 when the trace unit is enabled or not idle. 908 This register must be programmed when one 909 or more address comparators are implemented. */ 910 __IOM uint32_t TRCVISSCTLR; /*!< (@ 0x00000088) Use this to set, or read, the single address 911 comparators that control the ViewInst start/stoplogic. 912 The start/stop logic is active for an instruction 913 which causes a start and remains activeup 914 to and including an instruction which causes 915 a stop, and then the start/stop logic becomesinactive. 916 Might ignore writes when the trace unit 917 is enabled or not idle. If implemented then 918 this register must be programmed. */ 919 __IOM uint32_t TRCVIPCSSCTLR; /*!< (@ 0x0000008C) Use this to set, or read, which PE comparator 920 inputs can control the ViewInst start/stop 921 logic. Might ignore writes when the trace 922 unit is enabled or not idle. If implemented 923 then this register must be programmed. */ 924 __IM uint32_t RESERVED4[4]; 925 __IOM uint32_t TRCVDCTLR; /*!< (@ 0x000000A0) Controls data trace filtering. Might ignore writes 926 when the trace unit is enabled or not idle. 927 This register must be programmed when data 928 tracing is enabled, that is, when either 929 TRCCONFIGR.DA == 1 or TRCCONFIGR.DV == 1. */ 930 __IOM uint32_t TRCVDSACCTLR; /*!< (@ 0x000000A4) ViewData include / exclude control. Might ignore 931 writes when the trace unit is enabled or 932 not idle. This register must be programmed 933 when one or more address comparators are 934 implemented. */ 935 __IOM uint32_t TRCVDARCCTLR; /*!< (@ 0x000000A8) ViewData include / exclude control. Might ignore 936 writes when the trace unit is enabled or 937 not idle. This register must be programmed 938 when one or more address comparators are 939 implemented. */ 940 __IM uint32_t RESERVED5[21]; 941 __IOM uint32_t TRCSEQEVR[3]; /*!< (@ 0x00000100) Description collection: Moves the sequencer state 942 according to programmed events. Might ignore 943 writes when the trace unit is enabled or 944 not idle. When the sequencer is used, all 945 sequencer state transitions must be programmed 946 with a valid event. */ 947 __IM uint32_t RESERVED6[3]; 948 __IOM uint32_t TRCSEQRSTEVR; /*!< (@ 0x00000118) Moves the sequencer to state 0 when a programmed 949 event occurs. Might ignore writes when the 950 trace unit is enabled or not idle. When 951 the sequencer is used, all sequencer state 952 transitions must be programmed with a valid 953 event. */ 954 __IOM uint32_t TRCSEQSTR; /*!< (@ 0x0000011C) Use this to set, or read, the sequencer state. 955 Might ignore writes when the trace unit 956 is enabled or not idle. Only returns stable 957 data when TRCSTATR.PMSTABLE == 1. When the 958 sequencer is used, all sequencer state transitions 959 must be programmed with a valid event. */ 960 __IOM uint32_t TRCEXTINSELR; /*!< (@ 0x00000120) Use this to set, or read, which external inputs 961 are resources to the trace unit. Might ignore 962 writes when the trace unit is enabled or 963 not idle. Only returns stable data when 964 TRCSTATR.PMSTABLE == 1. When the sequencer 965 is used, all sequencer state transitions 966 must be programmed with a valid event. */ 967 __IM uint32_t RESERVED7[7]; 968 __IOM uint32_t TRCCNTRLDVR[4]; /*!< (@ 0x00000140) Description collection: This sets or returns 969 the reload count value for counter n. Might 970 ignore writes when the trace unit is enabled 971 or not idle. */ 972 __IOM uint32_t TRCCNTCTLR[4]; /*!< (@ 0x00000150) Description collection: Controls the operation 973 of counter n. Might ignore writes when the 974 trace unit is enabled or not idle. */ 975 __IOM uint32_t TRCCNTVR[4]; /*!< (@ 0x00000160) Description collection: This sets or returns 976 the value of counter n. The count value 977 is only stable when TRCSTATR.PMSTABLE == 978 1. If software uses counter n then it must 979 write to this register to set the initial 980 counter value. Might ignore writes when 981 the trace unit is enabled or not idle. */ 982 __IM uint32_t RESERVED8[36]; 983 __IOM uint32_t TRCRSCTLR[30]; /*!< (@ 0x00000200) Description collection: Controls the selection 984 of the resources in the trace unit. Might 985 ignore writes when the trace unit is enabled 986 or not idle. If software selects a non-implemented 987 resource then CONSTRAINED UNPREDICTABLEbehavior 988 of the resource selector occurs, so the 989 resource selector might fireunexpectedly 990 or might not fire. Reads of the TRCRSCTLRn 991 might return UNKNOWN. */ 992 __IM uint32_t RESERVED9[2]; 993 __IOM uint32_t TRCSSCCR0; /*!< (@ 0x00000280) Controls the single-shot comparator. */ 994 __IM uint32_t RESERVED10[7]; 995 __IOM uint32_t TRCSSCSR0; /*!< (@ 0x000002A0) Indicates the status of the single-shot comparators. 996 TRCSSCSR0 is sensitive toinstruction addresses. */ 997 __IM uint32_t RESERVED11[7]; 998 __IOM uint32_t TRCSSPCICR0; /*!< (@ 0x000002C0) Selects the processor comparator inputs for Single-shot 999 control. */ 1000 __IM uint32_t RESERVED12[19]; 1001 __IOM uint32_t TRCPDCR; /*!< (@ 0x00000310) Controls the single-shot comparator. */ 1002 __IOM uint32_t TRCPDSR; /*!< (@ 0x00000314) Indicates the power down status of the ETM. */ 1003 __IM uint32_t RESERVED13[755]; 1004 __IOM uint32_t TRCITATBIDR; /*!< (@ 0x00000EE4) Sets the state of output pins. */ 1005 __IM uint32_t RESERVED14[3]; 1006 __IOM uint32_t TRCITIATBINR; /*!< (@ 0x00000EF4) Reads the state of the input pins. */ 1007 __IM uint32_t RESERVED15; 1008 __IOM uint32_t TRCITIATBOUTR; /*!< (@ 0x00000EFC) Sets the state of the output pins. */ 1009 __IOM uint32_t TRCITCTRL; /*!< (@ 0x00000F00) Enables topology detection or integration testing, 1010 by putting ETM-M33 into integration mode. */ 1011 __IM uint32_t RESERVED16[39]; 1012 __IOM uint32_t TRCCLAIMSET; /*!< (@ 0x00000FA0) Sets bits in the claim tag and determines the 1013 number of claim tag bits implemented. */ 1014 __IOM uint32_t TRCCLAIMCLR; /*!< (@ 0x00000FA4) Clears bits in the claim tag and determines the 1015 current value of the claim tag. */ 1016 __IM uint32_t RESERVED17[4]; 1017 __IOM uint32_t TRCAUTHSTATUS; /*!< (@ 0x00000FB8) Indicates the current level of tracing permitted 1018 by the system */ 1019 __IM uint32_t TRCDEVARCH; /*!< (@ 0x00000FBC) The TRCDEVARCH identifies ETM-M33 as an ETMv4.2 1020 component */ 1021 __IM uint32_t RESERVED18[3]; 1022 __IM uint32_t TRCDEVTYPE; /*!< (@ 0x00000FCC) Controls the single-shot comparator. */ 1023 __IOM uint32_t TRCPIDR[8]; /*!< (@ 0x00000FD0) Description collection: Coresight peripheral 1024 identification registers. */ 1025 __IOM uint32_t TRCCIDR[4]; /*!< (@ 0x00000FF0) Description collection: Coresight component identification 1026 registers. */ 1027 } NRF_ETM_Type; /*!< Size = 4096 (0x1000) */ 1028 1029 1030 1031 /* =========================================================================================================================== */ 1032 /* ================ ETB_NS ================ */ 1033 /* =========================================================================================================================== */ 1034 1035 1036 /** 1037 * @brief Embedded Trace Buffer (ETB_NS) 1038 */ 1039 1040 typedef struct { /*!< (@ 0xE0051000) ETB_NS Structure */ 1041 __IM uint32_t RESERVED; 1042 __IM uint32_t RDP; /*!< (@ 0x00000004) ETB RAM Depth Register */ 1043 __IM uint32_t RESERVED1; 1044 __IM uint32_t STS; /*!< (@ 0x0000000C) ETB Status Register */ 1045 __IM uint32_t RRD; /*!< (@ 0x00000010) ETB RAM Read Data Register */ 1046 __IOM uint32_t RRP; /*!< (@ 0x00000014) ETB RAM Read Pointer Register */ 1047 __IOM uint32_t RWP; /*!< (@ 0x00000018) ETB RAM Write Pointer Register */ 1048 __IOM uint32_t TRG; /*!< (@ 0x0000001C) ETB Trigger Counter Register */ 1049 __IOM uint32_t CTL; /*!< (@ 0x00000020) ETB Control Register */ 1050 __IOM uint32_t RWD; /*!< (@ 0x00000024) ETB RAM Write Data Register */ 1051 __IM uint32_t RESERVED2[182]; 1052 __IM uint32_t FFSR; /*!< (@ 0x00000300) ETB Formatter and Flush Status Register */ 1053 __IOM uint32_t FFCR; /*!< (@ 0x00000304) ETB Formatter and Flush Control Register */ 1054 __IM uint32_t RESERVED3[758]; 1055 __OM uint32_t ITMISCOP0; /*!< (@ 0x00000EE0) Integration Test Miscellaneous Output Register 1056 0 */ 1057 __OM uint32_t ITTRFLINACK; /*!< (@ 0x00000EE4) Integration Test Trigger In and Flush In Acknowledge 1058 Register */ 1059 __IM uint32_t ITTRFLIN; /*!< (@ 0x00000EE8) Integration Test Trigger In and Flush In Register */ 1060 __IM uint32_t ITATBDATA0; /*!< (@ 0x00000EEC) Integration Test ATB Data Register 0 */ 1061 __OM uint32_t ITATBCTR2; /*!< (@ 0x00000EF0) Integration Test ATB Control Register 2 */ 1062 __IM uint32_t ITATBCTR1; /*!< (@ 0x00000EF4) Integration Test ATB Control Register 1 */ 1063 __IM uint32_t ITATBCTR0; /*!< (@ 0x00000EF8) Integration Test ATB Control Register 0 */ 1064 __IM uint32_t RESERVED4; 1065 __IOM uint32_t ITCTRL; /*!< (@ 0x00000F00) Integration Mode Control Register */ 1066 __IM uint32_t RESERVED5[39]; 1067 __IOM uint32_t CLAIMSET; /*!< (@ 0x00000FA0) Claim Tag Set Register */ 1068 __IOM uint32_t CLAIMCLR; /*!< (@ 0x00000FA4) Claim Tag Clear Register */ 1069 __IM uint32_t RESERVED6[2]; 1070 __OM uint32_t LAR; /*!< (@ 0x00000FB0) Lock Access Register */ 1071 __IM uint32_t LSR; /*!< (@ 0x00000FB4) Lock Status Register */ 1072 __IM uint32_t AUTHSTATUS; /*!< (@ 0x00000FB8) Authentication Status Register */ 1073 __IM uint32_t RESERVED7[3]; 1074 __IM uint32_t DEVID; /*!< (@ 0x00000FC8) Device Configuration Register */ 1075 __IM uint32_t DEVTYPE; /*!< (@ 0x00000FCC) Device Type Identifier Register */ 1076 __IM uint32_t PERIPHID4; /*!< (@ 0x00000FD0) Peripheral ID4 Register */ 1077 __IM uint32_t RESERVED8[3]; 1078 __IM uint32_t PERIPHID0; /*!< (@ 0x00000FE0) Peripheral ID0 Register */ 1079 __IM uint32_t PERIPHID1; /*!< (@ 0x00000FE4) Peripheral ID1 Register */ 1080 __IM uint32_t PERIPHID2; /*!< (@ 0x00000FE8) Peripheral ID2 Register */ 1081 __IM uint32_t PERIPHID3; /*!< (@ 0x00000FEC) Peripheral ID3 Register */ 1082 __IM uint32_t COMPID0; /*!< (@ 0x00000FF0) Component ID0 Register */ 1083 __IM uint32_t COMPID1; /*!< (@ 0x00000FF4) Component ID1 Register */ 1084 __IM uint32_t COMPID2; /*!< (@ 0x00000FF8) Component ID2 Register */ 1085 __IM uint32_t COMPID3; /*!< (@ 0x00000FFC) Component ID3 Register */ 1086 } NRF_ETB_Type; /*!< Size = 4096 (0x1000) */ 1087 1088 1089 1090 /* =========================================================================================================================== */ 1091 /* ================ TPIU_NS ================ */ 1092 /* =========================================================================================================================== */ 1093 1094 1095 /** 1096 * @brief Trace Port Interface Unit (TPIU_NS) 1097 */ 1098 1099 typedef struct { /*!< (@ 0xE0054000) TPIU_NS Structure */ 1100 __IOM uint32_t SUPPORTEDPORTSIZES; /*!< (@ 0x00000000) Each bit location is a single port size that 1101 is supported on the device. */ 1102 __IOM uint32_t CURRENTPORTSIZE; /*!< (@ 0x00000004) Each bit location is a single port size. One 1103 bit can be set, and indicates the current 1104 port size. */ 1105 __IM uint32_t RESERVED[62]; 1106 __IOM uint32_t SUPPORTEDTRIGGERMODES; /*!< (@ 0x00000100) The Supported_trigger_modes register indicates 1107 the implemented trigger counter multipliers 1108 and other supported features of the trigger 1109 system. */ 1110 __IOM uint32_t TRIGGERCOUNTERVALUE; /*!< (@ 0x00000104) The Trigger_counter_value register enables delaying 1111 the indication of triggers to any external 1112 connected trace capture or storage devices. */ 1113 __IOM uint32_t TRIGGERMULTIPLIER; /*!< (@ 0x00000108) The Trigger_multiplier register contains the 1114 selectors for the trigger counter multiplier. */ 1115 __IM uint32_t RESERVED1[61]; 1116 __IOM uint32_t SUPPPORTEDTESTPATTERNMODES; /*!< (@ 0x00000200) The Supported_test_pattern_modes register provides 1117 a set of known bit sequences or patterns 1118 that can be output over the trace port and 1119 can be detected by the TPA or other associated 1120 trace capture device. */ 1121 __IOM uint32_t CURRENTTESTPATTERNMODES; /*!< (@ 0x00000204) Current_test_pattern_mode indicates the current 1122 test pattern or mode selected. */ 1123 __IOM uint32_t TPRCR; /*!< (@ 0x00000208) The TPRCR register is an 8-bit counter start 1124 value that is decremented. A write sets 1125 the initial counter value and a read returns 1126 the programmed value. */ 1127 __IM uint32_t RESERVED2[61]; 1128 __IOM uint32_t FFSR; /*!< (@ 0x00000300) The FFSR register indicates the current status 1129 of the formatter and flush features available 1130 in the TPIU. */ 1131 __IOM uint32_t FFCR; /*!< (@ 0x00000304) The FFCR register controls the generation of 1132 stop, trigger, and flush events. */ 1133 __IOM uint32_t FSCR; /*!< (@ 0x00000308) The FSCR register enables the frequency of synchronization 1134 information to be optimized to suit the 1135 Trace Port Analyzer (TPA) capture buffer 1136 size. */ 1137 __IM uint32_t RESERVED3[61]; 1138 __IOM uint32_t EXTCTLINPORT; /*!< (@ 0x00000400) Two ports can be used as a control and feedback 1139 mechanism for any serializers, pin sharing 1140 multiplexers, or other solutions that might 1141 be added to the trace output pins either 1142 for pin control or a high-speed trace port 1143 solution. */ 1144 __IOM uint32_t EXTCTLOUTPORT; /*!< (@ 0x00000404) Two ports can be used as a control and feedback 1145 mechanism for any serializers, pin sharing 1146 multiplexers, or other solutions that might 1147 be added to the trace output pins either 1148 for pin control or a high speed trace port 1149 solution. These ports are raw register banks 1150 that sample or export the corresponding 1151 external pins. */ 1152 __IM uint32_t RESERVED4[695]; 1153 __IOM uint32_t ITTRFLINACK; /*!< (@ 0x00000EE4) The ITTRFLINACK register enables control of the 1154 triginack and flushinack outputs from the 1155 TPIU. */ 1156 __IOM uint32_t ITTRFLIN; /*!< (@ 0x00000EE8) The ITTRFLIN register contains the values of 1157 the flushin and trigin inputs to the TPIU. */ 1158 __IOM uint32_t ITATBDATA0; /*!< (@ 0x00000EEC) The ITATBDATA0 register contains the value of 1159 the atdatas inputs to the TPIU. The values 1160 are valid only when atvalids is HIGH. */ 1161 __IOM uint32_t ITATBCTR2; /*!< (@ 0x00000EF0) Enables control of the atreadys and afvalids 1162 outputs of the TPIU. */ 1163 __IOM uint32_t ITATBCTR1; /*!< (@ 0x00000EF4) The ITATBCTR1 register contains the value of 1164 the atids input to the TPIU. This is only 1165 valid when atvalids is HIGH. */ 1166 __IOM uint32_t ITATBCTR0; /*!< (@ 0x00000EF8) The ITATBCTR0 register captures the values of 1167 the atvalids, afreadys, and atbytess inputs 1168 to the TPIU. To ensure the integration 1169 registers work correctly in a system, the 1170 value of atbytess is only valid when atvalids, 1171 bit[0], is HIGH. */ 1172 __IM uint32_t RESERVED5; 1173 __IOM uint32_t ITCTRL; /*!< (@ 0x00000F00) Used to enable topology detection. This register 1174 enables the component to switch from a functional 1175 mode, the default behavior, to integration 1176 mode where the inputs and outputs of the 1177 component can be directly controlled for 1178 integration testing and topology solving. */ 1179 __IM uint32_t RESERVED6[39]; 1180 __IOM uint32_t CLAIMSET; /*!< (@ 0x00000FA0) Software can use the claim tag to coordinate 1181 application and debugger access to trace 1182 unit functionality. The claim tags have 1183 no effect on the operation of the component. 1184 The CLAIMSET register sets bits in the claim 1185 tag, and determines the number of claim 1186 bits implemented. */ 1187 __IOM uint32_t CLAIMCLR; /*!< (@ 0x00000FA4) Software can use the claim tag to coordinate 1188 application and debugger access to trace 1189 unit functionality. The claim tags have 1190 no effect on the operation of the component. 1191 The CLAIMCLR register sets the bits in the 1192 claim tag to 0 and determines the current 1193 value of the claim tag. */ 1194 __IM uint32_t RESERVED7[2]; 1195 __IOM uint32_t LAR; /*!< (@ 0x00000FB0) This is used to enable write access to device 1196 registers. */ 1197 __IOM uint32_t LSR; /*!< (@ 0x00000FB4) This indicates the status of the lock control 1198 mechanism. This lock prevents accidental 1199 writes by code under debug. Accesses to 1200 the extended stimulus port registers are 1201 not affected by the lock mechanism. This 1202 register must always be present although 1203 there might not be any lock access control 1204 mechanism. The lock mechanism, where present 1205 and locked, must block write accesses to 1206 any control register, except the Lock Access 1207 Register. For most components this cover */ 1208 __IOM uint32_t AUTHSTATUS; /*!< (@ 0x00000FB8) Indicates the current level of tracing permitted 1209 by the system */ 1210 __IM uint32_t RESERVED8[3]; 1211 __IM uint32_t DEVID; /*!< (@ 0x00000FC8) Indicates the capabilities of the component. */ 1212 __IM uint32_t DEVTYPE; /*!< (@ 0x00000FCC) The DEVTYPE register provides a debugger with 1213 information about the component when the 1214 Part Number field is not recognized. The 1215 debugger can then report this information. */ 1216 __IOM uint32_t PIDR4; /*!< (@ 0x00000FD0) Coresight peripheral identification registers. */ 1217 __IM uint32_t RESERVED9[3]; 1218 __IOM uint32_t PIDR_0; /*!< (@ 0x00000FE0) Coresight peripheral identification registers. */ 1219 __IOM uint32_t PIDR_1; /*!< (@ 0x00000FE4) Coresight peripheral identification registers. */ 1220 __IOM uint32_t PIDR_2; /*!< (@ 0x00000FE8) Coresight peripheral identification registers. */ 1221 __IOM uint32_t PIDR_3; /*!< (@ 0x00000FEC) Coresight peripheral identification registers. */ 1222 __IOM uint32_t CIDR_0; /*!< (@ 0x00000FF0) Coresight component identification registers. */ 1223 __IOM uint32_t CIDR_1; /*!< (@ 0x00000FF4) Coresight component identification registers. */ 1224 __IOM uint32_t CIDR_2; /*!< (@ 0x00000FF8) Coresight component identification registers. */ 1225 __IOM uint32_t CIDR_3; /*!< (@ 0x00000FFC) Coresight component identification registers. */ 1226 } NRF_TPIU_Type; /*!< Size = 4096 (0x1000) */ 1227 1228 1229 1230 /* =========================================================================================================================== */ 1231 /* ================ ATBREPLICATOR_NS ================ */ 1232 /* =========================================================================================================================== */ 1233 1234 1235 /** 1236 * @brief ATB Replicator module (ATBREPLICATOR_NS) 1237 */ 1238 1239 typedef struct { /*!< (@ 0xE0058000) ATBREPLICATOR_NS Structure */ 1240 __IOM uint32_t IDFILTER0; /*!< (@ 0x00000000) The IDFILTER0 register enables the programming 1241 of ID filtering for master port 0. */ 1242 __IOM uint32_t IDFILTER1; /*!< (@ 0x00000004) The IDFILTER1 register enables the programming 1243 of ID filtering for master port 1. */ 1244 __IM uint32_t RESERVED[956]; 1245 __IOM uint32_t ITATBCTR1; /*!< (@ 0x00000EF8) The ITATBCTR1 register returns the value of the 1246 atreadym0, atreadym1, and atvalids inputs 1247 in integration mode. */ 1248 __IOM uint32_t ITATBCTR0; /*!< (@ 0x00000EFC) The ITATBCTR0 register controls the value of 1249 the atvalidm0, atvalidm1, and atreadys outputs 1250 in integration mode. */ 1251 __IOM uint32_t ITCTRL; /*!< (@ 0x00000F00) The ITCTRL register enables the component to 1252 switch from a functional mode, which is 1253 the default behavior, to integration mode 1254 where the inputs and outputs of the component 1255 can be directly controlled for the purposes 1256 of integration testing and topology detection. */ 1257 __IM uint32_t RESERVED1[39]; 1258 __IOM uint32_t CLAIMSET; /*!< (@ 0x00000FA0) Software can use the claim tag to coordinate 1259 application and debugger access to trace 1260 unit functionality. The claim tags have 1261 no effect on the operation of the component. 1262 The CLAIMSET register sets bits in the claim 1263 tag, and determines the number of claim 1264 bits implemented. */ 1265 __IOM uint32_t CLAIMCLR; /*!< (@ 0x00000FA4) Software can use the claim tag to coordinate 1266 application and debugger access to trace 1267 unit functionality. The claim tags have 1268 no effect on the operation of the component. 1269 The CLAIMCLR register sets the bits in the 1270 claim tag to 0 and determines the current 1271 value of the claim tag. */ 1272 __IM uint32_t RESERVED2[2]; 1273 __IOM uint32_t LAR; /*!< (@ 0x00000FB0) This is used to enable write access to device 1274 registers. */ 1275 __IOM uint32_t LSR; /*!< (@ 0x00000FB4) This indicates the status of the lock control 1276 mechanism. This lock prevents accidental 1277 writes by code under debug. Accesses to 1278 the extended stimulus port registers are 1279 not affected by the lock mechanism. This 1280 register must always be present although 1281 there might not be any lock access control 1282 mechanism. The lock mechanism, where present 1283 and locked, must block write accesses to 1284 any control register, except the Lock Access 1285 Register. For most components this cover */ 1286 __IOM uint32_t AUTHSTATUS; /*!< (@ 0x00000FB8) Indicates the current level of tracing permitted 1287 by the system */ 1288 __IM uint32_t RESERVED3[3]; 1289 __IM uint32_t DEVID; /*!< (@ 0x00000FC8) Indicates the capabilities of the component. */ 1290 __IM uint32_t DEVTYPE; /*!< (@ 0x00000FCC) The DEVTYPE register provides a debugger with 1291 information about the component when the 1292 Part Number field is not recognized. The 1293 debugger can then report this information. */ 1294 __IOM uint32_t PIDR4; /*!< (@ 0x00000FD0) Coresight peripheral identification registers. */ 1295 __IM uint32_t RESERVED4[3]; 1296 __IOM uint32_t PIDR_0; /*!< (@ 0x00000FE0) Coresight peripheral identification registers. */ 1297 __IOM uint32_t PIDR_1; /*!< (@ 0x00000FE4) Coresight peripheral identification registers. */ 1298 __IOM uint32_t PIDR_2; /*!< (@ 0x00000FE8) Coresight peripheral identification registers. */ 1299 __IOM uint32_t PIDR_3; /*!< (@ 0x00000FEC) Coresight peripheral identification registers. */ 1300 __IOM uint32_t CIDR_0; /*!< (@ 0x00000FF0) Coresight component identification registers. */ 1301 __IOM uint32_t CIDR_1; /*!< (@ 0x00000FF4) Coresight component identification registers. */ 1302 __IOM uint32_t CIDR_2; /*!< (@ 0x00000FF8) Coresight component identification registers. */ 1303 __IOM uint32_t CIDR_3; /*!< (@ 0x00000FFC) Coresight component identification registers. */ 1304 } NRF_ATBREPLICATOR_Type; /*!< Size = 4096 (0x1000) */ 1305 1306 1307 1308 /* =========================================================================================================================== */ 1309 /* ================ ATBFUNNEL1_NS ================ */ 1310 /* =========================================================================================================================== */ 1311 1312 1313 /** 1314 * @brief ATB funnel module 0 (ATBFUNNEL1_NS) 1315 */ 1316 1317 typedef struct { /*!< (@ 0xE005A000) ATBFUNNEL1_NS Structure */ 1318 __IOM uint32_t CTRLREG; /*!< (@ 0x00000000) The IDFILTER0 register enables the programming 1319 of ID filtering for master port 0. */ 1320 __IOM uint32_t PRIORITYCTRLREG; /*!< (@ 0x00000004) The Priority_Ctrl_Reg register defines the order 1321 in which inputs are selected. Each 3-bit 1322 field is a priority for each particular 1323 slave interface. */ 1324 __IM uint32_t RESERVED[953]; 1325 __IOM uint32_t ITATBDATA0; /*!< (@ 0x00000EEC) The ITATBDATA0 register performs different functions 1326 depending on whether the access is a read 1327 or a write. */ 1328 __IOM uint32_t ITATBCTR2; /*!< (@ 0x00000EF0) The ITATBCTR2 register performs different functions 1329 depending on whether the access is a read 1330 or a write. */ 1331 __IOM uint32_t ITATBCTR1; /*!< (@ 0x00000EF4) The ITATBCTR1 register performs different functions 1332 depending on whether the access is a read 1333 or a write. */ 1334 __IOM uint32_t ITATBCTR0; /*!< (@ 0x00000EF8) The ITATBCTR0 register performs different functions 1335 depending on whether the access is a read 1336 or a write. */ 1337 __IM uint32_t RESERVED1; 1338 __IOM uint32_t ITCTRL; /*!< (@ 0x00000F00) The ITCTRL register enables the component to 1339 switch from a functional mode, which is 1340 the default behavior, to integration mode 1341 where the inputs and outputs of the component 1342 can be directly controlled for the purposes 1343 of integration testing and topology detection. */ 1344 __IM uint32_t RESERVED2[39]; 1345 __IOM uint32_t CLAIMSET; /*!< (@ 0x00000FA0) Software can use the claim tag to coordinate 1346 application and debugger access to trace 1347 unit functionality. The claim tags have 1348 no effect on the operation of the component. 1349 The CLAIMSET register sets bits in the claim 1350 tag, and determines the number of claim 1351 bits implemented. */ 1352 __IOM uint32_t CLAIMCLR; /*!< (@ 0x00000FA4) Software can use the claim tag to coordinate 1353 application and debugger access to trace 1354 unit functionality. The claim tags have 1355 no effect on the operation of the component. 1356 The CLAIMCLR register sets the bits in the 1357 claim tag to 0 and determines the current 1358 value of the claim tag. */ 1359 __IM uint32_t RESERVED3[2]; 1360 __IOM uint32_t LAR; /*!< (@ 0x00000FB0) This is used to enable write access to device 1361 registers. */ 1362 __IOM uint32_t LSR; /*!< (@ 0x00000FB4) This indicates the status of the lock control 1363 mechanism. This lock prevents accidental 1364 writes by code under debug. Accesses to 1365 the extended stimulus port registers are 1366 not affected by the lock mechanism. This 1367 register must always be present although 1368 there might not be any lock access control 1369 mechanism. The lock mechanism, where present 1370 and locked, must block write accesses to 1371 any control register, except the Lock Access 1372 Register. For most components this cover */ 1373 __IOM uint32_t AUTHSTATUS; /*!< (@ 0x00000FB8) Indicates the current level of tracing permitted 1374 by the system */ 1375 __IM uint32_t RESERVED4[3]; 1376 __IM uint32_t DEVID; /*!< (@ 0x00000FC8) Indicates the capabilities of the component. */ 1377 __IM uint32_t DEVTYPE; /*!< (@ 0x00000FCC) The DEVTYPE register provides a debugger with 1378 information about the component when the 1379 Part Number field is not recognized. The 1380 debugger can then report this information. */ 1381 __IOM uint32_t PIDR4; /*!< (@ 0x00000FD0) Coresight peripheral identification registers. */ 1382 __IM uint32_t RESERVED5[3]; 1383 __IOM uint32_t PIDR_0; /*!< (@ 0x00000FE0) Coresight peripheral identification registers. */ 1384 __IOM uint32_t PIDR_1; /*!< (@ 0x00000FE4) Coresight peripheral identification registers. */ 1385 __IOM uint32_t PIDR_2; /*!< (@ 0x00000FE8) Coresight peripheral identification registers. */ 1386 __IOM uint32_t PIDR_3; /*!< (@ 0x00000FEC) Coresight peripheral identification registers. */ 1387 __IOM uint32_t CIDR_0; /*!< (@ 0x00000FF0) Coresight component identification registers. */ 1388 __IOM uint32_t CIDR_1; /*!< (@ 0x00000FF4) Coresight component identification registers. */ 1389 __IOM uint32_t CIDR_2; /*!< (@ 0x00000FF8) Coresight component identification registers. */ 1390 __IOM uint32_t CIDR_3; /*!< (@ 0x00000FFC) Coresight component identification registers. */ 1391 } NRF_ATBFUNNEL_Type; /*!< Size = 4096 (0x1000) */ 1392 1393 1394 1395 /* =========================================================================================================================== */ 1396 /* ================ TAD_S ================ */ 1397 /* =========================================================================================================================== */ 1398 1399 1400 /** 1401 * @brief Trace and debug control (TAD_S) 1402 */ 1403 1404 typedef struct { /*!< (@ 0xE0080000) TAD_S Structure */ 1405 __OM uint32_t TASKS_CLOCKSTART; /*!< (@ 0x00000000) Start all trace and debug clocks. */ 1406 __OM uint32_t TASKS_CLOCKSTOP; /*!< (@ 0x00000004) Stop all trace and debug clocks. */ 1407 __IM uint32_t RESERVED[318]; 1408 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable debug domain and aquire selected GPIOs */ 1409 __IOM TAD_PSEL_Type PSEL; /*!< (@ 0x00000504) Unspecified */ 1410 __IOM uint32_t TRACEPORTSPEED; /*!< (@ 0x00000518) Clocking options for the Trace Port debug interface 1411 Reset behavior is the same as debug components */ 1412 } NRF_TAD_Type; /*!< Size = 1308 (0x51c) */ 1413 1414 1415 1416 /* =========================================================================================================================== */ 1417 /* ================ SPU_S ================ */ 1418 /* =========================================================================================================================== */ 1419 1420 1421 /** 1422 * @brief System protection unit (SPU_S) 1423 */ 1424 1425 typedef struct { /*!< (@ 0x50003000) SPU_S Structure */ 1426 __IM uint32_t RESERVED[64]; 1427 __IOM uint32_t EVENTS_RAMACCERR; /*!< (@ 0x00000100) A security violation has been detected for the 1428 RAM memory space */ 1429 __IOM uint32_t EVENTS_FLASHACCERR; /*!< (@ 0x00000104) A security violation has been detected for the 1430 flash memory space */ 1431 __IOM uint32_t EVENTS_PERIPHACCERR; /*!< (@ 0x00000108) A security violation has been detected on one 1432 or several peripherals */ 1433 __IM uint32_t RESERVED1[29]; 1434 __IOM uint32_t PUBLISH_RAMACCERR; /*!< (@ 0x00000180) Publish configuration for event RAMACCERR */ 1435 __IOM uint32_t PUBLISH_FLASHACCERR; /*!< (@ 0x00000184) Publish configuration for event FLASHACCERR */ 1436 __IOM uint32_t PUBLISH_PERIPHACCERR; /*!< (@ 0x00000188) Publish configuration for event PERIPHACCERR */ 1437 __IM uint32_t RESERVED2[93]; 1438 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1439 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1440 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1441 __IM uint32_t RESERVED3[61]; 1442 __IM uint32_t CAP; /*!< (@ 0x00000400) Show implemented features for the current device */ 1443 __IM uint32_t RESERVED4[15]; 1444 __IOM SPU_EXTDOMAIN_Type EXTDOMAIN[1]; /*!< (@ 0x00000440) Unspecified */ 1445 __IM uint32_t RESERVED5[15]; 1446 __IOM SPU_DPPI_Type DPPI[1]; /*!< (@ 0x00000480) Unspecified */ 1447 __IM uint32_t RESERVED6[14]; 1448 __IOM SPU_GPIOPORT_Type GPIOPORT[1]; /*!< (@ 0x000004C0) Unspecified */ 1449 __IM uint32_t RESERVED7[14]; 1450 __IOM SPU_FLASHNSC_Type FLASHNSC[2]; /*!< (@ 0x00000500) Unspecified */ 1451 __IM uint32_t RESERVED8[12]; 1452 __IOM SPU_RAMNSC_Type RAMNSC[2]; /*!< (@ 0x00000540) Unspecified */ 1453 __IM uint32_t RESERVED9[44]; 1454 __IOM SPU_FLASHREGION_Type FLASHREGION[32]; /*!< (@ 0x00000600) Unspecified */ 1455 __IM uint32_t RESERVED10[32]; 1456 __IOM SPU_RAMREGION_Type RAMREGION[32]; /*!< (@ 0x00000700) Unspecified */ 1457 __IM uint32_t RESERVED11[32]; 1458 __IOM SPU_PERIPHID_Type PERIPHID[67]; /*!< (@ 0x00000800) Unspecified */ 1459 } NRF_SPU_Type; /*!< Size = 2316 (0x90c) */ 1460 1461 1462 1463 /* =========================================================================================================================== */ 1464 /* ================ REGULATORS_NS ================ */ 1465 /* =========================================================================================================================== */ 1466 1467 1468 /** 1469 * @brief Voltage regulators control 0 (REGULATORS_NS) 1470 */ 1471 1472 typedef struct { /*!< (@ 0x40004000) REGULATORS_NS Structure */ 1473 __IM uint32_t RESERVED[320]; 1474 __OM uint32_t SYSTEMOFF; /*!< (@ 0x00000500) System OFF register */ 1475 __IM uint32_t RESERVED1[4]; 1476 __IOM uint32_t EXTPOFCON; /*!< (@ 0x00000514) External power failure warning configuration */ 1477 __IM uint32_t RESERVED2[24]; 1478 __IOM uint32_t DCDCEN; /*!< (@ 0x00000578) Enable a step-down DC/DC voltage regulator. */ 1479 } NRF_REGULATORS_Type; /*!< Size = 1404 (0x57c) */ 1480 1481 1482 1483 /* =========================================================================================================================== */ 1484 /* ================ CLOCK_NS ================ */ 1485 /* =========================================================================================================================== */ 1486 1487 1488 /** 1489 * @brief Clock management 0 (CLOCK_NS) 1490 */ 1491 1492 typedef struct { /*!< (@ 0x40005000) CLOCK_NS Structure */ 1493 __OM uint32_t TASKS_HFCLKSTART; /*!< (@ 0x00000000) Start HFCLK source */ 1494 __OM uint32_t TASKS_HFCLKSTOP; /*!< (@ 0x00000004) Stop HFCLK source */ 1495 __OM uint32_t TASKS_LFCLKSTART; /*!< (@ 0x00000008) Start LFCLK source */ 1496 __OM uint32_t TASKS_LFCLKSTOP; /*!< (@ 0x0000000C) Stop LFCLK source */ 1497 __IM uint32_t RESERVED[28]; 1498 __IOM uint32_t SUBSCRIBE_HFCLKSTART; /*!< (@ 0x00000080) Subscribe configuration for task HFCLKSTART */ 1499 __IOM uint32_t SUBSCRIBE_HFCLKSTOP; /*!< (@ 0x00000084) Subscribe configuration for task HFCLKSTOP */ 1500 __IOM uint32_t SUBSCRIBE_LFCLKSTART; /*!< (@ 0x00000088) Subscribe configuration for task LFCLKSTART */ 1501 __IOM uint32_t SUBSCRIBE_LFCLKSTOP; /*!< (@ 0x0000008C) Subscribe configuration for task LFCLKSTOP */ 1502 __IM uint32_t RESERVED1[28]; 1503 __IOM uint32_t EVENTS_HFCLKSTARTED; /*!< (@ 0x00000100) HFCLK oscillator started */ 1504 __IOM uint32_t EVENTS_LFCLKSTARTED; /*!< (@ 0x00000104) LFCLK started */ 1505 __IM uint32_t RESERVED2[30]; 1506 __IOM uint32_t PUBLISH_HFCLKSTARTED; /*!< (@ 0x00000180) Publish configuration for event HFCLKSTARTED */ 1507 __IOM uint32_t PUBLISH_LFCLKSTARTED; /*!< (@ 0x00000184) Publish configuration for event LFCLKSTARTED */ 1508 __IM uint32_t RESERVED3[94]; 1509 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1510 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1511 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1512 __IM uint32_t INTPEND; /*!< (@ 0x0000030C) Pending interrupts */ 1513 __IM uint32_t RESERVED4[62]; 1514 __IM uint32_t HFCLKRUN; /*!< (@ 0x00000408) Status indicating that HFCLKSTART task has been 1515 triggered */ 1516 __IM uint32_t HFCLKSTAT; /*!< (@ 0x0000040C) The register shows if HFXO has been requested 1517 by triggering HFCLKSTART task and if it 1518 has been started (STATE). */ 1519 __IM uint32_t RESERVED5; 1520 __IM uint32_t LFCLKRUN; /*!< (@ 0x00000414) Status indicating that LFCLKSTART task has been 1521 triggered */ 1522 __IM uint32_t LFCLKSTAT; /*!< (@ 0x00000418) The register shows which LFCLK source has been 1523 requested (SRC) when triggering LFCLKSTART 1524 task and if the source has been started 1525 (STATE). */ 1526 __IM uint32_t LFCLKSRCCOPY; /*!< (@ 0x0000041C) Copy of LFCLKSRC register, set after LFCLKSTART 1527 task has been triggered */ 1528 __IM uint32_t RESERVED6[62]; 1529 __IOM uint32_t LFCLKSRC; /*!< (@ 0x00000518) Clock source for the LFCLK. LFCLKSTART task starts 1530 a clock source selected with this register. */ 1531 } NRF_CLOCK_Type; /*!< Size = 1308 (0x51c) */ 1532 1533 1534 1535 /* =========================================================================================================================== */ 1536 /* ================ POWER_NS ================ */ 1537 /* =========================================================================================================================== */ 1538 1539 1540 /** 1541 * @brief Power control 0 (POWER_NS) 1542 */ 1543 1544 typedef struct { /*!< (@ 0x40005000) POWER_NS Structure */ 1545 __IM uint32_t RESERVED[28]; 1546 __OM uint32_t TASKS_PWMREQSTART; /*!< (@ 0x00000070) Request forcing PWM mode in PMIC DC/DC buck regulator. 1547 (Drives FPWM_DCDC pin high or low depending 1548 on a setting in UICR). */ 1549 __OM uint32_t TASKS_PWMREQSTOP; /*!< (@ 0x00000074) Stop requesting forcing PWM mode in PMIC DC/DC 1550 buck regulator */ 1551 __OM uint32_t TASKS_CONSTLAT; /*!< (@ 0x00000078) Enable constant latency mode. */ 1552 __OM uint32_t TASKS_LOWPWR; /*!< (@ 0x0000007C) Enable low power mode (variable latency) */ 1553 __IM uint32_t RESERVED1[28]; 1554 __IOM uint32_t SUBSCRIBE_PWMREQSTART; /*!< (@ 0x000000F0) Subscribe configuration for task PWMREQSTART */ 1555 __IOM uint32_t SUBSCRIBE_PWMREQSTOP; /*!< (@ 0x000000F4) Subscribe configuration for task PWMREQSTOP */ 1556 __IOM uint32_t SUBSCRIBE_CONSTLAT; /*!< (@ 0x000000F8) Subscribe configuration for task CONSTLAT */ 1557 __IOM uint32_t SUBSCRIBE_LOWPWR; /*!< (@ 0x000000FC) Subscribe configuration for task LOWPWR */ 1558 __IM uint32_t RESERVED2[2]; 1559 __IOM uint32_t EVENTS_POFWARN; /*!< (@ 0x00000108) Power failure warning */ 1560 __IM uint32_t RESERVED3[2]; 1561 __IOM uint32_t EVENTS_SLEEPENTER; /*!< (@ 0x00000114) CPU entered WFI/WFE sleep */ 1562 __IOM uint32_t EVENTS_SLEEPEXIT; /*!< (@ 0x00000118) CPU exited WFI/WFE sleep */ 1563 __IM uint32_t RESERVED4[27]; 1564 __IOM uint32_t PUBLISH_POFWARN; /*!< (@ 0x00000188) Publish configuration for event POFWARN */ 1565 __IM uint32_t RESERVED5[2]; 1566 __IOM uint32_t PUBLISH_SLEEPENTER; /*!< (@ 0x00000194) Publish configuration for event SLEEPENTER */ 1567 __IOM uint32_t PUBLISH_SLEEPEXIT; /*!< (@ 0x00000198) Publish configuration for event SLEEPEXIT */ 1568 __IM uint32_t RESERVED6[89]; 1569 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1570 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1571 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1572 __IM uint32_t RESERVED7[61]; 1573 __IOM uint32_t RESETREAS; /*!< (@ 0x00000400) Reset reason */ 1574 __IM uint32_t RESERVED8[15]; 1575 __IM uint32_t POWERSTATUS; /*!< (@ 0x00000440) Modem domain power status */ 1576 __IM uint32_t RESERVED9[54]; 1577 __IOM uint32_t GPREGRET[2]; /*!< (@ 0x0000051C) Description collection: General purpose retention 1578 register */ 1579 __IM uint32_t RESERVED10[59]; 1580 __IOM POWER_LTEMODEM_Type LTEMODEM; /*!< (@ 0x00000610) LTE Modem */ 1581 } NRF_POWER_Type; /*!< Size = 1560 (0x618) */ 1582 1583 1584 1585 /* =========================================================================================================================== */ 1586 /* ================ CTRL_AP_PERI_S ================ */ 1587 /* =========================================================================================================================== */ 1588 1589 1590 /** 1591 * @brief Control access port (CTRL_AP_PERI_S) 1592 */ 1593 1594 typedef struct { /*!< (@ 0x50006000) CTRL_AP_PERI_S Structure */ 1595 __IM uint32_t RESERVED[256]; 1596 __IOM CTRLAPPERI_MAILBOX_Type MAILBOX; /*!< (@ 0x00000400) Unspecified */ 1597 __IM uint32_t RESERVED1[30]; 1598 __IOM CTRLAPPERI_ERASEPROTECT_Type ERASEPROTECT;/*!< (@ 0x00000500) Unspecified */ 1599 } NRF_CTRLAPPERI_Type; /*!< Size = 1288 (0x508) */ 1600 1601 1602 1603 /* =========================================================================================================================== */ 1604 /* ================ SPIM0_NS ================ */ 1605 /* =========================================================================================================================== */ 1606 1607 1608 /** 1609 * @brief Serial Peripheral Interface Master with EasyDMA 0 (SPIM0_NS) 1610 */ 1611 1612 typedef struct { /*!< (@ 0x40008000) SPIM0_NS Structure */ 1613 __IM uint32_t RESERVED[4]; 1614 __OM uint32_t TASKS_START; /*!< (@ 0x00000010) Start SPI transaction */ 1615 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop SPI transaction */ 1616 __IM uint32_t RESERVED1; 1617 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend SPI transaction */ 1618 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume SPI transaction */ 1619 __IM uint32_t RESERVED2[27]; 1620 __IOM uint32_t SUBSCRIBE_START; /*!< (@ 0x00000090) Subscribe configuration for task START */ 1621 __IOM uint32_t SUBSCRIBE_STOP; /*!< (@ 0x00000094) Subscribe configuration for task STOP */ 1622 __IM uint32_t RESERVED3; 1623 __IOM uint32_t SUBSCRIBE_SUSPEND; /*!< (@ 0x0000009C) Subscribe configuration for task SUSPEND */ 1624 __IOM uint32_t SUBSCRIBE_RESUME; /*!< (@ 0x000000A0) Subscribe configuration for task RESUME */ 1625 __IM uint32_t RESERVED4[24]; 1626 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) SPI transaction has stopped */ 1627 __IM uint32_t RESERVED5[2]; 1628 __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) End of RXD buffer reached */ 1629 __IM uint32_t RESERVED6; 1630 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000118) End of RXD buffer and TXD buffer reached */ 1631 __IM uint32_t RESERVED7; 1632 __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000120) End of TXD buffer reached */ 1633 __IM uint32_t RESERVED8[10]; 1634 __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x0000014C) Transaction started */ 1635 __IM uint32_t RESERVED9[13]; 1636 __IOM uint32_t PUBLISH_STOPPED; /*!< (@ 0x00000184) Publish configuration for event STOPPED */ 1637 __IM uint32_t RESERVED10[2]; 1638 __IOM uint32_t PUBLISH_ENDRX; /*!< (@ 0x00000190) Publish configuration for event ENDRX */ 1639 __IM uint32_t RESERVED11; 1640 __IOM uint32_t PUBLISH_END; /*!< (@ 0x00000198) Publish configuration for event END */ 1641 __IM uint32_t RESERVED12; 1642 __IOM uint32_t PUBLISH_ENDTX; /*!< (@ 0x000001A0) Publish configuration for event ENDTX */ 1643 __IM uint32_t RESERVED13[10]; 1644 __IOM uint32_t PUBLISH_STARTED; /*!< (@ 0x000001CC) Publish configuration for event STARTED */ 1645 __IM uint32_t RESERVED14[12]; 1646 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1647 __IM uint32_t RESERVED15[64]; 1648 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1649 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1650 __IM uint32_t RESERVED16[125]; 1651 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPIM */ 1652 __IM uint32_t RESERVED17; 1653 __IOM SPIM_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1654 __IM uint32_t RESERVED18[4]; 1655 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK 1656 source selected. */ 1657 __IM uint32_t RESERVED19[3]; 1658 __IOM SPIM_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1659 __IOM SPIM_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1660 __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */ 1661 __IM uint32_t RESERVED20[26]; 1662 __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character. Character clocked out in 1663 case an over-read of the TXD buffer. */ 1664 } NRF_SPIM_Type; /*!< Size = 1476 (0x5c4) */ 1665 1666 1667 1668 /* =========================================================================================================================== */ 1669 /* ================ SPIS0_NS ================ */ 1670 /* =========================================================================================================================== */ 1671 1672 1673 /** 1674 * @brief SPI Slave 0 (SPIS0_NS) 1675 */ 1676 1677 typedef struct { /*!< (@ 0x40008000) SPIS0_NS Structure */ 1678 __IM uint32_t RESERVED[9]; 1679 __OM uint32_t TASKS_ACQUIRE; /*!< (@ 0x00000024) Acquire SPI semaphore */ 1680 __OM uint32_t TASKS_RELEASE; /*!< (@ 0x00000028) Release SPI semaphore, enabling the SPI slave 1681 to acquire it */ 1682 __IM uint32_t RESERVED1[30]; 1683 __IOM uint32_t SUBSCRIBE_ACQUIRE; /*!< (@ 0x000000A4) Subscribe configuration for task ACQUIRE */ 1684 __IOM uint32_t SUBSCRIBE_RELEASE; /*!< (@ 0x000000A8) Subscribe configuration for task RELEASE */ 1685 __IM uint32_t RESERVED2[22]; 1686 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000104) Granted transaction completed */ 1687 __IM uint32_t RESERVED3[2]; 1688 __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) End of RXD buffer reached */ 1689 __IM uint32_t RESERVED4[5]; 1690 __IOM uint32_t EVENTS_ACQUIRED; /*!< (@ 0x00000128) Semaphore acquired */ 1691 __IM uint32_t RESERVED5[22]; 1692 __IOM uint32_t PUBLISH_END; /*!< (@ 0x00000184) Publish configuration for event END */ 1693 __IM uint32_t RESERVED6[2]; 1694 __IOM uint32_t PUBLISH_ENDRX; /*!< (@ 0x00000190) Publish configuration for event ENDRX */ 1695 __IM uint32_t RESERVED7[5]; 1696 __IOM uint32_t PUBLISH_ACQUIRED; /*!< (@ 0x000001A8) Publish configuration for event ACQUIRED */ 1697 __IM uint32_t RESERVED8[21]; 1698 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1699 __IM uint32_t RESERVED9[64]; 1700 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1701 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1702 __IM uint32_t RESERVED10[61]; 1703 __IM uint32_t SEMSTAT; /*!< (@ 0x00000400) Semaphore status register */ 1704 __IM uint32_t RESERVED11[15]; 1705 __IOM uint32_t STATUS; /*!< (@ 0x00000440) Status from last transaction */ 1706 __IM uint32_t RESERVED12[47]; 1707 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPI slave */ 1708 __IM uint32_t RESERVED13; 1709 __IOM SPIS_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1710 __IM uint32_t RESERVED14[7]; 1711 __IOM SPIS_RXD_Type RXD; /*!< (@ 0x00000534) Unspecified */ 1712 __IOM SPIS_TXD_Type TXD; /*!< (@ 0x00000544) Unspecified */ 1713 __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */ 1714 __IM uint32_t RESERVED15; 1715 __IOM uint32_t DEF; /*!< (@ 0x0000055C) Default character. Character clocked out in case 1716 of an ignored transaction. */ 1717 __IM uint32_t RESERVED16[24]; 1718 __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character */ 1719 } NRF_SPIS_Type; /*!< Size = 1476 (0x5c4) */ 1720 1721 1722 1723 /* =========================================================================================================================== */ 1724 /* ================ TWIM0_NS ================ */ 1725 /* =========================================================================================================================== */ 1726 1727 1728 /** 1729 * @brief I2C compatible Two-Wire Master Interface with EasyDMA 0 (TWIM0_NS) 1730 */ 1731 1732 typedef struct { /*!< (@ 0x40008000) TWIM0_NS Structure */ 1733 __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start TWI receive sequence */ 1734 __IM uint32_t RESERVED; 1735 __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start TWI transmit sequence */ 1736 __IM uint32_t RESERVED1[2]; 1737 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction. Must be issued while the 1738 TWI master is not suspended. */ 1739 __IM uint32_t RESERVED2; 1740 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */ 1741 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */ 1742 __IM uint32_t RESERVED3[23]; 1743 __IOM uint32_t SUBSCRIBE_STARTRX; /*!< (@ 0x00000080) Subscribe configuration for task STARTRX */ 1744 __IM uint32_t RESERVED4; 1745 __IOM uint32_t SUBSCRIBE_STARTTX; /*!< (@ 0x00000088) Subscribe configuration for task STARTTX */ 1746 __IM uint32_t RESERVED5[2]; 1747 __IOM uint32_t SUBSCRIBE_STOP; /*!< (@ 0x00000094) Subscribe configuration for task STOP */ 1748 __IM uint32_t RESERVED6; 1749 __IOM uint32_t SUBSCRIBE_SUSPEND; /*!< (@ 0x0000009C) Subscribe configuration for task SUSPEND */ 1750 __IOM uint32_t SUBSCRIBE_RESUME; /*!< (@ 0x000000A0) Subscribe configuration for task RESUME */ 1751 __IM uint32_t RESERVED7[24]; 1752 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */ 1753 __IM uint32_t RESERVED8[7]; 1754 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */ 1755 __IM uint32_t RESERVED9[8]; 1756 __IOM uint32_t EVENTS_SUSPENDED; /*!< (@ 0x00000148) SUSPEND task has been issued, TWI traffic is 1757 now suspended. */ 1758 __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) Receive sequence started */ 1759 __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) Transmit sequence started */ 1760 __IM uint32_t RESERVED10[2]; 1761 __IOM uint32_t EVENTS_LASTRX; /*!< (@ 0x0000015C) Byte boundary, starting to receive the last byte */ 1762 __IOM uint32_t EVENTS_LASTTX; /*!< (@ 0x00000160) Byte boundary, starting to transmit the last 1763 byte */ 1764 __IM uint32_t RESERVED11[8]; 1765 __IOM uint32_t PUBLISH_STOPPED; /*!< (@ 0x00000184) Publish configuration for event STOPPED */ 1766 __IM uint32_t RESERVED12[7]; 1767 __IOM uint32_t PUBLISH_ERROR; /*!< (@ 0x000001A4) Publish configuration for event ERROR */ 1768 __IM uint32_t RESERVED13[8]; 1769 __IOM uint32_t PUBLISH_SUSPENDED; /*!< (@ 0x000001C8) Publish configuration for event SUSPENDED */ 1770 __IOM uint32_t PUBLISH_RXSTARTED; /*!< (@ 0x000001CC) Publish configuration for event RXSTARTED */ 1771 __IOM uint32_t PUBLISH_TXSTARTED; /*!< (@ 0x000001D0) Publish configuration for event TXSTARTED */ 1772 __IM uint32_t RESERVED14[2]; 1773 __IOM uint32_t PUBLISH_LASTRX; /*!< (@ 0x000001DC) Publish configuration for event LASTRX */ 1774 __IOM uint32_t PUBLISH_LASTTX; /*!< (@ 0x000001E0) Publish configuration for event LASTTX */ 1775 __IM uint32_t RESERVED15[7]; 1776 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1777 __IM uint32_t RESERVED16[63]; 1778 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1779 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1780 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1781 __IM uint32_t RESERVED17[110]; 1782 __IOM uint32_t ERRORSRC; /*!< (@ 0x000004C4) Error source */ 1783 __IM uint32_t RESERVED18[14]; 1784 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWIM */ 1785 __IM uint32_t RESERVED19; 1786 __IOM TWIM_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1787 __IM uint32_t RESERVED20[5]; 1788 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK 1789 source selected. */ 1790 __IM uint32_t RESERVED21[3]; 1791 __IOM TWIM_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1792 __IOM TWIM_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1793 __IM uint32_t RESERVED22[13]; 1794 __IOM uint32_t ADDRESS; /*!< (@ 0x00000588) Address used in the TWI transfer */ 1795 } NRF_TWIM_Type; /*!< Size = 1420 (0x58c) */ 1796 1797 1798 1799 /* =========================================================================================================================== */ 1800 /* ================ TWIS0_NS ================ */ 1801 /* =========================================================================================================================== */ 1802 1803 1804 /** 1805 * @brief I2C compatible Two-Wire Slave Interface with EasyDMA 0 (TWIS0_NS) 1806 */ 1807 1808 typedef struct { /*!< (@ 0x40008000) TWIS0_NS Structure */ 1809 __IM uint32_t RESERVED[5]; 1810 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction */ 1811 __IM uint32_t RESERVED1; 1812 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */ 1813 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */ 1814 __IM uint32_t RESERVED2[3]; 1815 __OM uint32_t TASKS_PREPARERX; /*!< (@ 0x00000030) Prepare the TWI slave to respond to a write command */ 1816 __OM uint32_t TASKS_PREPARETX; /*!< (@ 0x00000034) Prepare the TWI slave to respond to a read command */ 1817 __IM uint32_t RESERVED3[23]; 1818 __IOM uint32_t SUBSCRIBE_STOP; /*!< (@ 0x00000094) Subscribe configuration for task STOP */ 1819 __IM uint32_t RESERVED4; 1820 __IOM uint32_t SUBSCRIBE_SUSPEND; /*!< (@ 0x0000009C) Subscribe configuration for task SUSPEND */ 1821 __IOM uint32_t SUBSCRIBE_RESUME; /*!< (@ 0x000000A0) Subscribe configuration for task RESUME */ 1822 __IM uint32_t RESERVED5[3]; 1823 __IOM uint32_t SUBSCRIBE_PREPARERX; /*!< (@ 0x000000B0) Subscribe configuration for task PREPARERX */ 1824 __IOM uint32_t SUBSCRIBE_PREPARETX; /*!< (@ 0x000000B4) Subscribe configuration for task PREPARETX */ 1825 __IM uint32_t RESERVED6[19]; 1826 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */ 1827 __IM uint32_t RESERVED7[7]; 1828 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */ 1829 __IM uint32_t RESERVED8[9]; 1830 __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) Receive sequence started */ 1831 __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) Transmit sequence started */ 1832 __IM uint32_t RESERVED9[4]; 1833 __IOM uint32_t EVENTS_WRITE; /*!< (@ 0x00000164) Write command received */ 1834 __IOM uint32_t EVENTS_READ; /*!< (@ 0x00000168) Read command received */ 1835 __IM uint32_t RESERVED10[6]; 1836 __IOM uint32_t PUBLISH_STOPPED; /*!< (@ 0x00000184) Publish configuration for event STOPPED */ 1837 __IM uint32_t RESERVED11[7]; 1838 __IOM uint32_t PUBLISH_ERROR; /*!< (@ 0x000001A4) Publish configuration for event ERROR */ 1839 __IM uint32_t RESERVED12[9]; 1840 __IOM uint32_t PUBLISH_RXSTARTED; /*!< (@ 0x000001CC) Publish configuration for event RXSTARTED */ 1841 __IOM uint32_t PUBLISH_TXSTARTED; /*!< (@ 0x000001D0) Publish configuration for event TXSTARTED */ 1842 __IM uint32_t RESERVED13[4]; 1843 __IOM uint32_t PUBLISH_WRITE; /*!< (@ 0x000001E4) Publish configuration for event WRITE */ 1844 __IOM uint32_t PUBLISH_READ; /*!< (@ 0x000001E8) Publish configuration for event READ */ 1845 __IM uint32_t RESERVED14[5]; 1846 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1847 __IM uint32_t RESERVED15[63]; 1848 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1849 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1850 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1851 __IM uint32_t RESERVED16[113]; 1852 __IOM uint32_t ERRORSRC; /*!< (@ 0x000004D0) Error source */ 1853 __IM uint32_t MATCH; /*!< (@ 0x000004D4) Status register indicating which address had 1854 a match */ 1855 __IM uint32_t RESERVED17[10]; 1856 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWIS */ 1857 __IM uint32_t RESERVED18; 1858 __IOM TWIS_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1859 __IM uint32_t RESERVED19[9]; 1860 __IOM TWIS_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1861 __IOM TWIS_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1862 __IM uint32_t RESERVED20[13]; 1863 __IOM uint32_t ADDRESS[2]; /*!< (@ 0x00000588) Description collection: TWI slave address n */ 1864 __IM uint32_t RESERVED21; 1865 __IOM uint32_t CONFIG; /*!< (@ 0x00000594) Configuration register for the address match 1866 mechanism */ 1867 __IM uint32_t RESERVED22[10]; 1868 __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character. Character sent out in case 1869 of an over-read of the transmit buffer. */ 1870 } NRF_TWIS_Type; /*!< Size = 1476 (0x5c4) */ 1871 1872 1873 1874 /* =========================================================================================================================== */ 1875 /* ================ UARTE0_NS ================ */ 1876 /* =========================================================================================================================== */ 1877 1878 1879 /** 1880 * @brief UART with EasyDMA 0 (UARTE0_NS) 1881 */ 1882 1883 typedef struct { /*!< (@ 0x40008000) UARTE0_NS Structure */ 1884 __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start UART receiver */ 1885 __OM uint32_t TASKS_STOPRX; /*!< (@ 0x00000004) Stop UART receiver */ 1886 __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start UART transmitter */ 1887 __OM uint32_t TASKS_STOPTX; /*!< (@ 0x0000000C) Stop UART transmitter */ 1888 __IM uint32_t RESERVED[7]; 1889 __OM uint32_t TASKS_FLUSHRX; /*!< (@ 0x0000002C) Flush RX FIFO into RX buffer */ 1890 __IM uint32_t RESERVED1[20]; 1891 __IOM uint32_t SUBSCRIBE_STARTRX; /*!< (@ 0x00000080) Subscribe configuration for task STARTRX */ 1892 __IOM uint32_t SUBSCRIBE_STOPRX; /*!< (@ 0x00000084) Subscribe configuration for task STOPRX */ 1893 __IOM uint32_t SUBSCRIBE_STARTTX; /*!< (@ 0x00000088) Subscribe configuration for task STARTTX */ 1894 __IOM uint32_t SUBSCRIBE_STOPTX; /*!< (@ 0x0000008C) Subscribe configuration for task STOPTX */ 1895 __IM uint32_t RESERVED2[7]; 1896 __IOM uint32_t SUBSCRIBE_FLUSHRX; /*!< (@ 0x000000AC) Subscribe configuration for task FLUSHRX */ 1897 __IM uint32_t RESERVED3[20]; 1898 __IOM uint32_t EVENTS_CTS; /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send. */ 1899 __IOM uint32_t EVENTS_NCTS; /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send. */ 1900 __IOM uint32_t EVENTS_RXDRDY; /*!< (@ 0x00000108) Data received in RXD (but potentially not yet 1901 transferred to Data RAM) */ 1902 __IM uint32_t RESERVED4; 1903 __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) Receive buffer is filled up */ 1904 __IM uint32_t RESERVED5[2]; 1905 __IOM uint32_t EVENTS_TXDRDY; /*!< (@ 0x0000011C) Data sent from TXD */ 1906 __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000120) Last TX byte transmitted */ 1907 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) Error detected */ 1908 __IM uint32_t RESERVED6[7]; 1909 __IOM uint32_t EVENTS_RXTO; /*!< (@ 0x00000144) Receiver timeout */ 1910 __IM uint32_t RESERVED7; 1911 __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) UART receiver has started */ 1912 __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) UART transmitter has started */ 1913 __IM uint32_t RESERVED8; 1914 __IOM uint32_t EVENTS_TXSTOPPED; /*!< (@ 0x00000158) Transmitter stopped */ 1915 __IM uint32_t RESERVED9[9]; 1916 __IOM uint32_t PUBLISH_CTS; /*!< (@ 0x00000180) Publish configuration for event CTS */ 1917 __IOM uint32_t PUBLISH_NCTS; /*!< (@ 0x00000184) Publish configuration for event NCTS */ 1918 __IOM uint32_t PUBLISH_RXDRDY; /*!< (@ 0x00000188) Publish configuration for event RXDRDY */ 1919 __IM uint32_t RESERVED10; 1920 __IOM uint32_t PUBLISH_ENDRX; /*!< (@ 0x00000190) Publish configuration for event ENDRX */ 1921 __IM uint32_t RESERVED11[2]; 1922 __IOM uint32_t PUBLISH_TXDRDY; /*!< (@ 0x0000019C) Publish configuration for event TXDRDY */ 1923 __IOM uint32_t PUBLISH_ENDTX; /*!< (@ 0x000001A0) Publish configuration for event ENDTX */ 1924 __IOM uint32_t PUBLISH_ERROR; /*!< (@ 0x000001A4) Publish configuration for event ERROR */ 1925 __IM uint32_t RESERVED12[7]; 1926 __IOM uint32_t PUBLISH_RXTO; /*!< (@ 0x000001C4) Publish configuration for event RXTO */ 1927 __IM uint32_t RESERVED13; 1928 __IOM uint32_t PUBLISH_RXSTARTED; /*!< (@ 0x000001CC) Publish configuration for event RXSTARTED */ 1929 __IOM uint32_t PUBLISH_TXSTARTED; /*!< (@ 0x000001D0) Publish configuration for event TXSTARTED */ 1930 __IM uint32_t RESERVED14; 1931 __IOM uint32_t PUBLISH_TXSTOPPED; /*!< (@ 0x000001D8) Publish configuration for event TXSTOPPED */ 1932 __IM uint32_t RESERVED15[9]; 1933 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1934 __IM uint32_t RESERVED16[63]; 1935 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1936 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1937 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1938 __IM uint32_t RESERVED17[93]; 1939 __IOM uint32_t ERRORSRC; /*!< (@ 0x00000480) Error source This register is read/write one 1940 to clear. */ 1941 __IM uint32_t RESERVED18[31]; 1942 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable UART */ 1943 __IM uint32_t RESERVED19; 1944 __IOM UARTE_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1945 __IM uint32_t RESERVED20[3]; 1946 __IOM uint32_t BAUDRATE; /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source 1947 selected. */ 1948 __IM uint32_t RESERVED21[3]; 1949 __IOM UARTE_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1950 __IM uint32_t RESERVED22; 1951 __IOM UARTE_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1952 __IM uint32_t RESERVED23[7]; 1953 __IOM uint32_t CONFIG; /*!< (@ 0x0000056C) Configuration of parity and hardware flow control */ 1954 } NRF_UARTE_Type; /*!< Size = 1392 (0x570) */ 1955 1956 1957 1958 /* =========================================================================================================================== */ 1959 /* ================ GPIOTE0_S ================ */ 1960 /* =========================================================================================================================== */ 1961 1962 1963 /** 1964 * @brief GPIO Tasks and Events 0 (GPIOTE0_S) 1965 */ 1966 1967 typedef struct { /*!< (@ 0x5000D000) GPIOTE0_S Structure */ 1968 __OM uint32_t TASKS_OUT[8]; /*!< (@ 0x00000000) Description collection: Task for writing to pin 1969 specified in CONFIG[n].PSEL. Action on pin 1970 is configured in CONFIG[n].POLARITY. */ 1971 __IM uint32_t RESERVED[4]; 1972 __OM uint32_t TASKS_SET[8]; /*!< (@ 0x00000030) Description collection: Task for writing to pin 1973 specified in CONFIG[n].PSEL. Action on pin 1974 is to set it high. */ 1975 __IM uint32_t RESERVED1[4]; 1976 __OM uint32_t TASKS_CLR[8]; /*!< (@ 0x00000060) Description collection: Task for writing to pin 1977 specified in CONFIG[n].PSEL. Action on pin 1978 is to set it low. */ 1979 __IOM uint32_t SUBSCRIBE_OUT[8]; /*!< (@ 0x00000080) Description collection: Subscribe configuration 1980 for task OUT[n] */ 1981 __IM uint32_t RESERVED2[4]; 1982 __IOM uint32_t SUBSCRIBE_SET[8]; /*!< (@ 0x000000B0) Description collection: Subscribe configuration 1983 for task SET[n] */ 1984 __IM uint32_t RESERVED3[4]; 1985 __IOM uint32_t SUBSCRIBE_CLR[8]; /*!< (@ 0x000000E0) Description collection: Subscribe configuration 1986 for task CLR[n] */ 1987 __IOM uint32_t EVENTS_IN[8]; /*!< (@ 0x00000100) Description collection: Event generated from 1988 pin specified in CONFIG[n].PSEL */ 1989 __IM uint32_t RESERVED4[23]; 1990 __IOM uint32_t EVENTS_PORT; /*!< (@ 0x0000017C) Event generated from multiple input GPIO pins 1991 with SENSE mechanism enabled */ 1992 __IOM uint32_t PUBLISH_IN[8]; /*!< (@ 0x00000180) Description collection: Publish configuration 1993 for event IN[n] */ 1994 __IM uint32_t RESERVED5[23]; 1995 __IOM uint32_t PUBLISH_PORT; /*!< (@ 0x000001FC) Publish configuration for event PORT */ 1996 __IM uint32_t RESERVED6[65]; 1997 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1998 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1999 __IM uint32_t RESERVED7[129]; 2000 __IOM uint32_t CONFIG[8]; /*!< (@ 0x00000510) Description collection: Configuration for OUT[n], 2001 SET[n], and CLR[n] tasks and IN[n] event */ 2002 } NRF_GPIOTE_Type; /*!< Size = 1328 (0x530) */ 2003 2004 2005 2006 /* =========================================================================================================================== */ 2007 /* ================ SAADC_NS ================ */ 2008 /* =========================================================================================================================== */ 2009 2010 2011 /** 2012 * @brief Analog to Digital Converter 0 (SAADC_NS) 2013 */ 2014 2015 typedef struct { /*!< (@ 0x4000E000) SAADC_NS Structure */ 2016 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start the ADC and prepare the result buffer in 2017 RAM */ 2018 __OM uint32_t TASKS_SAMPLE; /*!< (@ 0x00000004) Take one ADC sample, if scan is enabled all channels 2019 are sampled */ 2020 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop the ADC and terminate any on-going conversion */ 2021 __OM uint32_t TASKS_CALIBRATEOFFSET; /*!< (@ 0x0000000C) Starts offset auto-calibration */ 2022 __IM uint32_t RESERVED[28]; 2023 __IOM uint32_t SUBSCRIBE_START; /*!< (@ 0x00000080) Subscribe configuration for task START */ 2024 __IOM uint32_t SUBSCRIBE_SAMPLE; /*!< (@ 0x00000084) Subscribe configuration for task SAMPLE */ 2025 __IOM uint32_t SUBSCRIBE_STOP; /*!< (@ 0x00000088) Subscribe configuration for task STOP */ 2026 __IOM uint32_t SUBSCRIBE_CALIBRATEOFFSET; /*!< (@ 0x0000008C) Subscribe configuration for task CALIBRATEOFFSET */ 2027 __IM uint32_t RESERVED1[28]; 2028 __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000100) The ADC has started */ 2029 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000104) The ADC has filled up the Result buffer */ 2030 __IOM uint32_t EVENTS_DONE; /*!< (@ 0x00000108) A conversion task has been completed. Depending 2031 on the mode, multiple conversions might 2032 be needed for a result to be transferred 2033 to RAM. */ 2034 __IOM uint32_t EVENTS_RESULTDONE; /*!< (@ 0x0000010C) A result is ready to get transferred to RAM. */ 2035 __IOM uint32_t EVENTS_CALIBRATEDONE; /*!< (@ 0x00000110) Calibration is complete */ 2036 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000114) The ADC has stopped */ 2037 __IOM SAADC_EVENTS_CH_Type EVENTS_CH[8]; /*!< (@ 0x00000118) Peripheral events. */ 2038 __IM uint32_t RESERVED2[10]; 2039 __IOM uint32_t PUBLISH_STARTED; /*!< (@ 0x00000180) Publish configuration for event STARTED */ 2040 __IOM uint32_t PUBLISH_END; /*!< (@ 0x00000184) Publish configuration for event END */ 2041 __IOM uint32_t PUBLISH_DONE; /*!< (@ 0x00000188) Publish configuration for event DONE */ 2042 __IOM uint32_t PUBLISH_RESULTDONE; /*!< (@ 0x0000018C) Publish configuration for event RESULTDONE */ 2043 __IOM uint32_t PUBLISH_CALIBRATEDONE; /*!< (@ 0x00000190) Publish configuration for event CALIBRATEDONE */ 2044 __IOM uint32_t PUBLISH_STOPPED; /*!< (@ 0x00000194) Publish configuration for event STOPPED */ 2045 __IOM SAADC_PUBLISH_CH_Type PUBLISH_CH[8]; /*!< (@ 0x00000198) Publish configuration for events */ 2046 __IM uint32_t RESERVED3[74]; 2047 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 2048 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 2049 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 2050 __IM uint32_t RESERVED4[61]; 2051 __IM uint32_t STATUS; /*!< (@ 0x00000400) Status */ 2052 __IM uint32_t RESERVED5[63]; 2053 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable or disable ADC */ 2054 __IM uint32_t RESERVED6[3]; 2055 __IOM SAADC_CH_Type CH[8]; /*!< (@ 0x00000510) Unspecified */ 2056 __IM uint32_t RESERVED7[24]; 2057 __IOM uint32_t RESOLUTION; /*!< (@ 0x000005F0) Resolution configuration */ 2058 __IOM uint32_t OVERSAMPLE; /*!< (@ 0x000005F4) Oversampling configuration. OVERSAMPLE should 2059 not be combined with SCAN. The RESOLUTION 2060 is applied before averaging, thus for high 2061 OVERSAMPLE a higher RESOLUTION should be 2062 used. */ 2063 __IOM uint32_t SAMPLERATE; /*!< (@ 0x000005F8) Controls normal or continuous sample rate */ 2064 __IM uint32_t RESERVED8[12]; 2065 __IOM SAADC_RESULT_Type RESULT; /*!< (@ 0x0000062C) RESULT EasyDMA channel */ 2066 } NRF_SAADC_Type; /*!< Size = 1592 (0x638) */ 2067 2068 2069 2070 /* =========================================================================================================================== */ 2071 /* ================ TIMER0_NS ================ */ 2072 /* =========================================================================================================================== */ 2073 2074 2075 /** 2076 * @brief Timer/Counter 0 (TIMER0_NS) 2077 */ 2078 2079 typedef struct { /*!< (@ 0x4000F000) TIMER0_NS Structure */ 2080 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start Timer */ 2081 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop Timer */ 2082 __OM uint32_t TASKS_COUNT; /*!< (@ 0x00000008) Increment Timer (Counter mode only) */ 2083 __OM uint32_t TASKS_CLEAR; /*!< (@ 0x0000000C) Clear time */ 2084 __OM uint32_t TASKS_SHUTDOWN; /*!< (@ 0x00000010) Deprecated register - Shut down timer */ 2085 __IM uint32_t RESERVED[11]; 2086 __OM uint32_t TASKS_CAPTURE[6]; /*!< (@ 0x00000040) Description collection: Capture Timer value to 2087 CC[n] register */ 2088 __IM uint32_t RESERVED1[10]; 2089 __IOM uint32_t SUBSCRIBE_START; /*!< (@ 0x00000080) Subscribe configuration for task START */ 2090 __IOM uint32_t SUBSCRIBE_STOP; /*!< (@ 0x00000084) Subscribe configuration for task STOP */ 2091 __IOM uint32_t SUBSCRIBE_COUNT; /*!< (@ 0x00000088) Subscribe configuration for task COUNT */ 2092 __IOM uint32_t SUBSCRIBE_CLEAR; /*!< (@ 0x0000008C) Subscribe configuration for task CLEAR */ 2093 __IOM uint32_t SUBSCRIBE_SHUTDOWN; /*!< (@ 0x00000090) Deprecated register - Subscribe configuration 2094 for task SHUTDOWN */ 2095 __IM uint32_t RESERVED2[11]; 2096 __IOM uint32_t SUBSCRIBE_CAPTURE[6]; /*!< (@ 0x000000C0) Description collection: Subscribe configuration 2097 for task CAPTURE[n] */ 2098 __IM uint32_t RESERVED3[26]; 2099 __IOM uint32_t EVENTS_COMPARE[6]; /*!< (@ 0x00000140) Description collection: Compare event on CC[n] 2100 match */ 2101 __IM uint32_t RESERVED4[26]; 2102 __IOM uint32_t PUBLISH_COMPARE[6]; /*!< (@ 0x000001C0) Description collection: Publish configuration 2103 for event COMPARE[n] */ 2104 __IM uint32_t RESERVED5[10]; 2105 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 2106 __IM uint32_t RESERVED6[64]; 2107 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 2108 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 2109 __IM uint32_t RESERVED7[126]; 2110 __IOM uint32_t MODE; /*!< (@ 0x00000504) Timer mode selection */ 2111 __IOM uint32_t BITMODE; /*!< (@ 0x00000508) Configure the number of bits used by the TIMER */ 2112 __IM uint32_t RESERVED8; 2113 __IOM uint32_t PRESCALER; /*!< (@ 0x00000510) Timer prescaler register */ 2114 __IOM uint32_t ONESHOTEN[6]; /*!< (@ 0x00000514) Description collection: Enable one-shot operation 2115 for Capture/Compare channel n */ 2116 __IM uint32_t RESERVED9[5]; 2117 __IOM uint32_t CC[6]; /*!< (@ 0x00000540) Description collection: Capture/Compare register 2118 n */ 2119 } NRF_TIMER_Type; /*!< Size = 1368 (0x558) */ 2120 2121 2122 2123 /* =========================================================================================================================== */ 2124 /* ================ RTC0_NS ================ */ 2125 /* =========================================================================================================================== */ 2126 2127 2128 /** 2129 * @brief Real-time counter 0 (RTC0_NS) 2130 */ 2131 2132 typedef struct { /*!< (@ 0x40014000) RTC0_NS Structure */ 2133 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start RTC counter */ 2134 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop RTC counter */ 2135 __OM uint32_t TASKS_CLEAR; /*!< (@ 0x00000008) Clear RTC counter */ 2136 __OM uint32_t TASKS_TRIGOVRFLW; /*!< (@ 0x0000000C) Set counter to 0xFFFFF0 */ 2137 __IM uint32_t RESERVED[28]; 2138 __IOM uint32_t SUBSCRIBE_START; /*!< (@ 0x00000080) Subscribe configuration for task START */ 2139 __IOM uint32_t SUBSCRIBE_STOP; /*!< (@ 0x00000084) Subscribe configuration for task STOP */ 2140 __IOM uint32_t SUBSCRIBE_CLEAR; /*!< (@ 0x00000088) Subscribe configuration for task CLEAR */ 2141 __IOM uint32_t SUBSCRIBE_TRIGOVRFLW; /*!< (@ 0x0000008C) Subscribe configuration for task TRIGOVRFLW */ 2142 __IM uint32_t RESERVED1[28]; 2143 __IOM uint32_t EVENTS_TICK; /*!< (@ 0x00000100) Event on counter increment */ 2144 __IOM uint32_t EVENTS_OVRFLW; /*!< (@ 0x00000104) Event on counter overflow */ 2145 __IM uint32_t RESERVED2[14]; 2146 __IOM uint32_t EVENTS_COMPARE[4]; /*!< (@ 0x00000140) Description collection: Compare event on CC[n] 2147 match */ 2148 __IM uint32_t RESERVED3[12]; 2149 __IOM uint32_t PUBLISH_TICK; /*!< (@ 0x00000180) Publish configuration for event TICK */ 2150 __IOM uint32_t PUBLISH_OVRFLW; /*!< (@ 0x00000184) Publish configuration for event OVRFLW */ 2151 __IM uint32_t RESERVED4[14]; 2152 __IOM uint32_t PUBLISH_COMPARE[4]; /*!< (@ 0x000001C0) Description collection: Publish configuration 2153 for event COMPARE[n] */ 2154 __IM uint32_t RESERVED5[77]; 2155 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 2156 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 2157 __IM uint32_t RESERVED6[13]; 2158 __IOM uint32_t EVTEN; /*!< (@ 0x00000340) Enable or disable event routing */ 2159 __IOM uint32_t EVTENSET; /*!< (@ 0x00000344) Enable event routing */ 2160 __IOM uint32_t EVTENCLR; /*!< (@ 0x00000348) Disable event routing */ 2161 __IM uint32_t RESERVED7[110]; 2162 __IM uint32_t COUNTER; /*!< (@ 0x00000504) Current counter value */ 2163 __IOM uint32_t PRESCALER; /*!< (@ 0x00000508) 12-bit prescaler for counter frequency (32768/(PRESCALER+1)). 2164 Must be written when RTC is stopped. */ 2165 __IM uint32_t RESERVED8[13]; 2166 __IOM uint32_t CC[4]; /*!< (@ 0x00000540) Description collection: Compare register n */ 2167 } NRF_RTC_Type; /*!< Size = 1360 (0x550) */ 2168 2169 2170 2171 /* =========================================================================================================================== */ 2172 /* ================ DPPIC_NS ================ */ 2173 /* =========================================================================================================================== */ 2174 2175 2176 /** 2177 * @brief Distributed programmable peripheral interconnect controller 0 (DPPIC_NS) 2178 */ 2179 2180 typedef struct { /*!< (@ 0x40017000) DPPIC_NS Structure */ 2181 __OM DPPIC_TASKS_CHG_Type TASKS_CHG[6]; /*!< (@ 0x00000000) Channel group tasks */ 2182 __IM uint32_t RESERVED[20]; 2183 __IOM DPPIC_SUBSCRIBE_CHG_Type SUBSCRIBE_CHG[6];/*!< (@ 0x00000080) Subscribe configuration for tasks */ 2184 __IM uint32_t RESERVED1[276]; 2185 __IOM uint32_t CHEN; /*!< (@ 0x00000500) Channel enable register */ 2186 __IOM uint32_t CHENSET; /*!< (@ 0x00000504) Channel enable set register */ 2187 __IOM uint32_t CHENCLR; /*!< (@ 0x00000508) Channel enable clear register */ 2188 __IM uint32_t RESERVED2[189]; 2189 __IOM uint32_t CHG[6]; /*!< (@ 0x00000800) Description collection: Channel group n Note: 2190 Writes to this register are ignored if either 2191 SUBSCRIBE_CHG[n].EN or SUBSCRIBE_CHG[n].DIS 2192 is enabled */ 2193 } NRF_DPPIC_Type; /*!< Size = 2072 (0x818) */ 2194 2195 2196 2197 /* =========================================================================================================================== */ 2198 /* ================ WDT_NS ================ */ 2199 /* =========================================================================================================================== */ 2200 2201 2202 /** 2203 * @brief Watchdog Timer 0 (WDT_NS) 2204 */ 2205 2206 typedef struct { /*!< (@ 0x40018000) WDT_NS Structure */ 2207 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start the watchdog */ 2208 __IM uint32_t RESERVED[31]; 2209 __IOM uint32_t SUBSCRIBE_START; /*!< (@ 0x00000080) Subscribe configuration for task START */ 2210 __IM uint32_t RESERVED1[31]; 2211 __IOM uint32_t EVENTS_TIMEOUT; /*!< (@ 0x00000100) Watchdog timeout */ 2212 __IM uint32_t RESERVED2[31]; 2213 __IOM uint32_t PUBLISH_TIMEOUT; /*!< (@ 0x00000180) Publish configuration for event TIMEOUT */ 2214 __IM uint32_t RESERVED3[96]; 2215 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 2216 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 2217 __IM uint32_t RESERVED4[61]; 2218 __IM uint32_t RUNSTATUS; /*!< (@ 0x00000400) Run status */ 2219 __IM uint32_t REQSTATUS; /*!< (@ 0x00000404) Request status */ 2220 __IM uint32_t RESERVED5[63]; 2221 __IOM uint32_t CRV; /*!< (@ 0x00000504) Counter reload value */ 2222 __IOM uint32_t RREN; /*!< (@ 0x00000508) Enable register for reload request registers */ 2223 __IOM uint32_t CONFIG; /*!< (@ 0x0000050C) Configuration register */ 2224 __IM uint32_t RESERVED6[60]; 2225 __OM uint32_t RR[8]; /*!< (@ 0x00000600) Description collection: Reload request n */ 2226 } NRF_WDT_Type; /*!< Size = 1568 (0x620) */ 2227 2228 2229 2230 /* =========================================================================================================================== */ 2231 /* ================ EGU0_NS ================ */ 2232 /* =========================================================================================================================== */ 2233 2234 2235 /** 2236 * @brief Event generator unit 0 (EGU0_NS) 2237 */ 2238 2239 typedef struct { /*!< (@ 0x4001B000) EGU0_NS Structure */ 2240 __OM uint32_t TASKS_TRIGGER[16]; /*!< (@ 0x00000000) Description collection: Trigger n for triggering 2241 the corresponding TRIGGERED[n] event */ 2242 __IM uint32_t RESERVED[16]; 2243 __IOM uint32_t SUBSCRIBE_TRIGGER[16]; /*!< (@ 0x00000080) Description collection: Subscribe configuration 2244 for task TRIGGER[n] */ 2245 __IM uint32_t RESERVED1[16]; 2246 __IOM uint32_t EVENTS_TRIGGERED[16]; /*!< (@ 0x00000100) Description collection: Event number n generated 2247 by triggering the corresponding TRIGGER[n] 2248 task */ 2249 __IM uint32_t RESERVED2[16]; 2250 __IOM uint32_t PUBLISH_TRIGGERED[16]; /*!< (@ 0x00000180) Description collection: Publish configuration 2251 for event TRIGGERED[n] */ 2252 __IM uint32_t RESERVED3[80]; 2253 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 2254 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 2255 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 2256 } NRF_EGU_Type; /*!< Size = 780 (0x30c) */ 2257 2258 2259 2260 /* =========================================================================================================================== */ 2261 /* ================ PWM0_NS ================ */ 2262 /* =========================================================================================================================== */ 2263 2264 2265 /** 2266 * @brief Pulse width modulation unit 0 (PWM0_NS) 2267 */ 2268 2269 typedef struct { /*!< (@ 0x40021000) PWM0_NS Structure */ 2270 __IM uint32_t RESERVED; 2271 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops PWM pulse generation on all channels at 2272 the end of current PWM period, and stops 2273 sequence playback */ 2274 __OM uint32_t TASKS_SEQSTART[2]; /*!< (@ 0x00000008) Description collection: Loads the first PWM value 2275 on all enabled channels from sequence n, 2276 and starts playing that sequence at the 2277 rate defined in SEQ[n]REFRESH and/or DECODER.MODE. 2278 Causes PWM generation to start if not running. */ 2279 __OM uint32_t TASKS_NEXTSTEP; /*!< (@ 0x00000010) Steps by one value in the current sequence on 2280 all enabled channels if DECODER.MODE=NextStep. 2281 Does not cause PWM generation to start if 2282 not running. */ 2283 __IM uint32_t RESERVED1[28]; 2284 __IOM uint32_t SUBSCRIBE_STOP; /*!< (@ 0x00000084) Subscribe configuration for task STOP */ 2285 __IOM uint32_t SUBSCRIBE_SEQSTART[2]; /*!< (@ 0x00000088) Description collection: Subscribe configuration 2286 for task SEQSTART[n] */ 2287 __IOM uint32_t SUBSCRIBE_NEXTSTEP; /*!< (@ 0x00000090) Subscribe configuration for task NEXTSTEP */ 2288 __IM uint32_t RESERVED2[28]; 2289 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) Response to STOP task, emitted when PWM pulses 2290 are no longer generated */ 2291 __IOM uint32_t EVENTS_SEQSTARTED[2]; /*!< (@ 0x00000108) Description collection: First PWM period started 2292 on sequence n */ 2293 __IOM uint32_t EVENTS_SEQEND[2]; /*!< (@ 0x00000110) Description collection: Emitted at end of every 2294 sequence n, when last value from RAM has 2295 been applied to wave counter */ 2296 __IOM uint32_t EVENTS_PWMPERIODEND; /*!< (@ 0x00000118) Emitted at the end of each PWM period */ 2297 __IOM uint32_t EVENTS_LOOPSDONE; /*!< (@ 0x0000011C) Concatenated sequences have been played the amount 2298 of times defined in LOOP.CNT */ 2299 __IM uint32_t RESERVED3[25]; 2300 __IOM uint32_t PUBLISH_STOPPED; /*!< (@ 0x00000184) Publish configuration for event STOPPED */ 2301 __IOM uint32_t PUBLISH_SEQSTARTED[2]; /*!< (@ 0x00000188) Description collection: Publish configuration 2302 for event SEQSTARTED[n] */ 2303 __IOM uint32_t PUBLISH_SEQEND[2]; /*!< (@ 0x00000190) Description collection: Publish configuration 2304 for event SEQEND[n] */ 2305 __IOM uint32_t PUBLISH_PWMPERIODEND; /*!< (@ 0x00000198) Publish configuration for event PWMPERIODEND */ 2306 __IOM uint32_t PUBLISH_LOOPSDONE; /*!< (@ 0x0000019C) Publish configuration for event LOOPSDONE */ 2307 __IM uint32_t RESERVED4[24]; 2308 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 2309 __IM uint32_t RESERVED5[63]; 2310 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 2311 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 2312 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 2313 __IM uint32_t RESERVED6[125]; 2314 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) PWM module enable register */ 2315 __IOM uint32_t MODE; /*!< (@ 0x00000504) Selects operating mode of the wave counter */ 2316 __IOM uint32_t COUNTERTOP; /*!< (@ 0x00000508) Value up to which the pulse generator counter 2317 counts */ 2318 __IOM uint32_t PRESCALER; /*!< (@ 0x0000050C) Configuration for PWM_CLK */ 2319 __IOM uint32_t DECODER; /*!< (@ 0x00000510) Configuration of the decoder */ 2320 __IOM uint32_t LOOP; /*!< (@ 0x00000514) Number of playbacks of a loop */ 2321 __IM uint32_t RESERVED7[2]; 2322 __IOM PWM_SEQ_Type SEQ[2]; /*!< (@ 0x00000520) Unspecified */ 2323 __IOM PWM_PSEL_Type PSEL; /*!< (@ 0x00000560) Unspecified */ 2324 } NRF_PWM_Type; /*!< Size = 1392 (0x570) */ 2325 2326 2327 2328 /* =========================================================================================================================== */ 2329 /* ================ PDM_NS ================ */ 2330 /* =========================================================================================================================== */ 2331 2332 2333 /** 2334 * @brief Pulse Density Modulation (Digital Microphone) Interface 0 (PDM_NS) 2335 */ 2336 2337 typedef struct { /*!< (@ 0x40026000) PDM_NS Structure */ 2338 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Starts continuous PDM transfer */ 2339 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops PDM transfer */ 2340 __IM uint32_t RESERVED[30]; 2341 __IOM uint32_t SUBSCRIBE_START; /*!< (@ 0x00000080) Subscribe configuration for task START */ 2342 __IOM uint32_t SUBSCRIBE_STOP; /*!< (@ 0x00000084) Subscribe configuration for task STOP */ 2343 __IM uint32_t RESERVED1[30]; 2344 __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000100) PDM transfer has started */ 2345 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) PDM transfer has finished */ 2346 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000108) The PDM has written the last sample specified 2347 by SAMPLE.MAXCNT (or the last sample after 2348 a STOP task has been received) to Data RAM */ 2349 __IM uint32_t RESERVED2[29]; 2350 __IOM uint32_t PUBLISH_STARTED; /*!< (@ 0x00000180) Publish configuration for event STARTED */ 2351 __IOM uint32_t PUBLISH_STOPPED; /*!< (@ 0x00000184) Publish configuration for event STOPPED */ 2352 __IOM uint32_t PUBLISH_END; /*!< (@ 0x00000188) Publish configuration for event END */ 2353 __IM uint32_t RESERVED3[93]; 2354 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 2355 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 2356 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 2357 __IM uint32_t RESERVED4[125]; 2358 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) PDM module enable register */ 2359 __IOM uint32_t PDMCLKCTRL; /*!< (@ 0x00000504) PDM clock generator control */ 2360 __IOM uint32_t MODE; /*!< (@ 0x00000508) Defines the routing of the connected PDM microphones' 2361 signals */ 2362 __IM uint32_t RESERVED5[3]; 2363 __IOM uint32_t GAINL; /*!< (@ 0x00000518) Left output gain adjustment */ 2364 __IOM uint32_t GAINR; /*!< (@ 0x0000051C) Right output gain adjustment */ 2365 __IOM uint32_t RATIO; /*!< (@ 0x00000520) Selects the ratio between PDM_CLK and output 2366 sample rate. Change PDMCLKCTRL accordingly. */ 2367 __IM uint32_t RESERVED6[7]; 2368 __IOM PDM_PSEL_Type PSEL; /*!< (@ 0x00000540) Unspecified */ 2369 __IM uint32_t RESERVED7[6]; 2370 __IOM PDM_SAMPLE_Type SAMPLE; /*!< (@ 0x00000560) Unspecified */ 2371 } NRF_PDM_Type; /*!< Size = 1384 (0x568) */ 2372 2373 2374 2375 /* =========================================================================================================================== */ 2376 /* ================ I2S_NS ================ */ 2377 /* =========================================================================================================================== */ 2378 2379 2380 /** 2381 * @brief Inter-IC Sound 0 (I2S_NS) 2382 */ 2383 2384 typedef struct { /*!< (@ 0x40028000) I2S_NS Structure */ 2385 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Starts continuous I2S transfer. Also starts MCK 2386 generator when this is enabled. */ 2387 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops I2S transfer. Also stops MCK generator. 2388 Triggering this task will cause the STOPPED 2389 event to be generated. */ 2390 __IM uint32_t RESERVED[30]; 2391 __IOM uint32_t SUBSCRIBE_START; /*!< (@ 0x00000080) Subscribe configuration for task START */ 2392 __IOM uint32_t SUBSCRIBE_STOP; /*!< (@ 0x00000084) Subscribe configuration for task STOP */ 2393 __IM uint32_t RESERVED1[31]; 2394 __IOM uint32_t EVENTS_RXPTRUPD; /*!< (@ 0x00000104) The RXD.PTR register has been copied to internal 2395 double-buffers. When the I2S module is started 2396 and RX is enabled, this event will be generated 2397 for every RXTXD.MAXCNT words that are received 2398 on the SDIN pin. */ 2399 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000108) I2S transfer stopped. */ 2400 __IM uint32_t RESERVED2[2]; 2401 __IOM uint32_t EVENTS_TXPTRUPD; /*!< (@ 0x00000114) The TDX.PTR register has been copied to internal 2402 double-buffers. When the I2S module is started 2403 and TX is enabled, this event will be generated 2404 for every RXTXD.MAXCNT words that are sent 2405 on the SDOUT pin. */ 2406 __IM uint32_t RESERVED3[27]; 2407 __IOM uint32_t PUBLISH_RXPTRUPD; /*!< (@ 0x00000184) Publish configuration for event RXPTRUPD */ 2408 __IOM uint32_t PUBLISH_STOPPED; /*!< (@ 0x00000188) Publish configuration for event STOPPED */ 2409 __IM uint32_t RESERVED4[2]; 2410 __IOM uint32_t PUBLISH_TXPTRUPD; /*!< (@ 0x00000194) Publish configuration for event TXPTRUPD */ 2411 __IM uint32_t RESERVED5[90]; 2412 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 2413 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 2414 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 2415 __IM uint32_t RESERVED6[125]; 2416 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable I2S module. */ 2417 __IOM I2S_CONFIG_Type CONFIG; /*!< (@ 0x00000504) Unspecified */ 2418 __IM uint32_t RESERVED7[3]; 2419 __IOM I2S_RXD_Type RXD; /*!< (@ 0x00000538) Unspecified */ 2420 __IM uint32_t RESERVED8; 2421 __IOM I2S_TXD_Type TXD; /*!< (@ 0x00000540) Unspecified */ 2422 __IM uint32_t RESERVED9[3]; 2423 __IOM I2S_RXTXD_Type RXTXD; /*!< (@ 0x00000550) Unspecified */ 2424 __IM uint32_t RESERVED10[3]; 2425 __IOM I2S_PSEL_Type PSEL; /*!< (@ 0x00000560) Unspecified */ 2426 } NRF_I2S_Type; /*!< Size = 1396 (0x574) */ 2427 2428 2429 2430 /* =========================================================================================================================== */ 2431 /* ================ IPC_NS ================ */ 2432 /* =========================================================================================================================== */ 2433 2434 2435 /** 2436 * @brief Interprocessor communication 0 (IPC_NS) 2437 */ 2438 2439 typedef struct { /*!< (@ 0x4002A000) IPC_NS Structure */ 2440 __OM uint32_t TASKS_SEND[8]; /*!< (@ 0x00000000) Description collection: Trigger events on IPC 2441 channel enabled in SEND_CNF[n] */ 2442 __IM uint32_t RESERVED[24]; 2443 __IOM uint32_t SUBSCRIBE_SEND[8]; /*!< (@ 0x00000080) Description collection: Subscribe configuration 2444 for task SEND[n] */ 2445 __IM uint32_t RESERVED1[24]; 2446 __IOM uint32_t EVENTS_RECEIVE[8]; /*!< (@ 0x00000100) Description collection: Event received on one 2447 or more of the enabled IPC channels in RECEIVE_CNF[n] */ 2448 __IM uint32_t RESERVED2[24]; 2449 __IOM uint32_t PUBLISH_RECEIVE[8]; /*!< (@ 0x00000180) Description collection: Publish configuration 2450 for event RECEIVE[n] */ 2451 __IM uint32_t RESERVED3[88]; 2452 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 2453 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 2454 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 2455 __IM uint32_t INTPEND; /*!< (@ 0x0000030C) Pending interrupts */ 2456 __IM uint32_t RESERVED4[128]; 2457 __IOM uint32_t SEND_CNF[8]; /*!< (@ 0x00000510) Description collection: Send event configuration 2458 for TASKS_SEND[n] */ 2459 __IM uint32_t RESERVED5[24]; 2460 __IOM uint32_t RECEIVE_CNF[8]; /*!< (@ 0x00000590) Description collection: Receive event configuration 2461 for EVENTS_RECEIVE[n] */ 2462 __IM uint32_t RESERVED6[24]; 2463 __IOM uint32_t GPMEM[4]; /*!< (@ 0x00000610) Description collection: General purpose memory */ 2464 } NRF_IPC_Type; /*!< Size = 1568 (0x620) */ 2465 2466 2467 2468 /* =========================================================================================================================== */ 2469 /* ================ FPU_NS ================ */ 2470 /* =========================================================================================================================== */ 2471 2472 2473 /** 2474 * @brief FPU (FPU_NS) 2475 */ 2476 2477 typedef struct { /*!< (@ 0x4002C000) FPU_NS Structure */ 2478 __IM uint32_t UNUSED; /*!< (@ 0x00000000) Unused. */ 2479 } NRF_FPU_Type; /*!< Size = 4 (0x4) */ 2480 2481 2482 2483 /* =========================================================================================================================== */ 2484 /* ================ APPROTECT_NS ================ */ 2485 /* =========================================================================================================================== */ 2486 2487 2488 /** 2489 * @brief Access Port Protection 0 (APPROTECT_NS) 2490 */ 2491 2492 typedef struct { /*!< (@ 0x40039000) APPROTECT_NS Structure */ 2493 __IM uint32_t RESERVED[896]; 2494 __IOM APPROTECT_SECUREAPPROTECT_Type SECUREAPPROTECT;/*!< (@ 0x00000E00) Unspecified */ 2495 __IM uint32_t RESERVED1[3]; 2496 __IOM APPROTECT_APPROTECT_Type APPROTECT; /*!< (@ 0x00000E10) Unspecified */ 2497 } NRF_APPROTECT_Type; /*!< Size = 3604 (0xe14) */ 2498 2499 2500 2501 /* =========================================================================================================================== */ 2502 /* ================ KMU_NS ================ */ 2503 /* =========================================================================================================================== */ 2504 2505 2506 /** 2507 * @brief Key management unit 0 (KMU_NS) 2508 */ 2509 2510 typedef struct { /*!< (@ 0x40039000) KMU_NS Structure */ 2511 __OM uint32_t TASKS_PUSH_KEYSLOT; /*!< (@ 0x00000000) Push a key slot over secure APB */ 2512 __IM uint32_t RESERVED[63]; 2513 __IOM uint32_t EVENTS_KEYSLOT_PUSHED; /*!< (@ 0x00000100) Key slot successfully pushed over secure APB */ 2514 __IOM uint32_t EVENTS_KEYSLOT_REVOKED; /*!< (@ 0x00000104) Key slot has been revoked and cannot be tasked 2515 for selection */ 2516 __IOM uint32_t EVENTS_KEYSLOT_ERROR; /*!< (@ 0x00000108) No key slot selected, no destination address 2517 defined, or error during push operation */ 2518 __IM uint32_t RESERVED1[125]; 2519 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 2520 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 2521 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 2522 __IM uint32_t INTPEND; /*!< (@ 0x0000030C) Pending interrupts */ 2523 __IM uint32_t RESERVED2[63]; 2524 __IM uint32_t STATUS; /*!< (@ 0x0000040C) Status bits for KMU operation */ 2525 __IM uint32_t RESERVED3[60]; 2526 __IOM uint32_t SELECTKEYSLOT; /*!< (@ 0x00000500) Select key slot to be read over AHB or pushed 2527 over secure APB when TASKS_PUSH_KEYSLOT 2528 is started */ 2529 } NRF_KMU_Type; /*!< Size = 1284 (0x504) */ 2530 2531 2532 2533 /* =========================================================================================================================== */ 2534 /* ================ NVMC_NS ================ */ 2535 /* =========================================================================================================================== */ 2536 2537 2538 /** 2539 * @brief Non-volatile memory controller 0 (NVMC_NS) 2540 */ 2541 2542 typedef struct { /*!< (@ 0x40039000) NVMC_NS Structure */ 2543 __IM uint32_t RESERVED[256]; 2544 __IM uint32_t READY; /*!< (@ 0x00000400) Ready flag */ 2545 __IM uint32_t RESERVED1; 2546 __IM uint32_t READYNEXT; /*!< (@ 0x00000408) Ready flag */ 2547 __IM uint32_t RESERVED2[62]; 2548 __IOM uint32_t CONFIG; /*!< (@ 0x00000504) Configuration register */ 2549 __IM uint32_t RESERVED3; 2550 __OM uint32_t ERASEALL; /*!< (@ 0x0000050C) Register for erasing all non-volatile user memory */ 2551 __IM uint32_t RESERVED4[3]; 2552 __IOM uint32_t ERASEPAGEPARTIALCFG; /*!< (@ 0x0000051C) Register for partial erase configuration */ 2553 __IM uint32_t RESERVED5[8]; 2554 __IOM uint32_t ICACHECNF; /*!< (@ 0x00000540) I-code cache configuration register */ 2555 __IM uint32_t RESERVED6; 2556 __IOM uint32_t IHIT; /*!< (@ 0x00000548) I-code cache hit counter */ 2557 __IOM uint32_t IMISS; /*!< (@ 0x0000054C) I-code cache miss counter */ 2558 __IM uint32_t RESERVED7[13]; 2559 __IOM uint32_t CONFIGNS; /*!< (@ 0x00000584) Unspecified */ 2560 __OM uint32_t WRITEUICRNS; /*!< (@ 0x00000588) Non-secure APPROTECT enable register */ 2561 } NRF_NVMC_Type; /*!< Size = 1420 (0x58c) */ 2562 2563 2564 2565 /* =========================================================================================================================== */ 2566 /* ================ VMC_NS ================ */ 2567 /* =========================================================================================================================== */ 2568 2569 2570 /** 2571 * @brief Volatile Memory controller 0 (VMC_NS) 2572 */ 2573 2574 typedef struct { /*!< (@ 0x4003A000) VMC_NS Structure */ 2575 __IM uint32_t RESERVED[384]; 2576 __IOM VMC_RAM_Type RAM[8]; /*!< (@ 0x00000600) Unspecified */ 2577 } NRF_VMC_Type; /*!< Size = 1664 (0x680) */ 2578 2579 2580 2581 /* =========================================================================================================================== */ 2582 /* ================ CRYPTOCELL_S ================ */ 2583 /* =========================================================================================================================== */ 2584 2585 2586 /** 2587 * @brief CRYPTOCELL register interface (CRYPTOCELL_S) 2588 */ 2589 2590 typedef struct { /*!< (@ 0x50840000) CRYPTOCELL_S Structure */ 2591 __IM uint32_t RESERVED[320]; 2592 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable CRYPTOCELL subsystem. */ 2593 } NRF_CRYPTOCELL_Type; /*!< Size = 1284 (0x504) */ 2594 2595 2596 2597 /* =========================================================================================================================== */ 2598 /* ================ CC_AES_S ================ */ 2599 /* =========================================================================================================================== */ 2600 2601 2602 /** 2603 * @brief CRYPTOCELL AES engine (CC_AES_S) 2604 */ 2605 2606 typedef struct { /*!< (@ 0x50841000) CC_AES_S Structure */ 2607 __IM uint32_t RESERVED[256]; 2608 __OM uint32_t AES_KEY_0[8]; /*!< (@ 0x00000400) Description collection: AES key value to use. 2609 The initial AES_KEY_0[0] register holds 2610 the least significant bits [31:0] of the 2611 key value. */ 2612 __IM uint32_t RESERVED1[8]; 2613 __IOM uint32_t AES_IV_0[4]; /*!< (@ 0x00000440) Description collection: AES Initialization Vector 2614 (IV) to use. The initial AES_IV_0[0] register 2615 holds the least significant bits [31:0] 2616 of the IV. */ 2617 __IM uint32_t RESERVED2[4]; 2618 __IOM uint32_t AES_CTR[4]; /*!< (@ 0x00000460) Description collection: AES counter (CTR) to 2619 use. The initial AES_CTR[0] register holds 2620 the least significant bits [31:0] of the 2621 CTR. */ 2622 __IM uint32_t AES_BUSY; /*!< (@ 0x00000470) Status register for AES engine activity. */ 2623 __IM uint32_t RESERVED3; 2624 __OM uint32_t AES_SK; /*!< (@ 0x00000478) Writing to this address trigger sampling of the 2625 HW key to the AES_KEY_0 register */ 2626 __OM uint32_t AES_CMAC_INIT; /*!< (@ 0x0000047C) Writing to this address triggers the AES engine 2627 to generate K1 and K2 for AES-CMAC operations. */ 2628 __IM uint32_t RESERVED4[15]; 2629 __IOM uint32_t AES_REMAINING_BYTES; /*!< (@ 0x000004BC) This register should be set with the amount of 2630 remaining bytes until the end of the current 2631 AES operation. */ 2632 __IOM uint32_t AES_CONTROL; /*!< (@ 0x000004C0) Control the AES engine behavior. */ 2633 __IM uint32_t RESERVED5; 2634 __IM uint32_t AES_HW_FLAGS; /*!< (@ 0x000004C8) Hardware configuration of the AES engine. Reset 2635 value holds the supported features. */ 2636 __IM uint32_t RESERVED6[3]; 2637 __IOM uint32_t AES_CTR_NO_INCREMENT; /*!< (@ 0x000004D8) This register enables the AES CTR no increment 2638 mode in which the counter mode is not incremented 2639 between two blocks */ 2640 __IM uint32_t RESERVED7[6]; 2641 __OM uint32_t AES_SW_RESET; /*!< (@ 0x000004F4) Reset the AES engine. */ 2642 __IM uint32_t RESERVED8[11]; 2643 __OM uint32_t AES_CMAC_SIZE0_KICK; /*!< (@ 0x00000524) Writing to this address triggers the AES engine 2644 to perform a CMAC operation with size 0. 2645 The CMAC result can be read from the AES_IV_0 2646 register. */ 2647 } NRF_CC_AES_Type; /*!< Size = 1320 (0x528) */ 2648 2649 2650 2651 /* =========================================================================================================================== */ 2652 /* ================ CC_AHB_S ================ */ 2653 /* =========================================================================================================================== */ 2654 2655 2656 /** 2657 * @brief CRYPTOCELL AHB interface (CC_AHB_S) 2658 */ 2659 2660 typedef struct { /*!< (@ 0x50841000) CC_AHB_S Structure */ 2661 __IM uint32_t RESERVED[704]; 2662 __IOM uint32_t AHBM_SINGLES; /*!< (@ 0x00000B00) This register forces the AHB transactions from 2663 CRYPTOCELL master to be always singles. */ 2664 __IOM uint32_t AHBM_HPROT; /*!< (@ 0x00000B04) This register holds the AHB HPROT value */ 2665 __IOM uint32_t AHBM_HMASTLOCK; /*!< (@ 0x00000B08) This register holds AHB HMASTLOCK value */ 2666 __IOM uint32_t AHBM_HNONSEC; /*!< (@ 0x00000B0C) This register holds AHB HNONSEC value */ 2667 } NRF_CC_AHB_Type; /*!< Size = 2832 (0xb10) */ 2668 2669 2670 2671 /* =========================================================================================================================== */ 2672 /* ================ CC_CHACHA_S ================ */ 2673 /* =========================================================================================================================== */ 2674 2675 2676 /** 2677 * @brief CRYPTOCELL CHACHA engine (CC_CHACHA_S) 2678 */ 2679 2680 typedef struct { /*!< (@ 0x50841000) CC_CHACHA_S Structure */ 2681 __IM uint32_t RESERVED[224]; 2682 __IOM uint32_t CHACHA_CONTROL; /*!< (@ 0x00000380) Control the CHACHA engine behavior. */ 2683 __IM uint32_t CHACHA_VERSION; /*!< (@ 0x00000384) CHACHA engine HW version */ 2684 __OM uint32_t CHACHA_KEY[8]; /*!< (@ 0x00000388) Description collection: CHACHA key value to use. 2685 The initial CHACHA_KEY[0] register holds 2686 the least significant bits [31:0] of the 2687 key value. */ 2688 __IOM uint32_t CHACHA_IV[2]; /*!< (@ 0x000003A8) Description collection: CHACHA Initialization 2689 Vector (IV) to use. The IV is also known 2690 as the nonce. */ 2691 __IM uint32_t CHACHA_BUSY; /*!< (@ 0x000003B0) Status register for CHACHA engine activity. */ 2692 __IM uint32_t CHACHA_HW_FLAGS; /*!< (@ 0x000003B4) Hardware configuration of the CHACHA engine. 2693 Reset value holds the supported features. */ 2694 __IOM uint32_t CHACHA_BLOCK_CNT_LSB; /*!< (@ 0x000003B8) Store the LSB value of the block counter, in 2695 order to support suspend/resume of operation */ 2696 __IOM uint32_t CHACHA_BLOCK_CNT_MSB; /*!< (@ 0x000003BC) Store the MSB value of the block counter, in 2697 order to support suspend/resume of operation */ 2698 __OM uint32_t CHACHA_SW_RESET; /*!< (@ 0x000003C0) Reset the CHACHA engine. */ 2699 __IM uint32_t CHACHA_POLY1305_KEY[8]; /*!< (@ 0x000003C4) Description collection: The auto-generated key 2700 to use in Poly1305 MAC calculation. The 2701 initial CHACHA_POLY1305_KEY[0] register 2702 holds the least significant bits [31:0] 2703 of the key value. */ 2704 __IOM uint32_t CHACHA_ENDIANNESS; /*!< (@ 0x000003E4) CHACHA engine data order configuration. */ 2705 __IM uint32_t CHACHA_DEBUG; /*!< (@ 0x000003E8) Debug register for the CHACHA engine */ 2706 } NRF_CC_CHACHA_Type; /*!< Size = 1004 (0x3ec) */ 2707 2708 2709 2710 /* =========================================================================================================================== */ 2711 /* ================ CC_CTL_S ================ */ 2712 /* =========================================================================================================================== */ 2713 2714 2715 /** 2716 * @brief CRYPTOCELL CTL interface (CC_CTL_S) 2717 */ 2718 2719 typedef struct { /*!< (@ 0x50841000) CC_CTL_S Structure */ 2720 __IM uint32_t RESERVED[576]; 2721 __OM uint32_t CRYPTO_CTL; /*!< (@ 0x00000900) Defines the cryptographic flow. */ 2722 __IM uint32_t RESERVED1[3]; 2723 __IM uint32_t CRYPTO_BUSY; /*!< (@ 0x00000910) Status register for cryptographic cores engine 2724 activity. */ 2725 __IM uint32_t RESERVED2[2]; 2726 __IM uint32_t HASH_BUSY; /*!< (@ 0x0000091C) Status register for HASH engine activity. */ 2727 __IM uint32_t RESERVED3[4]; 2728 __IOM uint32_t CONTEXT_ID; /*!< (@ 0x00000930) A general-purpose read/write register. */ 2729 } NRF_CC_CTL_Type; /*!< Size = 2356 (0x934) */ 2730 2731 2732 2733 /* =========================================================================================================================== */ 2734 /* ================ CC_DIN_S ================ */ 2735 /* =========================================================================================================================== */ 2736 2737 2738 /** 2739 * @brief CRYPTOCELL Data IN interface (CC_DIN_S) 2740 */ 2741 2742 typedef struct { /*!< (@ 0x50841000) CC_DIN_S Structure */ 2743 __IM uint32_t RESERVED[768]; 2744 __OM uint32_t DIN_BUFFER; /*!< (@ 0x00000C00) Used by CPU to write data directly to the DIN 2745 buffer, which is then sent to the cryptographic 2746 engines for processing. */ 2747 __IM uint32_t RESERVED1[7]; 2748 __IM uint32_t DIN_DMA_MEM_BUSY; /*!< (@ 0x00000C20) Status register for DIN DMA engine activity when 2749 accessing memory. */ 2750 __IM uint32_t RESERVED2; 2751 __OM uint32_t SRC_MEM_ADDR; /*!< (@ 0x00000C28) Data source address in memory. */ 2752 __OM uint32_t SRC_MEM_SIZE; /*!< (@ 0x00000C2C) The number of bytes to be read from memory. Writing 2753 to this register triggers the DMA operation. */ 2754 __IOM uint32_t SRC_SRAM_ADDR; /*!< (@ 0x00000C30) Data source address in RNG SRAM. */ 2755 __OM uint32_t SRC_SRAM_SIZE; /*!< (@ 0x00000C34) The number of bytes to be read from RNG SRAM. 2756 Writing to this register triggers the DMA 2757 operation. */ 2758 __IM uint32_t DIN_DMA_SRAM_BUSY; /*!< (@ 0x00000C38) Status register for DIN DMA engine activity when 2759 accessing RNG SRAM. */ 2760 __IOM uint32_t DIN_DMA_SRAM_ENDIANNESS; /*!< (@ 0x00000C3C) Configure the endianness of DIN DMA transactions 2761 towards RNG SRAM. */ 2762 __IM uint32_t RESERVED3; 2763 __OM uint32_t DIN_SW_RESET; /*!< (@ 0x00000C44) Reset the DIN DMA engine. */ 2764 __OM uint32_t DIN_CPU_DATA; /*!< (@ 0x00000C48) Specifies the number of bytes the CPU will write 2765 to the DIN_BUFFER, ensuring the cryptographic 2766 engine processes the correct amount of data. */ 2767 __OM uint32_t DIN_WRITE_ALIGN; /*!< (@ 0x00000C4C) Indicates that the next CPU write to the DIN_BUFFER 2768 is the last in the sequence. This is needed 2769 only when the data size is NOT modulo 4 2770 (e.g. HASH padding). */ 2771 __IM uint32_t DIN_FIFO_EMPTY; /*!< (@ 0x00000C50) Register indicating if DIN FIFO is empty and 2772 if more data can be accepted. */ 2773 __IM uint32_t RESERVED4; 2774 __OM uint32_t DIN_FIFO_RESET; /*!< (@ 0x00000C58) Reset the DIN FIFO, effectively clearing the 2775 FIFO for new data. */ 2776 } NRF_CC_DIN_Type; /*!< Size = 3164 (0xc5c) */ 2777 2778 2779 2780 /* =========================================================================================================================== */ 2781 /* ================ CC_DOUT_S ================ */ 2782 /* =========================================================================================================================== */ 2783 2784 2785 /** 2786 * @brief CRYPTOCELL Data OUT interface (CC_DOUT_S) 2787 */ 2788 2789 typedef struct { /*!< (@ 0x50841000) CC_DOUT_S Structure */ 2790 __IM uint32_t RESERVED[768]; 2791 __IM uint32_t DOUT_BUFFER; /*!< (@ 0x00000C00) Cryptographic results directly accessible by 2792 the CPU. */ 2793 __IM uint32_t RESERVED1[71]; 2794 __IM uint32_t DOUT_DMA_MEM_BUSY; /*!< (@ 0x00000D20) Status register for DOUT DMA engine activity 2795 when accessing memory. */ 2796 __IM uint32_t RESERVED2; 2797 __OM uint32_t DST_MEM_ADDR; /*!< (@ 0x00000D28) Data destination address in memory. */ 2798 __OM uint32_t DST_MEM_SIZE; /*!< (@ 0x00000D2C) The number of bytes to be written to memory. */ 2799 __IOM uint32_t DST_SRAM_ADDR; /*!< (@ 0x00000D30) Data destination address in RNG SRAM. */ 2800 __OM uint32_t DST_SRAM_SIZE; /*!< (@ 0x00000D34) The number of bytes to be written to RNG SRAM. */ 2801 __IM uint32_t DOUT_DMA_SRAM_BUSY; /*!< (@ 0x00000D38) Status register for DOUT DMA engine activity 2802 when accessing RNG SRAM. */ 2803 __IOM uint32_t DOUT_DMA_SRAM_ENDIANNESS; /*!< (@ 0x00000D3C) Configure the endianness of DOUT DMA transactions 2804 towards RNG SRAM. */ 2805 __IM uint32_t RESERVED3; 2806 __OM uint32_t DOUT_READ_ALIGN; /*!< (@ 0x00000D44) Indication that the next CPU read from the DOUT_BUFFER 2807 is the last in the sequence. This is needed 2808 only when the data size is NOT modulo 4 2809 (e.g. HASH padding). */ 2810 __IM uint32_t RESERVED4[2]; 2811 __IM uint32_t DOUT_FIFO_EMPTY; /*!< (@ 0x00000D50) Register indicating if DOUT FIFO is empty or 2812 if more data will come. */ 2813 __IM uint32_t RESERVED5; 2814 __OM uint32_t DOUT_SW_RESET; /*!< (@ 0x00000D58) Reset the DOUT DMA engine. */ 2815 } NRF_CC_DOUT_Type; /*!< Size = 3420 (0xd5c) */ 2816 2817 2818 2819 /* =========================================================================================================================== */ 2820 /* ================ CC_HASH_S ================ */ 2821 /* =========================================================================================================================== */ 2822 2823 2824 /** 2825 * @brief CRYPTOCELL HASH engine (CC_HASH_S) 2826 */ 2827 2828 typedef struct { /*!< (@ 0x50841000) CC_HASH_S Structure */ 2829 __IM uint32_t RESERVED[400]; 2830 __IOM uint32_t HASH_H[8]; /*!< (@ 0x00000640) Description collection: HASH_H value registers. 2831 The initial HASH_H[0] register holds the 2832 least significant bits [31:0] of the value. */ 2833 __IM uint32_t RESERVED1[9]; 2834 __OM uint32_t HASH_PAD_AUTO; /*!< (@ 0x00000684) Configure the HASH engine to automatically pad 2835 data at the end of the DMA transfer to complete 2836 the digest operation. */ 2837 __IM uint32_t RESERVED2[3]; 2838 __OM uint32_t HASH_INIT_STATE; /*!< (@ 0x00000694) Configure HASH engine initial state registers. */ 2839 __IM uint32_t RESERVED3[70]; 2840 __IM uint32_t HASH_VERSION; /*!< (@ 0x000007B0) HASH engine HW version */ 2841 __IM uint32_t RESERVED4[3]; 2842 __IOM uint32_t HASH_CONTROL; /*!< (@ 0x000007C0) Control the HASH engine behavior. */ 2843 __IOM uint32_t HASH_PAD; /*!< (@ 0x000007C4) Enable the hardware padding feature of the HASH 2844 engine. */ 2845 __IOM uint32_t HASH_PAD_FORCE; /*!< (@ 0x000007C8) Force the hardware padding operation to trigger 2846 if the input data length is zero bytes. */ 2847 __IOM uint32_t HASH_CUR_LEN_0; /*!< (@ 0x000007CC) Bits [31:0] of the number of bytes that have 2848 been digested so far. */ 2849 __IOM uint32_t HASH_CUR_LEN_1; /*!< (@ 0x000007D0) Bits [63:32] of the number of bytes that have 2850 been digested so far. */ 2851 __IM uint32_t RESERVED5[2]; 2852 __IM uint32_t HASH_HW_FLAGS; /*!< (@ 0x000007DC) Hardware configuration of the HASH engine. Reset 2853 value holds the supported features. */ 2854 __IM uint32_t RESERVED6; 2855 __OM uint32_t HASH_SW_RESET; /*!< (@ 0x000007E4) Reset the HASH engine. */ 2856 __IOM uint32_t HASH_ENDIANNESS; /*!< (@ 0x000007E8) Configure the endianness of HASH data and padding 2857 generation. */ 2858 } NRF_CC_HASH_Type; /*!< Size = 2028 (0x7ec) */ 2859 2860 2861 2862 /* =========================================================================================================================== */ 2863 /* ================ CC_HOST_RGF_S ================ */ 2864 /* =========================================================================================================================== */ 2865 2866 2867 /** 2868 * @brief CRYPTOCELL HOST register interface (CC_HOST_RGF_S) 2869 */ 2870 2871 typedef struct { /*!< (@ 0x50841000) CC_HOST_RGF_S Structure */ 2872 __IM uint32_t RESERVED[640]; 2873 __IM uint32_t IRR; /*!< (@ 0x00000A00) Interrupt request register. Each bit of this 2874 register holds the interrupt status of a 2875 single interrupt source. If corresponding 2876 IMR bit is unmasked, an interrupt is generated. */ 2877 __IOM uint32_t IMR; /*!< (@ 0x00000A04) Interrupt mask register. Each bit of this register 2878 holds the mask of a single interrupt source. */ 2879 __OM uint32_t ICR; /*!< (@ 0x00000A08) Interrupt clear register. Writing a 1 bit into 2880 a field in this register will clear the 2881 corresponding bit in IRR. */ 2882 __IOM uint32_t ENDIANNESS; /*!< (@ 0x00000A0C) This register defines the endianness of the Host-accessible 2883 registers, and can only be written once. */ 2884 __IM uint32_t RESERVED1[5]; 2885 __IM uint32_t HOST_SIGNATURE; /*!< (@ 0x00000A24) This register holds the CRYPTOCELL subsystem 2886 signature. See reset value. */ 2887 __IM uint32_t HOST_BOOT; /*!< (@ 0x00000A28) Hardware configuration of the CRYPTOCELL subsystem. 2888 Reset value holds the supported features. */ 2889 __IM uint32_t RESERVED2[3]; 2890 __IOM uint32_t HOST_CRYPTOKEY_SEL; /*!< (@ 0x00000A38) AES hardware key select. */ 2891 __IM uint32_t RESERVED3[4]; 2892 __IOM uint32_t HOST_IOT_KPRTL_LOCK; /*!< (@ 0x00000A4C) This write-once register is the K_PRTL lock register. 2893 When this register is set, K_PRTL cannot 2894 be used and a zeroed key will be used instead. 2895 The value of this register is saved in the 2896 CRYPTOCELL AO power domain. */ 2897 __IOM uint32_t HOST_IOT_KDR0; /*!< (@ 0x00000A50) This register holds bits 31:0 of K_DR. The value 2898 of this register is saved in the CRYPTOCELL 2899 AO power domain. Reading from this address 2900 returns the K_DR valid status indicating 2901 if K_DR is successfully retained. */ 2902 __OM uint32_t HOST_IOT_KDR1; /*!< (@ 0x00000A54) This register holds bits 63:32 of K_DR. The value 2903 of this register is saved in the CRYPTOCELL 2904 AO power domain. */ 2905 __OM uint32_t HOST_IOT_KDR2; /*!< (@ 0x00000A58) This register holds bits 95:64 of K_DR. The value 2906 of this register is saved in the CRYPTOCELL 2907 AO power domain. */ 2908 __OM uint32_t HOST_IOT_KDR3; /*!< (@ 0x00000A5C) This register holds bits 127:96 of K_DR. The 2909 value of this register is saved in the CRYPTOCELL 2910 AO power domain. */ 2911 __IOM uint32_t HOST_IOT_LCS; /*!< (@ 0x00000A60) Controls life-cycle state (LCS) for CRYPTOCELL 2912 subsystem */ 2913 } NRF_CC_HOST_RGF_Type; /*!< Size = 2660 (0xa64) */ 2914 2915 2916 2917 /* =========================================================================================================================== */ 2918 /* ================ CC_MISC_S ================ */ 2919 /* =========================================================================================================================== */ 2920 2921 2922 /** 2923 * @brief CRYPTOCELL MISC interface (CC_MISC_S) 2924 */ 2925 2926 typedef struct { /*!< (@ 0x50841000) CC_MISC_S Structure */ 2927 __IM uint32_t RESERVED[516]; 2928 __OM uint32_t AES_CLK; /*!< (@ 0x00000810) Clock control for the AES engine. */ 2929 __IM uint32_t RESERVED1; 2930 __OM uint32_t HASH_CLK; /*!< (@ 0x00000818) Clock control for the HASH engine. */ 2931 __OM uint32_t PKA_CLK; /*!< (@ 0x0000081C) Clock control for the PKA engine. */ 2932 __OM uint32_t DMA_CLK; /*!< (@ 0x00000820) Clock control for the DMA engines. */ 2933 __IM uint32_t CLK_STATUS; /*!< (@ 0x00000824) CRYPTOCELL clocks status register. */ 2934 __IM uint32_t RESERVED2[12]; 2935 __OM uint32_t CHACHA_CLK; /*!< (@ 0x00000858) Clock control for the CHACHA engine. */ 2936 } NRF_CC_MISC_Type; /*!< Size = 2140 (0x85c) */ 2937 2938 2939 2940 /* =========================================================================================================================== */ 2941 /* ================ CC_PKA_S ================ */ 2942 /* =========================================================================================================================== */ 2943 2944 2945 /** 2946 * @brief CRYPTOCELL PKA engine (CC_PKA_S) 2947 */ 2948 2949 typedef struct { /*!< (@ 0x50841000) CC_PKA_S Structure */ 2950 __IOM uint32_t MEMORY_MAP[32]; /*!< (@ 0x00000000) Description collection: Register for mapping 2951 the virtual register R[n] to a physical 2952 address in the PKA SRAM. */ 2953 __IOM uint32_t OPCODE; /*!< (@ 0x00000080) Operation code to be executed by the PKA engine. 2954 Writing to this register triggers the PKA 2955 operation. */ 2956 __IOM uint32_t N_NP_T0_T1_ADDR; /*!< (@ 0x00000084) This register defines the N, Np, T0, and T1 virtual 2957 register index. */ 2958 __IM uint32_t PKA_STATUS; /*!< (@ 0x00000088) This register holds the status for the PKA pipeline. */ 2959 __OM uint32_t PKA_SW_RESET; /*!< (@ 0x0000008C) Reset the PKA engine. */ 2960 __IOM uint32_t PKA_L[8]; /*!< (@ 0x00000090) Description collection: This register holds the 2961 operands bit size. */ 2962 __IM uint32_t PKA_PIPE; /*!< (@ 0x000000B0) Status register indicating if the PKA pipeline 2963 is ready to receive a new OPCODE. */ 2964 __IM uint32_t PKA_DONE; /*!< (@ 0x000000B4) Status register indicating if the PKA operation 2965 has been completed. */ 2966 __IM uint32_t RESERVED[3]; 2967 __IM uint32_t PKA_VERSION; /*!< (@ 0x000000C4) PKA engine HW version. Reset value holds the 2968 version. */ 2969 __IM uint32_t RESERVED1[3]; 2970 __OM uint32_t PKA_SRAM_WADDR; /*!< (@ 0x000000D4) Start address in PKA SRAM for subsequent write 2971 transactions. */ 2972 __OM uint32_t PKA_SRAM_WDATA; /*!< (@ 0x000000D8) Write data to PKA SRAM. Writing to this register 2973 triggers a DMA transaction writing data 2974 into PKA SRAM. The DMA address offset is 2975 automatically incremented during write. */ 2976 __IM uint32_t PKA_SRAM_RDATA; /*!< (@ 0x000000DC) Read data from PKA SRAM. Reading from this register 2977 triggers a DMA transaction read data from 2978 PKA SRAM. The DMA address offset is automatically 2979 incremented during read. */ 2980 __OM uint32_t PKA_SRAM_WCLEAR; /*!< (@ 0x000000E0) Register for clearing PKA SRAM write buffer. */ 2981 __OM uint32_t PKA_SRAM_RADDR; /*!< (@ 0x000000E4) Start address in PKA SRAM for subsequent read 2982 transactions. */ 2983 } NRF_CC_PKA_Type; /*!< Size = 232 (0xe8) */ 2984 2985 2986 2987 /* =========================================================================================================================== */ 2988 /* ================ CC_RNG_S ================ */ 2989 /* =========================================================================================================================== */ 2990 2991 2992 /** 2993 * @brief CRYPTOCELL RNG engine (CC_RNG_S) 2994 */ 2995 2996 typedef struct { /*!< (@ 0x50841000) CC_RNG_S Structure */ 2997 __IM uint32_t RESERVED[64]; 2998 __IOM uint32_t RNG_IMR; /*!< (@ 0x00000100) Interrupt mask register. Each bit of this register 2999 holds the mask of a single interrupt source. */ 3000 __IM uint32_t RNG_ISR; /*!< (@ 0x00000104) Interrupt status register. Each bit of this register 3001 holds the interrupt status of a single interrupt 3002 source. If corresponding RNG_IMR bit is 3003 unmasked, an interrupt is generated. */ 3004 __OM uint32_t RNG_ICR; /*!< (@ 0x00000108) Interrupt clear register. Writing a 1 bit into 3005 a field in this register will clear the 3006 corresponding bit in RNG_ISR. */ 3007 __IOM uint32_t TRNG_CONFIG; /*!< (@ 0x0000010C) TRNG ring oscillator length configuration */ 3008 __IM uint32_t TRNG_VALID; /*!< (@ 0x00000110) This register indicates if TRNG entropy collection 3009 is valid. */ 3010 __IM uint32_t EHR_DATA[6]; /*!< (@ 0x00000114) Description collection: The entropy holding registers 3011 (EHR) hold 192-bits random data collected 3012 by the TRNG. The initial EHR_DATA[0] register 3013 holds the least significant bits [31:0] 3014 of the random data value. */ 3015 __IOM uint32_t NOISE_SOURCE; /*!< (@ 0x0000012C) This register controls the ring oscillator circuit 3016 used as a noise source. */ 3017 __IOM uint32_t SAMPLE_CNT; /*!< (@ 0x00000130) Sample count defining the number of CPU clock 3018 cycles between two consecutive noise source 3019 samples. */ 3020 __IOM uint32_t AUTOCORR_STATISTIC; /*!< (@ 0x00000134) Statistics counter for autocorrelation test activations. 3021 Statistics collection is stopped if one 3022 of the counters reach its limit of all ones. */ 3023 __IOM uint32_t TRNG_DEBUG; /*!< (@ 0x00000138) Debug register for the TRNG. This register is 3024 used to bypass TRNG tests in hardware. */ 3025 __IM uint32_t RESERVED1; 3026 __OM uint32_t RNG_SW_RESET; /*!< (@ 0x00000140) Reset the RNG engine. */ 3027 __IM uint32_t RESERVED2[29]; 3028 __IM uint32_t RNG_BUSY; /*!< (@ 0x000001B8) Status register for RNG engine activity. */ 3029 __OM uint32_t TRNG_RESET; /*!< (@ 0x000001BC) Reset the TRNG, including internal counter of 3030 collected bits and registers EHR_DATA and 3031 TRNG_VALID. */ 3032 __IM uint32_t RNG_HW_FLAGS; /*!< (@ 0x000001C0) Hardware configuration of RNG engine. Reset value 3033 holds the supported features. */ 3034 __OM uint32_t RNG_CLK; /*!< (@ 0x000001C4) Control clock for the RNG engine. */ 3035 __IOM uint32_t RNG_DMA; /*!< (@ 0x000001C8) Writing to this register enables the RNG DMA 3036 engine. */ 3037 __IOM uint32_t RNG_DMA_ROSC_LEN; /*!< (@ 0x000001CC) This register defines which ring oscillator length 3038 configuration should be used when using 3039 the RNG DMA engine. */ 3040 __IOM uint32_t RNG_DMA_SRAM_ADDR; /*!< (@ 0x000001D0) This register defines the start address in TRNG 3041 SRAM for the TRNG data to be collected by 3042 the RNG DMA engine. */ 3043 __IOM uint32_t RNG_DMA_SAMPLES_NUM; /*!< (@ 0x000001D4) This register defines the number of 192-bits 3044 samples that the RNG DMA engine collects 3045 per run. */ 3046 __IOM uint32_t RNG_WATCHDOG_VAL; /*!< (@ 0x000001D8) This register defines the maximum number of CPU 3047 clock cycles per TRNG collection of 192-bits 3048 samples. If the number of cycles for a collection 3049 exceeds this threshold the WATCHDOG interrupt 3050 is triggered. */ 3051 __IM uint32_t RNG_DMA_BUSY; /*!< (@ 0x000001DC) Status register for RNG DMA engine activity. */ 3052 } NRF_CC_RNG_Type; /*!< Size = 480 (0x1e0) */ 3053 3054 3055 3056 /* =========================================================================================================================== */ 3057 /* ================ CC_RNG_SRAM_S ================ */ 3058 /* =========================================================================================================================== */ 3059 3060 3061 /** 3062 * @brief CRYPTOCELL RNG SRAM interface (CC_RNG_SRAM_S) 3063 */ 3064 3065 typedef struct { /*!< (@ 0x50841000) CC_RNG_SRAM_S Structure */ 3066 __IM uint32_t RESERVED[960]; 3067 __IOM uint32_t SRAM_DATA; /*!< (@ 0x00000F00) Read/Write data from RNG SRAM */ 3068 __OM uint32_t SRAM_ADDR; /*!< (@ 0x00000F04) First address given to RNG SRAM DMA for read/write 3069 transactions from/to RNG SRAM. */ 3070 __IM uint32_t SRAM_DATA_READY; /*!< (@ 0x00000F08) RNG SRAM DMA engine is ready to read/write from/to 3071 RNG SRAM. */ 3072 } NRF_CC_RNG_SRAM_Type; /*!< Size = 3852 (0xf0c) */ 3073 3074 3075 3076 /* =========================================================================================================================== */ 3077 /* ================ P0_NS ================ */ 3078 /* =========================================================================================================================== */ 3079 3080 3081 /** 3082 * @brief GPIO Port 0 (P0_NS) 3083 */ 3084 3085 typedef struct { /*!< (@ 0x40842500) P0_NS Structure */ 3086 __IM uint32_t RESERVED; 3087 __IOM uint32_t OUT; /*!< (@ 0x00000004) Write GPIO port */ 3088 __IOM uint32_t OUTSET; /*!< (@ 0x00000008) Set individual bits in GPIO port */ 3089 __IOM uint32_t OUTCLR; /*!< (@ 0x0000000C) Clear individual bits in GPIO port */ 3090 __IM uint32_t IN; /*!< (@ 0x00000010) Read GPIO port */ 3091 __IOM uint32_t DIR; /*!< (@ 0x00000014) Direction of GPIO pins */ 3092 __IOM uint32_t DIRSET; /*!< (@ 0x00000018) DIR set register */ 3093 __IOM uint32_t DIRCLR; /*!< (@ 0x0000001C) DIR clear register */ 3094 __IOM uint32_t LATCH; /*!< (@ 0x00000020) Latch register indicating what GPIO pins that 3095 have met the criteria set in the PIN_CNF[n].SENSE 3096 registers */ 3097 __IOM uint32_t DETECTMODE; /*!< (@ 0x00000024) Select between default DETECT signal behavior 3098 and LDETECT mode (For non-secure pin only) */ 3099 __IOM uint32_t DETECTMODE_SEC; /*!< (@ 0x00000028) Select between default DETECT signal behavior 3100 and LDETECT mode (For secure pin only) */ 3101 __IM uint32_t RESERVED1[117]; 3102 __IOM uint32_t PIN_CNF[32]; /*!< (@ 0x00000200) Description collection: Configuration of GPIO 3103 pins */ 3104 } NRF_GPIO_Type; /*!< Size = 640 (0x280) */ 3105 3106 3107 /** @} */ /* End of group Device_Peripheral_peripherals */ 3108 3109 3110 /* =========================================================================================================================== */ 3111 /* ================ Device Specific Peripheral Address Map ================ */ 3112 /* =========================================================================================================================== */ 3113 3114 3115 /** @addtogroup Device_Peripheral_peripheralAddr 3116 * @{ 3117 */ 3118 3119 #define NRF_FICR_S_BASE 0x00FF0000UL 3120 #define NRF_UICR_S_BASE 0x00FF8000UL 3121 #define NRF_ETM_NS_BASE 0xE0041000UL 3122 #define NRF_ETB_NS_BASE 0xE0051000UL 3123 #define NRF_TPIU_NS_BASE 0xE0054000UL 3124 #define NRF_ATBREPLICATOR_NS_BASE 0xE0058000UL 3125 #define NRF_ATBFUNNEL1_NS_BASE 0xE005A000UL 3126 #define NRF_ATBFUNNEL2_NS_BASE 0xE005B000UL 3127 #define NRF_TAD_S_BASE 0xE0080000UL 3128 #define NRF_SPU_S_BASE 0x50003000UL 3129 #define NRF_REGULATORS_NS_BASE 0x40004000UL 3130 #define NRF_REGULATORS_S_BASE 0x50004000UL 3131 #define NRF_CLOCK_NS_BASE 0x40005000UL 3132 #define NRF_POWER_NS_BASE 0x40005000UL 3133 #define NRF_CLOCK_S_BASE 0x50005000UL 3134 #define NRF_POWER_S_BASE 0x50005000UL 3135 #define NRF_CTRL_AP_PERI_S_BASE 0x50006000UL 3136 #define NRF_SPIM0_NS_BASE 0x40008000UL 3137 #define NRF_SPIS0_NS_BASE 0x40008000UL 3138 #define NRF_TWIM0_NS_BASE 0x40008000UL 3139 #define NRF_TWIS0_NS_BASE 0x40008000UL 3140 #define NRF_UARTE0_NS_BASE 0x40008000UL 3141 #define NRF_SPIM0_S_BASE 0x50008000UL 3142 #define NRF_SPIS0_S_BASE 0x50008000UL 3143 #define NRF_TWIM0_S_BASE 0x50008000UL 3144 #define NRF_TWIS0_S_BASE 0x50008000UL 3145 #define NRF_UARTE0_S_BASE 0x50008000UL 3146 #define NRF_SPIM1_NS_BASE 0x40009000UL 3147 #define NRF_SPIS1_NS_BASE 0x40009000UL 3148 #define NRF_TWIM1_NS_BASE 0x40009000UL 3149 #define NRF_TWIS1_NS_BASE 0x40009000UL 3150 #define NRF_UARTE1_NS_BASE 0x40009000UL 3151 #define NRF_SPIM1_S_BASE 0x50009000UL 3152 #define NRF_SPIS1_S_BASE 0x50009000UL 3153 #define NRF_TWIM1_S_BASE 0x50009000UL 3154 #define NRF_TWIS1_S_BASE 0x50009000UL 3155 #define NRF_UARTE1_S_BASE 0x50009000UL 3156 #define NRF_SPIM2_NS_BASE 0x4000A000UL 3157 #define NRF_SPIS2_NS_BASE 0x4000A000UL 3158 #define NRF_TWIM2_NS_BASE 0x4000A000UL 3159 #define NRF_TWIS2_NS_BASE 0x4000A000UL 3160 #define NRF_UARTE2_NS_BASE 0x4000A000UL 3161 #define NRF_SPIM2_S_BASE 0x5000A000UL 3162 #define NRF_SPIS2_S_BASE 0x5000A000UL 3163 #define NRF_TWIM2_S_BASE 0x5000A000UL 3164 #define NRF_TWIS2_S_BASE 0x5000A000UL 3165 #define NRF_UARTE2_S_BASE 0x5000A000UL 3166 #define NRF_SPIM3_NS_BASE 0x4000B000UL 3167 #define NRF_SPIS3_NS_BASE 0x4000B000UL 3168 #define NRF_TWIM3_NS_BASE 0x4000B000UL 3169 #define NRF_TWIS3_NS_BASE 0x4000B000UL 3170 #define NRF_UARTE3_NS_BASE 0x4000B000UL 3171 #define NRF_SPIM3_S_BASE 0x5000B000UL 3172 #define NRF_SPIS3_S_BASE 0x5000B000UL 3173 #define NRF_TWIM3_S_BASE 0x5000B000UL 3174 #define NRF_TWIS3_S_BASE 0x5000B000UL 3175 #define NRF_UARTE3_S_BASE 0x5000B000UL 3176 #define NRF_GPIOTE0_S_BASE 0x5000D000UL 3177 #define NRF_SAADC_NS_BASE 0x4000E000UL 3178 #define NRF_SAADC_S_BASE 0x5000E000UL 3179 #define NRF_TIMER0_NS_BASE 0x4000F000UL 3180 #define NRF_TIMER0_S_BASE 0x5000F000UL 3181 #define NRF_TIMER1_NS_BASE 0x40010000UL 3182 #define NRF_TIMER1_S_BASE 0x50010000UL 3183 #define NRF_TIMER2_NS_BASE 0x40011000UL 3184 #define NRF_TIMER2_S_BASE 0x50011000UL 3185 #define NRF_RTC0_NS_BASE 0x40014000UL 3186 #define NRF_RTC0_S_BASE 0x50014000UL 3187 #define NRF_RTC1_NS_BASE 0x40015000UL 3188 #define NRF_RTC1_S_BASE 0x50015000UL 3189 #define NRF_DPPIC_NS_BASE 0x40017000UL 3190 #define NRF_DPPIC_S_BASE 0x50017000UL 3191 #define NRF_WDT_NS_BASE 0x40018000UL 3192 #define NRF_WDT_S_BASE 0x50018000UL 3193 #define NRF_EGU0_NS_BASE 0x4001B000UL 3194 #define NRF_EGU0_S_BASE 0x5001B000UL 3195 #define NRF_EGU1_NS_BASE 0x4001C000UL 3196 #define NRF_EGU1_S_BASE 0x5001C000UL 3197 #define NRF_EGU2_NS_BASE 0x4001D000UL 3198 #define NRF_EGU2_S_BASE 0x5001D000UL 3199 #define NRF_EGU3_NS_BASE 0x4001E000UL 3200 #define NRF_EGU3_S_BASE 0x5001E000UL 3201 #define NRF_EGU4_NS_BASE 0x4001F000UL 3202 #define NRF_EGU4_S_BASE 0x5001F000UL 3203 #define NRF_EGU5_NS_BASE 0x40020000UL 3204 #define NRF_EGU5_S_BASE 0x50020000UL 3205 #define NRF_PWM0_NS_BASE 0x40021000UL 3206 #define NRF_PWM0_S_BASE 0x50021000UL 3207 #define NRF_PWM1_NS_BASE 0x40022000UL 3208 #define NRF_PWM1_S_BASE 0x50022000UL 3209 #define NRF_PWM2_NS_BASE 0x40023000UL 3210 #define NRF_PWM2_S_BASE 0x50023000UL 3211 #define NRF_PWM3_NS_BASE 0x40024000UL 3212 #define NRF_PWM3_S_BASE 0x50024000UL 3213 #define NRF_PDM_NS_BASE 0x40026000UL 3214 #define NRF_PDM_S_BASE 0x50026000UL 3215 #define NRF_I2S_NS_BASE 0x40028000UL 3216 #define NRF_I2S_S_BASE 0x50028000UL 3217 #define NRF_IPC_NS_BASE 0x4002A000UL 3218 #define NRF_IPC_S_BASE 0x5002A000UL 3219 #define NRF_FPU_NS_BASE 0x4002C000UL 3220 #define NRF_GPIOTE1_NS_BASE 0x40031000UL 3221 #define NRF_APPROTECT_NS_BASE 0x40039000UL 3222 #define NRF_KMU_NS_BASE 0x40039000UL 3223 #define NRF_NVMC_NS_BASE 0x40039000UL 3224 #define NRF_APPROTECT_S_BASE 0x50039000UL 3225 #define NRF_KMU_S_BASE 0x50039000UL 3226 #define NRF_NVMC_S_BASE 0x50039000UL 3227 #define NRF_VMC_NS_BASE 0x4003A000UL 3228 #define NRF_VMC_S_BASE 0x5003A000UL 3229 #define NRF_CRYPTOCELL_S_BASE 0x50840000UL 3230 #define NRF_CC_AES_S_BASE 0x50841000UL 3231 #define NRF_CC_AHB_S_BASE 0x50841000UL 3232 #define NRF_CC_CHACHA_S_BASE 0x50841000UL 3233 #define NRF_CC_CTL_S_BASE 0x50841000UL 3234 #define NRF_CC_DIN_S_BASE 0x50841000UL 3235 #define NRF_CC_DOUT_S_BASE 0x50841000UL 3236 #define NRF_CC_HASH_S_BASE 0x50841000UL 3237 #define NRF_CC_HOST_RGF_S_BASE 0x50841000UL 3238 #define NRF_CC_MISC_S_BASE 0x50841000UL 3239 #define NRF_CC_PKA_S_BASE 0x50841000UL 3240 #define NRF_CC_RNG_S_BASE 0x50841000UL 3241 #define NRF_CC_RNG_SRAM_S_BASE 0x50841000UL 3242 #define NRF_P0_NS_BASE 0x40842500UL 3243 #define NRF_P0_S_BASE 0x50842500UL 3244 3245 /** @} */ /* End of group Device_Peripheral_peripheralAddr */ 3246 3247 3248 /* =========================================================================================================================== */ 3249 /* ================ Peripheral declaration ================ */ 3250 /* =========================================================================================================================== */ 3251 3252 3253 /** @addtogroup Device_Peripheral_declaration 3254 * @{ 3255 */ 3256 3257 #define NRF_FICR_S ((NRF_FICR_Type*) NRF_FICR_S_BASE) 3258 #define NRF_UICR_S ((NRF_UICR_Type*) NRF_UICR_S_BASE) 3259 #define NRF_ETM_NS ((NRF_ETM_Type*) NRF_ETM_NS_BASE) 3260 #define NRF_ETB_NS ((NRF_ETB_Type*) NRF_ETB_NS_BASE) 3261 #define NRF_TPIU_NS ((NRF_TPIU_Type*) NRF_TPIU_NS_BASE) 3262 #define NRF_ATBREPLICATOR_NS ((NRF_ATBREPLICATOR_Type*) NRF_ATBREPLICATOR_NS_BASE) 3263 #define NRF_ATBFUNNEL1_NS ((NRF_ATBFUNNEL_Type*) NRF_ATBFUNNEL1_NS_BASE) 3264 #define NRF_ATBFUNNEL2_NS ((NRF_ATBFUNNEL_Type*) NRF_ATBFUNNEL2_NS_BASE) 3265 #define NRF_TAD_S ((NRF_TAD_Type*) NRF_TAD_S_BASE) 3266 #define NRF_SPU_S ((NRF_SPU_Type*) NRF_SPU_S_BASE) 3267 #define NRF_REGULATORS_NS ((NRF_REGULATORS_Type*) NRF_REGULATORS_NS_BASE) 3268 #define NRF_REGULATORS_S ((NRF_REGULATORS_Type*) NRF_REGULATORS_S_BASE) 3269 #define NRF_CLOCK_NS ((NRF_CLOCK_Type*) NRF_CLOCK_NS_BASE) 3270 #define NRF_POWER_NS ((NRF_POWER_Type*) NRF_POWER_NS_BASE) 3271 #define NRF_CLOCK_S ((NRF_CLOCK_Type*) NRF_CLOCK_S_BASE) 3272 #define NRF_POWER_S ((NRF_POWER_Type*) NRF_POWER_S_BASE) 3273 #define NRF_CTRL_AP_PERI_S ((NRF_CTRLAPPERI_Type*) NRF_CTRL_AP_PERI_S_BASE) 3274 #define NRF_SPIM0_NS ((NRF_SPIM_Type*) NRF_SPIM0_NS_BASE) 3275 #define NRF_SPIS0_NS ((NRF_SPIS_Type*) NRF_SPIS0_NS_BASE) 3276 #define NRF_TWIM0_NS ((NRF_TWIM_Type*) NRF_TWIM0_NS_BASE) 3277 #define NRF_TWIS0_NS ((NRF_TWIS_Type*) NRF_TWIS0_NS_BASE) 3278 #define NRF_UARTE0_NS ((NRF_UARTE_Type*) NRF_UARTE0_NS_BASE) 3279 #define NRF_SPIM0_S ((NRF_SPIM_Type*) NRF_SPIM0_S_BASE) 3280 #define NRF_SPIS0_S ((NRF_SPIS_Type*) NRF_SPIS0_S_BASE) 3281 #define NRF_TWIM0_S ((NRF_TWIM_Type*) NRF_TWIM0_S_BASE) 3282 #define NRF_TWIS0_S ((NRF_TWIS_Type*) NRF_TWIS0_S_BASE) 3283 #define NRF_UARTE0_S ((NRF_UARTE_Type*) NRF_UARTE0_S_BASE) 3284 #define NRF_SPIM1_NS ((NRF_SPIM_Type*) NRF_SPIM1_NS_BASE) 3285 #define NRF_SPIS1_NS ((NRF_SPIS_Type*) NRF_SPIS1_NS_BASE) 3286 #define NRF_TWIM1_NS ((NRF_TWIM_Type*) NRF_TWIM1_NS_BASE) 3287 #define NRF_TWIS1_NS ((NRF_TWIS_Type*) NRF_TWIS1_NS_BASE) 3288 #define NRF_UARTE1_NS ((NRF_UARTE_Type*) NRF_UARTE1_NS_BASE) 3289 #define NRF_SPIM1_S ((NRF_SPIM_Type*) NRF_SPIM1_S_BASE) 3290 #define NRF_SPIS1_S ((NRF_SPIS_Type*) NRF_SPIS1_S_BASE) 3291 #define NRF_TWIM1_S ((NRF_TWIM_Type*) NRF_TWIM1_S_BASE) 3292 #define NRF_TWIS1_S ((NRF_TWIS_Type*) NRF_TWIS1_S_BASE) 3293 #define NRF_UARTE1_S ((NRF_UARTE_Type*) NRF_UARTE1_S_BASE) 3294 #define NRF_SPIM2_NS ((NRF_SPIM_Type*) NRF_SPIM2_NS_BASE) 3295 #define NRF_SPIS2_NS ((NRF_SPIS_Type*) NRF_SPIS2_NS_BASE) 3296 #define NRF_TWIM2_NS ((NRF_TWIM_Type*) NRF_TWIM2_NS_BASE) 3297 #define NRF_TWIS2_NS ((NRF_TWIS_Type*) NRF_TWIS2_NS_BASE) 3298 #define NRF_UARTE2_NS ((NRF_UARTE_Type*) NRF_UARTE2_NS_BASE) 3299 #define NRF_SPIM2_S ((NRF_SPIM_Type*) NRF_SPIM2_S_BASE) 3300 #define NRF_SPIS2_S ((NRF_SPIS_Type*) NRF_SPIS2_S_BASE) 3301 #define NRF_TWIM2_S ((NRF_TWIM_Type*) NRF_TWIM2_S_BASE) 3302 #define NRF_TWIS2_S ((NRF_TWIS_Type*) NRF_TWIS2_S_BASE) 3303 #define NRF_UARTE2_S ((NRF_UARTE_Type*) NRF_UARTE2_S_BASE) 3304 #define NRF_SPIM3_NS ((NRF_SPIM_Type*) NRF_SPIM3_NS_BASE) 3305 #define NRF_SPIS3_NS ((NRF_SPIS_Type*) NRF_SPIS3_NS_BASE) 3306 #define NRF_TWIM3_NS ((NRF_TWIM_Type*) NRF_TWIM3_NS_BASE) 3307 #define NRF_TWIS3_NS ((NRF_TWIS_Type*) NRF_TWIS3_NS_BASE) 3308 #define NRF_UARTE3_NS ((NRF_UARTE_Type*) NRF_UARTE3_NS_BASE) 3309 #define NRF_SPIM3_S ((NRF_SPIM_Type*) NRF_SPIM3_S_BASE) 3310 #define NRF_SPIS3_S ((NRF_SPIS_Type*) NRF_SPIS3_S_BASE) 3311 #define NRF_TWIM3_S ((NRF_TWIM_Type*) NRF_TWIM3_S_BASE) 3312 #define NRF_TWIS3_S ((NRF_TWIS_Type*) NRF_TWIS3_S_BASE) 3313 #define NRF_UARTE3_S ((NRF_UARTE_Type*) NRF_UARTE3_S_BASE) 3314 #define NRF_GPIOTE0_S ((NRF_GPIOTE_Type*) NRF_GPIOTE0_S_BASE) 3315 #define NRF_SAADC_NS ((NRF_SAADC_Type*) NRF_SAADC_NS_BASE) 3316 #define NRF_SAADC_S ((NRF_SAADC_Type*) NRF_SAADC_S_BASE) 3317 #define NRF_TIMER0_NS ((NRF_TIMER_Type*) NRF_TIMER0_NS_BASE) 3318 #define NRF_TIMER0_S ((NRF_TIMER_Type*) NRF_TIMER0_S_BASE) 3319 #define NRF_TIMER1_NS ((NRF_TIMER_Type*) NRF_TIMER1_NS_BASE) 3320 #define NRF_TIMER1_S ((NRF_TIMER_Type*) NRF_TIMER1_S_BASE) 3321 #define NRF_TIMER2_NS ((NRF_TIMER_Type*) NRF_TIMER2_NS_BASE) 3322 #define NRF_TIMER2_S ((NRF_TIMER_Type*) NRF_TIMER2_S_BASE) 3323 #define NRF_RTC0_NS ((NRF_RTC_Type*) NRF_RTC0_NS_BASE) 3324 #define NRF_RTC0_S ((NRF_RTC_Type*) NRF_RTC0_S_BASE) 3325 #define NRF_RTC1_NS ((NRF_RTC_Type*) NRF_RTC1_NS_BASE) 3326 #define NRF_RTC1_S ((NRF_RTC_Type*) NRF_RTC1_S_BASE) 3327 #define NRF_DPPIC_NS ((NRF_DPPIC_Type*) NRF_DPPIC_NS_BASE) 3328 #define NRF_DPPIC_S ((NRF_DPPIC_Type*) NRF_DPPIC_S_BASE) 3329 #define NRF_WDT_NS ((NRF_WDT_Type*) NRF_WDT_NS_BASE) 3330 #define NRF_WDT_S ((NRF_WDT_Type*) NRF_WDT_S_BASE) 3331 #define NRF_EGU0_NS ((NRF_EGU_Type*) NRF_EGU0_NS_BASE) 3332 #define NRF_EGU0_S ((NRF_EGU_Type*) NRF_EGU0_S_BASE) 3333 #define NRF_EGU1_NS ((NRF_EGU_Type*) NRF_EGU1_NS_BASE) 3334 #define NRF_EGU1_S ((NRF_EGU_Type*) NRF_EGU1_S_BASE) 3335 #define NRF_EGU2_NS ((NRF_EGU_Type*) NRF_EGU2_NS_BASE) 3336 #define NRF_EGU2_S ((NRF_EGU_Type*) NRF_EGU2_S_BASE) 3337 #define NRF_EGU3_NS ((NRF_EGU_Type*) NRF_EGU3_NS_BASE) 3338 #define NRF_EGU3_S ((NRF_EGU_Type*) NRF_EGU3_S_BASE) 3339 #define NRF_EGU4_NS ((NRF_EGU_Type*) NRF_EGU4_NS_BASE) 3340 #define NRF_EGU4_S ((NRF_EGU_Type*) NRF_EGU4_S_BASE) 3341 #define NRF_EGU5_NS ((NRF_EGU_Type*) NRF_EGU5_NS_BASE) 3342 #define NRF_EGU5_S ((NRF_EGU_Type*) NRF_EGU5_S_BASE) 3343 #define NRF_PWM0_NS ((NRF_PWM_Type*) NRF_PWM0_NS_BASE) 3344 #define NRF_PWM0_S ((NRF_PWM_Type*) NRF_PWM0_S_BASE) 3345 #define NRF_PWM1_NS ((NRF_PWM_Type*) NRF_PWM1_NS_BASE) 3346 #define NRF_PWM1_S ((NRF_PWM_Type*) NRF_PWM1_S_BASE) 3347 #define NRF_PWM2_NS ((NRF_PWM_Type*) NRF_PWM2_NS_BASE) 3348 #define NRF_PWM2_S ((NRF_PWM_Type*) NRF_PWM2_S_BASE) 3349 #define NRF_PWM3_NS ((NRF_PWM_Type*) NRF_PWM3_NS_BASE) 3350 #define NRF_PWM3_S ((NRF_PWM_Type*) NRF_PWM3_S_BASE) 3351 #define NRF_PDM_NS ((NRF_PDM_Type*) NRF_PDM_NS_BASE) 3352 #define NRF_PDM_S ((NRF_PDM_Type*) NRF_PDM_S_BASE) 3353 #define NRF_I2S_NS ((NRF_I2S_Type*) NRF_I2S_NS_BASE) 3354 #define NRF_I2S_S ((NRF_I2S_Type*) NRF_I2S_S_BASE) 3355 #define NRF_IPC_NS ((NRF_IPC_Type*) NRF_IPC_NS_BASE) 3356 #define NRF_IPC_S ((NRF_IPC_Type*) NRF_IPC_S_BASE) 3357 #define NRF_FPU_NS ((NRF_FPU_Type*) NRF_FPU_NS_BASE) 3358 #define NRF_GPIOTE1_NS ((NRF_GPIOTE_Type*) NRF_GPIOTE1_NS_BASE) 3359 #define NRF_APPROTECT_NS ((NRF_APPROTECT_Type*) NRF_APPROTECT_NS_BASE) 3360 #define NRF_KMU_NS ((NRF_KMU_Type*) NRF_KMU_NS_BASE) 3361 #define NRF_NVMC_NS ((NRF_NVMC_Type*) NRF_NVMC_NS_BASE) 3362 #define NRF_APPROTECT_S ((NRF_APPROTECT_Type*) NRF_APPROTECT_S_BASE) 3363 #define NRF_KMU_S ((NRF_KMU_Type*) NRF_KMU_S_BASE) 3364 #define NRF_NVMC_S ((NRF_NVMC_Type*) NRF_NVMC_S_BASE) 3365 #define NRF_VMC_NS ((NRF_VMC_Type*) NRF_VMC_NS_BASE) 3366 #define NRF_VMC_S ((NRF_VMC_Type*) NRF_VMC_S_BASE) 3367 #define NRF_CRYPTOCELL_S ((NRF_CRYPTOCELL_Type*) NRF_CRYPTOCELL_S_BASE) 3368 #define NRF_CC_AES_S ((NRF_CC_AES_Type*) NRF_CC_AES_S_BASE) 3369 #define NRF_CC_AHB_S ((NRF_CC_AHB_Type*) NRF_CC_AHB_S_BASE) 3370 #define NRF_CC_CHACHA_S ((NRF_CC_CHACHA_Type*) NRF_CC_CHACHA_S_BASE) 3371 #define NRF_CC_CTL_S ((NRF_CC_CTL_Type*) NRF_CC_CTL_S_BASE) 3372 #define NRF_CC_DIN_S ((NRF_CC_DIN_Type*) NRF_CC_DIN_S_BASE) 3373 #define NRF_CC_DOUT_S ((NRF_CC_DOUT_Type*) NRF_CC_DOUT_S_BASE) 3374 #define NRF_CC_HASH_S ((NRF_CC_HASH_Type*) NRF_CC_HASH_S_BASE) 3375 #define NRF_CC_HOST_RGF_S ((NRF_CC_HOST_RGF_Type*) NRF_CC_HOST_RGF_S_BASE) 3376 #define NRF_CC_MISC_S ((NRF_CC_MISC_Type*) NRF_CC_MISC_S_BASE) 3377 #define NRF_CC_PKA_S ((NRF_CC_PKA_Type*) NRF_CC_PKA_S_BASE) 3378 #define NRF_CC_RNG_S ((NRF_CC_RNG_Type*) NRF_CC_RNG_S_BASE) 3379 #define NRF_CC_RNG_SRAM_S ((NRF_CC_RNG_SRAM_Type*) NRF_CC_RNG_SRAM_S_BASE) 3380 #define NRF_P0_NS ((NRF_GPIO_Type*) NRF_P0_NS_BASE) 3381 #define NRF_P0_S ((NRF_GPIO_Type*) NRF_P0_S_BASE) 3382 3383 /** @} */ /* End of group Device_Peripheral_declaration */ 3384 3385 3386 /* ========================================= End of section using anonymous unions ========================================= */ 3387 #if defined (__CC_ARM) 3388 #pragma pop 3389 #elif defined (__ICCARM__) 3390 /* leave anonymous unions enabled */ 3391 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 3392 #pragma clang diagnostic pop 3393 #elif defined (__GNUC__) 3394 /* anonymous unions are enabled by default */ 3395 #elif defined (__TMS470__) 3396 /* anonymous unions are enabled by default */ 3397 #elif defined (__TASKING__) 3398 #pragma warning restore 3399 #elif defined (__CSMC__) 3400 /* anonymous unions are enabled by default */ 3401 #endif 3402 3403 3404 #ifdef __cplusplus 3405 } 3406 #endif 3407 3408 #endif /* NRF9120_H */ 3409 3410 3411 /** @} */ /* End of group nrf9120 */ 3412 3413 /** @} */ /* End of group Nordic Semiconductor */ 3414