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