1 /*
2 Copyright (c) 2010 - 2023, 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     nrf52.h
33  * @brief    CMSIS HeaderFile
34  * @version  1
35  * @date     22. June 2023
36  * @note     Generated by SVDConv V3.3.35 on Thursday, 22.06.2023 08:53:14
37  *           from File 'nrf52.svd',
38  *           last modified on Thursday, 22.06.2023 06:51:53
39  */
40 
41 
42 
43 /** @addtogroup Nordic Semiconductor
44   * @{
45   */
46 
47 
48 /** @addtogroup nrf52
49   * @{
50   */
51 
52 
53 #ifndef NRF52_H
54 #define NRF52_H
55 
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59 
60 
61 /** @addtogroup Configuration_of_CMSIS
62   * @{
63   */
64 
65 
66 
67 /* =========================================================================================================================== */
68 /* ================                                Interrupt Number Definition                                ================ */
69 /* =========================================================================================================================== */
70 
71 typedef enum {
72 /* =======================================  ARM Cortex-M4 Specific Interrupt Numbers  ======================================== */
73   Reset_IRQn                = -15,              /*!< -15  Reset Vector, invoked on Power up and warm reset                     */
74   NonMaskableInt_IRQn       = -14,              /*!< -14  Non maskable Interrupt, cannot be stopped or preempted               */
75   HardFault_IRQn            = -13,              /*!< -13  Hard Fault, all classes of Fault                                     */
76   MemoryManagement_IRQn     = -12,              /*!< -12  Memory Management, MPU mismatch, including Access Violation
77                                                      and No Match                                                              */
78   BusFault_IRQn             = -11,              /*!< -11  Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory
79                                                      related Fault                                                             */
80   UsageFault_IRQn           = -10,              /*!< -10  Usage Fault, i.e. Undef Instruction, Illegal State Transition        */
81   SVCall_IRQn               =  -5,              /*!< -5 System Service Call via SVC instruction                                */
82   DebugMonitor_IRQn         =  -4,              /*!< -4 Debug Monitor                                                          */
83   PendSV_IRQn               =  -2,              /*!< -2 Pendable request for system service                                    */
84   SysTick_IRQn              =  -1,              /*!< -1 System Tick Timer                                                      */
85 /* ===========================================  nrf52 Specific Interrupt Numbers  ============================================ */
86   POWER_CLOCK_IRQn          =   0,              /*!< 0  POWER_CLOCK                                                            */
87   RADIO_IRQn                =   1,              /*!< 1  RADIO                                                                  */
88   UARTE0_UART0_IRQn         =   2,              /*!< 2  UARTE0_UART0                                                           */
89   SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQn=   3,  /*!< 3  SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0                                      */
90   SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQn=   4,  /*!< 4  SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1                                      */
91   NFCT_IRQn                 =   5,              /*!< 5  NFCT                                                                   */
92   GPIOTE_IRQn               =   6,              /*!< 6  GPIOTE                                                                 */
93   SAADC_IRQn                =   7,              /*!< 7  SAADC                                                                  */
94   TIMER0_IRQn               =   8,              /*!< 8  TIMER0                                                                 */
95   TIMER1_IRQn               =   9,              /*!< 9  TIMER1                                                                 */
96   TIMER2_IRQn               =  10,              /*!< 10 TIMER2                                                                 */
97   RTC0_IRQn                 =  11,              /*!< 11 RTC0                                                                   */
98   TEMP_IRQn                 =  12,              /*!< 12 TEMP                                                                   */
99   RNG_IRQn                  =  13,              /*!< 13 RNG                                                                    */
100   ECB_IRQn                  =  14,              /*!< 14 ECB                                                                    */
101   CCM_AAR_IRQn              =  15,              /*!< 15 CCM_AAR                                                                */
102   WDT_IRQn                  =  16,              /*!< 16 WDT                                                                    */
103   RTC1_IRQn                 =  17,              /*!< 17 RTC1                                                                   */
104   QDEC_IRQn                 =  18,              /*!< 18 QDEC                                                                   */
105   COMP_LPCOMP_IRQn          =  19,              /*!< 19 COMP_LPCOMP                                                            */
106   SWI0_EGU0_IRQn            =  20,              /*!< 20 SWI0_EGU0                                                              */
107   SWI1_EGU1_IRQn            =  21,              /*!< 21 SWI1_EGU1                                                              */
108   SWI2_EGU2_IRQn            =  22,              /*!< 22 SWI2_EGU2                                                              */
109   SWI3_EGU3_IRQn            =  23,              /*!< 23 SWI3_EGU3                                                              */
110   SWI4_EGU4_IRQn            =  24,              /*!< 24 SWI4_EGU4                                                              */
111   SWI5_EGU5_IRQn            =  25,              /*!< 25 SWI5_EGU5                                                              */
112   TIMER3_IRQn               =  26,              /*!< 26 TIMER3                                                                 */
113   TIMER4_IRQn               =  27,              /*!< 27 TIMER4                                                                 */
114   PWM0_IRQn                 =  28,              /*!< 28 PWM0                                                                   */
115   PDM_IRQn                  =  29,              /*!< 29 PDM                                                                    */
116   MWU_IRQn                  =  32,              /*!< 32 MWU                                                                    */
117   PWM1_IRQn                 =  33,              /*!< 33 PWM1                                                                   */
118   PWM2_IRQn                 =  34,              /*!< 34 PWM2                                                                   */
119   SPIM2_SPIS2_SPI2_IRQn     =  35,              /*!< 35 SPIM2_SPIS2_SPI2                                                       */
120   RTC2_IRQn                 =  36,              /*!< 36 RTC2                                                                   */
121   I2S_IRQn                  =  37,              /*!< 37 I2S                                                                    */
122   FPU_IRQn                  =  38               /*!< 38 FPU                                                                    */
123 } IRQn_Type;
124 
125 
126 
127 /* =========================================================================================================================== */
128 /* ================                           Processor and Core Peripheral Section                           ================ */
129 /* =========================================================================================================================== */
130 
131 /* ===========================  Configuration of the ARM Cortex-M4 Processor and Core Peripherals  =========================== */
132 #define __CM4_REV                 0x0001U       /*!< CM4 Core Revision                                                         */
133 #define __INTERRUPTS_MAX                   112        /*!< Top interrupt number                                                      */
134 #define __DSP_PRESENT                  1        /*!< DSP present or not                                                        */
135 #define __VTOR_PRESENT                 1        /*!< Set to 1 if CPU supports Vector Table Offset Register                     */
136 #define __NVIC_PRIO_BITS               3        /*!< Number of Bits used for Priority Levels                                   */
137 #define __Vendor_SysTickConfig         0        /*!< Set to 1 if different SysTick Config is used                              */
138 #define __MPU_PRESENT                  1        /*!< MPU present                                                               */
139 #define __FPU_PRESENT                  1        /*!< FPU present                                                               */
140 
141 
142 /** @} */ /* End of group Configuration_of_CMSIS */
143 
144 #include "core_cm4.h"                           /*!< ARM Cortex-M4 processor and core peripherals                              */
145 #include "system_nrf52.h"                       /*!< nrf52 System                                                              */
146 
147 #ifndef __IM                                    /*!< Fallback for older CMSIS versions                                         */
148   #define __IM   __I
149 #endif
150 #ifndef __OM                                    /*!< Fallback for older CMSIS versions                                         */
151   #define __OM   __O
152 #endif
153 #ifndef __IOM                                   /*!< Fallback for older CMSIS versions                                         */
154   #define __IOM  __IO
155 #endif
156 
157 
158 /* ========================================  Start of section using anonymous unions  ======================================== */
159 #if defined (__CC_ARM)
160   #pragma push
161   #pragma anon_unions
162 #elif defined (__ICCARM__)
163   #pragma language=extended
164 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
165   #pragma clang diagnostic push
166   #pragma clang diagnostic ignored "-Wc11-extensions"
167   #pragma clang diagnostic ignored "-Wreserved-id-macro"
168   #pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
169   #pragma clang diagnostic ignored "-Wnested-anon-types"
170 #elif defined (__GNUC__)
171   /* anonymous unions are enabled by default */
172 #elif defined (__TMS470__)
173   /* anonymous unions are enabled by default */
174 #elif defined (__TASKING__)
175   #pragma warning 586
176 #elif defined (__CSMC__)
177   /* anonymous unions are enabled by default */
178 #else
179   #warning Not supported compiler type
180 #endif
181 
182 
183 /* =========================================================================================================================== */
184 /* ================                              Device Specific Cluster Section                              ================ */
185 /* =========================================================================================================================== */
186 
187 
188 /** @addtogroup Device_Peripheral_clusters
189   * @{
190   */
191 
192 
193 /**
194   * @brief FICR_INFO [INFO] (Device info)
195   */
196 typedef struct {
197   __IM  uint32_t  PART;                         /*!< (@ 0x00000000) Part code                                                  */
198   __IM  uint32_t  VARIANT;                      /*!< (@ 0x00000004) Part Variant, Hardware version and Production
199                                                                     configuration                                              */
200   __IM  uint32_t  PACKAGE;                      /*!< (@ 0x00000008) Package option                                             */
201   __IM  uint32_t  RAM;                          /*!< (@ 0x0000000C) RAM variant                                                */
202   __IM  uint32_t  FLASH;                        /*!< (@ 0x00000010) Flash variant                                              */
203 } FICR_INFO_Type;                               /*!< Size = 20 (0x14)                                                          */
204 
205 
206 /**
207   * @brief FICR_TEMP [TEMP] (Registers storing factory TEMP module linearization coefficients)
208   */
209 typedef struct {
210   __IM  uint32_t  A0;                           /*!< (@ 0x00000000) Slope definition A0.                                       */
211   __IM  uint32_t  A1;                           /*!< (@ 0x00000004) Slope definition A1.                                       */
212   __IM  uint32_t  A2;                           /*!< (@ 0x00000008) Slope definition A2.                                       */
213   __IM  uint32_t  A3;                           /*!< (@ 0x0000000C) Slope definition A3.                                       */
214   __IM  uint32_t  A4;                           /*!< (@ 0x00000010) Slope definition A4.                                       */
215   __IM  uint32_t  A5;                           /*!< (@ 0x00000014) Slope definition A5.                                       */
216   __IM  uint32_t  B0;                           /*!< (@ 0x00000018) y-intercept B0.                                            */
217   __IM  uint32_t  B1;                           /*!< (@ 0x0000001C) y-intercept B1.                                            */
218   __IM  uint32_t  B2;                           /*!< (@ 0x00000020) y-intercept B2.                                            */
219   __IM  uint32_t  B3;                           /*!< (@ 0x00000024) y-intercept B3.                                            */
220   __IM  uint32_t  B4;                           /*!< (@ 0x00000028) y-intercept B4.                                            */
221   __IM  uint32_t  B5;                           /*!< (@ 0x0000002C) y-intercept B5.                                            */
222   __IM  uint32_t  T0;                           /*!< (@ 0x00000030) Segment end T0.                                            */
223   __IM  uint32_t  T1;                           /*!< (@ 0x00000034) Segment end T1.                                            */
224   __IM  uint32_t  T2;                           /*!< (@ 0x00000038) Segment end T2.                                            */
225   __IM  uint32_t  T3;                           /*!< (@ 0x0000003C) Segment end T3.                                            */
226   __IM  uint32_t  T4;                           /*!< (@ 0x00000040) Segment end T4.                                            */
227 } FICR_TEMP_Type;                               /*!< Size = 68 (0x44)                                                          */
228 
229 
230 /**
231   * @brief FICR_NFC [NFC] (Unspecified)
232   */
233 typedef struct {
234   __IM  uint32_t  TAGHEADER0;                   /*!< (@ 0x00000000) Default header for NFC Tag. Software can read
235                                                                     these values to populate NFCID1_3RD_LAST,
236                                                                     NFCID1_2ND_LAST and NFCID1_LAST.                           */
237   __IM  uint32_t  TAGHEADER1;                   /*!< (@ 0x00000004) Default header for NFC Tag. Software can read
238                                                                     these values to populate NFCID1_3RD_LAST,
239                                                                     NFCID1_2ND_LAST and NFCID1_LAST.                           */
240   __IM  uint32_t  TAGHEADER2;                   /*!< (@ 0x00000008) Default header for NFC Tag. Software can read
241                                                                     these values to populate NFCID1_3RD_LAST,
242                                                                     NFCID1_2ND_LAST and NFCID1_LAST.                           */
243   __IM  uint32_t  TAGHEADER3;                   /*!< (@ 0x0000000C) Default header for NFC Tag. Software can read
244                                                                     these values to populate NFCID1_3RD_LAST,
245                                                                     NFCID1_2ND_LAST and NFCID1_LAST.                           */
246 } FICR_NFC_Type;                                /*!< Size = 16 (0x10)                                                          */
247 
248 
249 /**
250   * @brief POWER_RAM [RAM] (Unspecified)
251   */
252 typedef struct {
253   __IOM uint32_t  POWER;                        /*!< (@ 0x00000000) Description cluster: RAMn power control register           */
254   __OM  uint32_t  POWERSET;                     /*!< (@ 0x00000004) Description cluster: RAMn power control set register       */
255   __OM  uint32_t  POWERCLR;                     /*!< (@ 0x00000008) Description cluster: RAMn power control clear
256                                                                     register                                                   */
257   __IM  uint32_t  RESERVED;
258 } POWER_RAM_Type;                               /*!< Size = 16 (0x10)                                                          */
259 
260 
261 /**
262   * @brief UARTE_PSEL [PSEL] (Unspecified)
263   */
264 typedef struct {
265   __IOM uint32_t  RTS;                          /*!< (@ 0x00000000) Pin select for RTS signal                                  */
266   __IOM uint32_t  TXD;                          /*!< (@ 0x00000004) Pin select for TXD signal                                  */
267   __IOM uint32_t  CTS;                          /*!< (@ 0x00000008) Pin select for CTS signal                                  */
268   __IOM uint32_t  RXD;                          /*!< (@ 0x0000000C) Pin select for RXD signal                                  */
269 } UARTE_PSEL_Type;                              /*!< Size = 16 (0x10)                                                          */
270 
271 
272 /**
273   * @brief UARTE_RXD [RXD] (RXD EasyDMA channel)
274   */
275 typedef struct {
276   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
277   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in receive buffer                  */
278   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
279 } UARTE_RXD_Type;                               /*!< Size = 12 (0xc)                                                           */
280 
281 
282 /**
283   * @brief UARTE_TXD [TXD] (TXD EasyDMA channel)
284   */
285 typedef struct {
286   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
287   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer                 */
288   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
289 } UARTE_TXD_Type;                               /*!< Size = 12 (0xc)                                                           */
290 
291 
292 /**
293   * @brief SPI_PSEL [PSEL] (Unspecified)
294   */
295 typedef struct {
296   __IOM uint32_t  SCK;                          /*!< (@ 0x00000000) Pin select for SCK                                         */
297   __IOM uint32_t  MOSI;                         /*!< (@ 0x00000004) Pin select for MOSI                                        */
298   __IOM uint32_t  MISO;                         /*!< (@ 0x00000008) Pin select for MISO                                        */
299 } SPI_PSEL_Type;                                /*!< Size = 12 (0xc)                                                           */
300 
301 
302 /**
303   * @brief SPIM_PSEL [PSEL] (Unspecified)
304   */
305 typedef struct {
306   __IOM uint32_t  SCK;                          /*!< (@ 0x00000000) Pin select for SCK                                         */
307   __IOM uint32_t  MOSI;                         /*!< (@ 0x00000004) Pin select for MOSI signal                                 */
308   __IOM uint32_t  MISO;                         /*!< (@ 0x00000008) Pin select for MISO signal                                 */
309 } SPIM_PSEL_Type;                               /*!< Size = 12 (0xc)                                                           */
310 
311 
312 /**
313   * @brief SPIM_RXD [RXD] (RXD EasyDMA channel)
314   */
315 typedef struct {
316   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
317   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in receive buffer                  */
318   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
319   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
320 } SPIM_RXD_Type;                                /*!< Size = 16 (0x10)                                                          */
321 
322 
323 /**
324   * @brief SPIM_TXD [TXD] (TXD EasyDMA channel)
325   */
326 typedef struct {
327   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
328   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer                 */
329   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
330   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
331 } SPIM_TXD_Type;                                /*!< Size = 16 (0x10)                                                          */
332 
333 
334 /**
335   * @brief SPIS_PSEL [PSEL] (Unspecified)
336   */
337 typedef struct {
338   __IOM uint32_t  SCK;                          /*!< (@ 0x00000000) Pin select for SCK                                         */
339   __IOM uint32_t  MISO;                         /*!< (@ 0x00000004) Pin select for MISO signal                                 */
340   __IOM uint32_t  MOSI;                         /*!< (@ 0x00000008) Pin select for MOSI signal                                 */
341   __IOM uint32_t  CSN;                          /*!< (@ 0x0000000C) Pin select for CSN signal                                  */
342 } SPIS_PSEL_Type;                               /*!< Size = 16 (0x10)                                                          */
343 
344 
345 /**
346   * @brief SPIS_RXD [RXD] (Unspecified)
347   */
348 typedef struct {
349   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) RXD data pointer                                           */
350   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in receive buffer                  */
351   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes received in last granted transaction       */
352 } SPIS_RXD_Type;                                /*!< Size = 12 (0xc)                                                           */
353 
354 
355 /**
356   * @brief SPIS_TXD [TXD] (Unspecified)
357   */
358 typedef struct {
359   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) TXD data pointer                                           */
360   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer                 */
361   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transmitted in last granted transaction    */
362 } SPIS_TXD_Type;                                /*!< Size = 12 (0xc)                                                           */
363 
364 
365 /**
366   * @brief TWIM_PSEL [PSEL] (Unspecified)
367   */
368 typedef struct {
369   __IOM uint32_t  SCL;                          /*!< (@ 0x00000000) Pin select for SCL signal                                  */
370   __IOM uint32_t  SDA;                          /*!< (@ 0x00000004) Pin select for SDA signal                                  */
371 } TWIM_PSEL_Type;                               /*!< Size = 8 (0x8)                                                            */
372 
373 
374 /**
375   * @brief TWIM_RXD [RXD] (RXD EasyDMA channel)
376   */
377 typedef struct {
378   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
379   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in receive buffer                  */
380   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
381   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
382 } TWIM_RXD_Type;                                /*!< Size = 16 (0x10)                                                          */
383 
384 
385 /**
386   * @brief TWIM_TXD [TXD] (TXD EasyDMA channel)
387   */
388 typedef struct {
389   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
390   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer                 */
391   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
392   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
393 } TWIM_TXD_Type;                                /*!< Size = 16 (0x10)                                                          */
394 
395 
396 /**
397   * @brief TWIS_PSEL [PSEL] (Unspecified)
398   */
399 typedef struct {
400   __IOM uint32_t  SCL;                          /*!< (@ 0x00000000) Pin select for SCL signal                                  */
401   __IOM uint32_t  SDA;                          /*!< (@ 0x00000004) Pin select for SDA signal                                  */
402 } TWIS_PSEL_Type;                               /*!< Size = 8 (0x8)                                                            */
403 
404 
405 /**
406   * @brief TWIS_RXD [RXD] (RXD EasyDMA channel)
407   */
408 typedef struct {
409   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) RXD Data pointer                                           */
410   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in RXD buffer                      */
411   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last RXD transaction    */
412 } TWIS_RXD_Type;                                /*!< Size = 12 (0xc)                                                           */
413 
414 
415 /**
416   * @brief TWIS_TXD [TXD] (TXD EasyDMA channel)
417   */
418 typedef struct {
419   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) TXD Data pointer                                           */
420   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in TXD buffer                      */
421   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last TXD transaction    */
422 } TWIS_TXD_Type;                                /*!< Size = 12 (0xc)                                                           */
423 
424 
425 /**
426   * @brief NFCT_FRAMESTATUS [FRAMESTATUS] (Unspecified)
427   */
428 typedef struct {
429   __IOM uint32_t  RX;                           /*!< (@ 0x00000000) Result of last incoming frames                             */
430 } NFCT_FRAMESTATUS_Type;                        /*!< Size = 4 (0x4)                                                            */
431 
432 
433 /**
434   * @brief NFCT_TXD [TXD] (Unspecified)
435   */
436 typedef struct {
437   __IOM uint32_t  FRAMECONFIG;                  /*!< (@ 0x00000000) Configuration of outgoing frames                           */
438   __IOM uint32_t  AMOUNT;                       /*!< (@ 0x00000004) Size of outgoing frame                                     */
439 } NFCT_TXD_Type;                                /*!< Size = 8 (0x8)                                                            */
440 
441 
442 /**
443   * @brief NFCT_RXD [RXD] (Unspecified)
444   */
445 typedef struct {
446   __IOM uint32_t  FRAMECONFIG;                  /*!< (@ 0x00000000) Configuration of incoming frames                           */
447   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000004) Size of last incoming frame                                */
448 } NFCT_RXD_Type;                                /*!< Size = 8 (0x8)                                                            */
449 
450 
451 /**
452   * @brief SAADC_EVENTS_CH [EVENTS_CH] (Peripheral events.)
453   */
454 typedef struct {
455   __IOM uint32_t  LIMITH;                       /*!< (@ 0x00000000) Description cluster: Last results is equal or
456                                                                     above CH[n].LIMIT.HIGH                                     */
457   __IOM uint32_t  LIMITL;                       /*!< (@ 0x00000004) Description cluster: Last results is equal or
458                                                                     below CH[n].LIMIT.LOW                                      */
459 } SAADC_EVENTS_CH_Type;                         /*!< Size = 8 (0x8)                                                            */
460 
461 
462 /**
463   * @brief SAADC_CH [CH] (Unspecified)
464   */
465 typedef struct {
466   __IOM uint32_t  PSELP;                        /*!< (@ 0x00000000) Description cluster: Input positive pin selection
467                                                                     for CH[n]                                                  */
468   __IOM uint32_t  PSELN;                        /*!< (@ 0x00000004) Description cluster: Input negative pin selection
469                                                                     for CH[n]                                                  */
470   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000008) Description cluster: Input configuration for
471                                                                     CH[n]                                                      */
472   __IOM uint32_t  LIMIT;                        /*!< (@ 0x0000000C) Description cluster: High/low limits for event
473                                                                     monitoring a channel                                       */
474 } SAADC_CH_Type;                                /*!< Size = 16 (0x10)                                                          */
475 
476 
477 /**
478   * @brief SAADC_RESULT [RESULT] (RESULT EasyDMA channel)
479   */
480 typedef struct {
481   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
482   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of buffer words to transfer                 */
483   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of buffer words transferred since last
484                                                                     START                                                      */
485 } SAADC_RESULT_Type;                            /*!< Size = 12 (0xc)                                                           */
486 
487 
488 /**
489   * @brief QDEC_PSEL [PSEL] (Unspecified)
490   */
491 typedef struct {
492   __IOM uint32_t  LED;                          /*!< (@ 0x00000000) Pin select for LED signal                                  */
493   __IOM uint32_t  A;                            /*!< (@ 0x00000004) Pin select for A signal                                    */
494   __IOM uint32_t  B;                            /*!< (@ 0x00000008) Pin select for B signal                                    */
495 } QDEC_PSEL_Type;                               /*!< Size = 12 (0xc)                                                           */
496 
497 
498 /**
499   * @brief PWM_SEQ [SEQ] (Unspecified)
500   */
501 typedef struct {
502   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Description cluster: Beginning address in Data
503                                                                     RAM of this sequence                                       */
504   __IOM uint32_t  CNT;                          /*!< (@ 0x00000004) Description cluster: Amount of values (duty cycles)
505                                                                     in this sequence                                           */
506   __IOM uint32_t  REFRESH;                      /*!< (@ 0x00000008) Description cluster: Amount of additional PWM
507                                                                     periods between samples loaded into compare
508                                                                     register                                                   */
509   __IOM uint32_t  ENDDELAY;                     /*!< (@ 0x0000000C) Description cluster: Time added after the sequence         */
510   __IM  uint32_t  RESERVED[4];
511 } PWM_SEQ_Type;                                 /*!< Size = 32 (0x20)                                                          */
512 
513 
514 /**
515   * @brief PWM_PSEL [PSEL] (Unspecified)
516   */
517 typedef struct {
518   __IOM uint32_t  OUT[4];                       /*!< (@ 0x00000000) Description collection: Output pin select for
519                                                                     PWM channel n                                              */
520 } PWM_PSEL_Type;                                /*!< Size = 16 (0x10)                                                          */
521 
522 
523 /**
524   * @brief PDM_PSEL [PSEL] (Unspecified)
525   */
526 typedef struct {
527   __IOM uint32_t  CLK;                          /*!< (@ 0x00000000) Pin number configuration for PDM CLK signal                */
528   __IOM uint32_t  DIN;                          /*!< (@ 0x00000004) Pin number configuration for PDM DIN signal                */
529 } PDM_PSEL_Type;                                /*!< Size = 8 (0x8)                                                            */
530 
531 
532 /**
533   * @brief PDM_SAMPLE [SAMPLE] (Unspecified)
534   */
535 typedef struct {
536   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) RAM address pointer to write samples to with
537                                                                     EasyDMA                                                    */
538   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Number of samples to allocate memory for in EasyDMA
539                                                                     mode                                                       */
540 } PDM_SAMPLE_Type;                              /*!< Size = 8 (0x8)                                                            */
541 
542 
543 /**
544   * @brief PPI_TASKS_CHG [TASKS_CHG] (Channel group tasks)
545   */
546 typedef struct {
547   __OM  uint32_t  EN;                           /*!< (@ 0x00000000) Description cluster: Enable channel group n                */
548   __OM  uint32_t  DIS;                          /*!< (@ 0x00000004) Description cluster: Disable channel group n               */
549 } PPI_TASKS_CHG_Type;                           /*!< Size = 8 (0x8)                                                            */
550 
551 
552 /**
553   * @brief PPI_CH [CH] (PPI Channel)
554   */
555 typedef struct {
556   __IOM uint32_t  EEP;                          /*!< (@ 0x00000000) Description cluster: Channel n event end-point             */
557   __IOM uint32_t  TEP;                          /*!< (@ 0x00000004) Description cluster: Channel n task end-point              */
558 } PPI_CH_Type;                                  /*!< Size = 8 (0x8)                                                            */
559 
560 
561 /**
562   * @brief PPI_FORK [FORK] (Fork)
563   */
564 typedef struct {
565   __IOM uint32_t  TEP;                          /*!< (@ 0x00000000) Description cluster: Channel n task end-point              */
566 } PPI_FORK_Type;                                /*!< Size = 4 (0x4)                                                            */
567 
568 
569 /**
570   * @brief MWU_EVENTS_REGION [EVENTS_REGION] (Peripheral events.)
571   */
572 typedef struct {
573   __IOM uint32_t  WA;                           /*!< (@ 0x00000000) Description cluster: Write access to region n
574                                                                     detected                                                   */
575   __IOM uint32_t  RA;                           /*!< (@ 0x00000004) Description cluster: Read access to region n
576                                                                     detected                                                   */
577 } MWU_EVENTS_REGION_Type;                       /*!< Size = 8 (0x8)                                                            */
578 
579 
580 /**
581   * @brief MWU_EVENTS_PREGION [EVENTS_PREGION] (Peripheral events.)
582   */
583 typedef struct {
584   __IOM uint32_t  WA;                           /*!< (@ 0x00000000) Description cluster: Write access to peripheral
585                                                                     region n detected                                          */
586   __IOM uint32_t  RA;                           /*!< (@ 0x00000004) Description cluster: Read access to peripheral
587                                                                     region n detected                                          */
588 } MWU_EVENTS_PREGION_Type;                      /*!< Size = 8 (0x8)                                                            */
589 
590 
591 /**
592   * @brief MWU_PERREGION [PERREGION] (Unspecified)
593   */
594 typedef struct {
595   __IOM uint32_t  SUBSTATWA;                    /*!< (@ 0x00000000) Description cluster: Source of event/interrupt
596                                                                     in region n, write access detected while
597                                                                     corresponding subregion was enabled for
598                                                                     watching                                                   */
599   __IOM uint32_t  SUBSTATRA;                    /*!< (@ 0x00000004) Description cluster: Source of event/interrupt
600                                                                     in region n, read access detected while
601                                                                     corresponding subregion was enabled for
602                                                                     watching                                                   */
603 } MWU_PERREGION_Type;                           /*!< Size = 8 (0x8)                                                            */
604 
605 
606 /**
607   * @brief MWU_REGION [REGION] (Unspecified)
608   */
609 typedef struct {
610   __IOM uint32_t  START;                        /*!< (@ 0x00000000) Description cluster: Start address for region
611                                                                     n                                                          */
612   __IOM uint32_t  END;                          /*!< (@ 0x00000004) Description cluster: End address of region n               */
613   __IM  uint32_t  RESERVED[2];
614 } MWU_REGION_Type;                              /*!< Size = 16 (0x10)                                                          */
615 
616 
617 /**
618   * @brief MWU_PREGION [PREGION] (Unspecified)
619   */
620 typedef struct {
621   __IM  uint32_t  START;                        /*!< (@ 0x00000000) Description cluster: Reserved for future use               */
622   __IM  uint32_t  END;                          /*!< (@ 0x00000004) Description cluster: Reserved for future use               */
623   __IOM uint32_t  SUBS;                         /*!< (@ 0x00000008) Description cluster: Subregions of region n                */
624   __IM  uint32_t  RESERVED;
625 } MWU_PREGION_Type;                             /*!< Size = 16 (0x10)                                                          */
626 
627 
628 /**
629   * @brief I2S_CONFIG [CONFIG] (Unspecified)
630   */
631 typedef struct {
632   __IOM uint32_t  MODE;                         /*!< (@ 0x00000000) I2S mode.                                                  */
633   __IOM uint32_t  RXEN;                         /*!< (@ 0x00000004) Reception (RX) enable.                                     */
634   __IOM uint32_t  TXEN;                         /*!< (@ 0x00000008) Transmission (TX) enable.                                  */
635   __IOM uint32_t  MCKEN;                        /*!< (@ 0x0000000C) Master clock generator enable.                             */
636   __IOM uint32_t  MCKFREQ;                      /*!< (@ 0x00000010) Master clock generator frequency.                          */
637   __IOM uint32_t  RATIO;                        /*!< (@ 0x00000014) MCK / LRCK ratio.                                          */
638   __IOM uint32_t  SWIDTH;                       /*!< (@ 0x00000018) Sample width.                                              */
639   __IOM uint32_t  ALIGN;                        /*!< (@ 0x0000001C) Alignment of sample within a frame.                        */
640   __IOM uint32_t  FORMAT;                       /*!< (@ 0x00000020) Frame format.                                              */
641   __IOM uint32_t  CHANNELS;                     /*!< (@ 0x00000024) Enable channels.                                           */
642 } I2S_CONFIG_Type;                              /*!< Size = 40 (0x28)                                                          */
643 
644 
645 /**
646   * @brief I2S_RXD [RXD] (Unspecified)
647   */
648 typedef struct {
649   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Receive buffer RAM start address.                          */
650 } I2S_RXD_Type;                                 /*!< Size = 4 (0x4)                                                            */
651 
652 
653 /**
654   * @brief I2S_TXD [TXD] (Unspecified)
655   */
656 typedef struct {
657   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Transmit buffer RAM start address.                         */
658 } I2S_TXD_Type;                                 /*!< Size = 4 (0x4)                                                            */
659 
660 
661 /**
662   * @brief I2S_RXTXD [RXTXD] (Unspecified)
663   */
664 typedef struct {
665   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000000) Size of RXD and TXD buffers.                               */
666 } I2S_RXTXD_Type;                               /*!< Size = 4 (0x4)                                                            */
667 
668 
669 /**
670   * @brief I2S_PSEL [PSEL] (Unspecified)
671   */
672 typedef struct {
673   __IOM uint32_t  MCK;                          /*!< (@ 0x00000000) Pin select for MCK signal.                                 */
674   __IOM uint32_t  SCK;                          /*!< (@ 0x00000004) Pin select for SCK signal.                                 */
675   __IOM uint32_t  LRCK;                         /*!< (@ 0x00000008) Pin select for LRCK signal.                                */
676   __IOM uint32_t  SDIN;                         /*!< (@ 0x0000000C) Pin select for SDIN signal.                                */
677   __IOM uint32_t  SDOUT;                        /*!< (@ 0x00000010) Pin select for SDOUT signal.                               */
678 } I2S_PSEL_Type;                                /*!< Size = 20 (0x14)                                                          */
679 
680 
681 /** @} */ /* End of group Device_Peripheral_clusters */
682 
683 
684 /* =========================================================================================================================== */
685 /* ================                            Device Specific Peripheral Section                             ================ */
686 /* =========================================================================================================================== */
687 
688 
689 /** @addtogroup Device_Peripheral_peripherals
690   * @{
691   */
692 
693 
694 
695 /* =========================================================================================================================== */
696 /* ================                                           FICR                                            ================ */
697 /* =========================================================================================================================== */
698 
699 
700 /**
701   * @brief Factory Information Configuration Registers (FICR)
702   */
703 
704 typedef struct {                                /*!< (@ 0x10000000) FICR Structure                                             */
705   __IM  uint32_t  RESERVED[4];
706   __IM  uint32_t  CODEPAGESIZE;                 /*!< (@ 0x00000010) Code memory page size                                      */
707   __IM  uint32_t  CODESIZE;                     /*!< (@ 0x00000014) Code memory size                                           */
708   __IM  uint32_t  RESERVED1[18];
709   __IM  uint32_t  DEVICEID[2];                  /*!< (@ 0x00000060) Description collection: Device identifier                  */
710   __IM  uint32_t  RESERVED2[6];
711   __IM  uint32_t  ER[4];                        /*!< (@ 0x00000080) Description collection: Encryption Root, word
712                                                                     n                                                          */
713   __IM  uint32_t  IR[4];                        /*!< (@ 0x00000090) Description collection: Identity Root, word n              */
714   __IM  uint32_t  DEVICEADDRTYPE;               /*!< (@ 0x000000A0) Device address type                                        */
715   __IM  uint32_t  DEVICEADDR[2];                /*!< (@ 0x000000A4) Description collection: Device address n                   */
716   __IM  uint32_t  RESERVED3[21];
717   __IOM FICR_INFO_Type INFO;                    /*!< (@ 0x00000100) Device info                                                */
718   __IM  uint32_t  RESERVED4[188];
719   __IOM FICR_TEMP_Type TEMP;                    /*!< (@ 0x00000404) Registers storing factory TEMP module linearization
720                                                                     coefficients                                               */
721   __IM  uint32_t  RESERVED5[2];
722   __IOM FICR_NFC_Type NFC;                      /*!< (@ 0x00000450) Unspecified                                                */
723 } NRF_FICR_Type;                                /*!< Size = 1120 (0x460)                                                       */
724 
725 
726 
727 /* =========================================================================================================================== */
728 /* ================                                           UICR                                            ================ */
729 /* =========================================================================================================================== */
730 
731 
732 /**
733   * @brief User Information Configuration Registers (UICR)
734   */
735 
736 typedef struct {                                /*!< (@ 0x10001000) UICR Structure                                             */
737   __IM  uint32_t  RESERVED[5];
738   __IOM uint32_t  NRFFW[15];                    /*!< (@ 0x00000014) Description collection: Reserved for Nordic firmware
739                                                                     design                                                     */
740   __IOM uint32_t  NRFHW[12];                    /*!< (@ 0x00000050) Description collection: Reserved for Nordic hardware
741                                                                     design                                                     */
742   __IOM uint32_t  CUSTOMER[32];                 /*!< (@ 0x00000080) Description collection: Reserved for customer              */
743   __IM  uint32_t  RESERVED1[64];
744   __IOM uint32_t  PSELRESET[2];                 /*!< (@ 0x00000200) Description collection: Mapping of the nRESET
745                                                                     function (see POWER chapter for details)                   */
746   __IOM uint32_t  APPROTECT;                    /*!< (@ 0x00000208) Access port protection                                     */
747   __IOM uint32_t  NFCPINS;                      /*!< (@ 0x0000020C) Setting of pins dedicated to NFC functionality:
748                                                                     NFC antenna or GPIO                                        */
749 } NRF_UICR_Type;                                /*!< Size = 528 (0x210)                                                        */
750 
751 
752 
753 /* =========================================================================================================================== */
754 /* ================                                         APPROTECT                                         ================ */
755 /* =========================================================================================================================== */
756 
757 
758 /**
759   * @brief Access Port Protection (APPROTECT)
760   */
761 
762 typedef struct {                                /*!< (@ 0x40000000) APPROTECT Structure                                        */
763   __IM  uint32_t  RESERVED[340];
764   __IOM uint32_t  FORCEPROTECT;                 /*!< (@ 0x00000550) Software force enable APPROTECT mechanism until
765                                                                     next reset. This register can only be written
766                                                                     once.                                                      */
767   __IM  uint32_t  RESERVED1;
768   __IOM uint32_t  DISABLE;                      /*!< (@ 0x00000558) Software disable APPROTECT mechanism                       */
769 } NRF_APPROTECT_Type;                           /*!< Size = 1372 (0x55c)                                                       */
770 
771 
772 
773 /* =========================================================================================================================== */
774 /* ================                                           BPROT                                           ================ */
775 /* =========================================================================================================================== */
776 
777 
778 /**
779   * @brief Block Protect (BPROT)
780   */
781 
782 typedef struct {                                /*!< (@ 0x40000000) BPROT Structure                                            */
783   __IM  uint32_t  RESERVED[384];
784   __IOM uint32_t  CONFIG0;                      /*!< (@ 0x00000600) Block protect configuration register 0                     */
785   __IOM uint32_t  CONFIG1;                      /*!< (@ 0x00000604) Block protect configuration register 1                     */
786   __IOM uint32_t  DISABLEINDEBUG;               /*!< (@ 0x00000608) Disable protection mechanism in debug interface
787                                                                     mode                                                       */
788   __IM  uint32_t  RESERVED1;
789   __IOM uint32_t  CONFIG2;                      /*!< (@ 0x00000610) Block protect configuration register 2                     */
790   __IOM uint32_t  CONFIG3;                      /*!< (@ 0x00000614) Block protect configuration register 3                     */
791 } NRF_BPROT_Type;                               /*!< Size = 1560 (0x618)                                                       */
792 
793 
794 
795 /* =========================================================================================================================== */
796 /* ================                                           CLOCK                                           ================ */
797 /* =========================================================================================================================== */
798 
799 
800 /**
801   * @brief Clock control (CLOCK)
802   */
803 
804 typedef struct {                                /*!< (@ 0x40000000) CLOCK Structure                                            */
805   __OM  uint32_t  TASKS_HFCLKSTART;             /*!< (@ 0x00000000) Start HFCLK crystal oscillator                             */
806   __OM  uint32_t  TASKS_HFCLKSTOP;              /*!< (@ 0x00000004) Stop HFCLK crystal oscillator                              */
807   __OM  uint32_t  TASKS_LFCLKSTART;             /*!< (@ 0x00000008) Start LFCLK source                                         */
808   __OM  uint32_t  TASKS_LFCLKSTOP;              /*!< (@ 0x0000000C) Stop LFCLK source                                          */
809   __OM  uint32_t  TASKS_CAL;                    /*!< (@ 0x00000010) Start calibration of LFRC oscillator                       */
810   __OM  uint32_t  TASKS_CTSTART;                /*!< (@ 0x00000014) Start calibration timer                                    */
811   __OM  uint32_t  TASKS_CTSTOP;                 /*!< (@ 0x00000018) Stop calibration timer                                     */
812   __IM  uint32_t  RESERVED[57];
813   __IOM uint32_t  EVENTS_HFCLKSTARTED;          /*!< (@ 0x00000100) HFCLK oscillator started                                   */
814   __IOM uint32_t  EVENTS_LFCLKSTARTED;          /*!< (@ 0x00000104) LFCLK started                                              */
815   __IM  uint32_t  RESERVED1;
816   __IOM uint32_t  EVENTS_DONE;                  /*!< (@ 0x0000010C) Calibration of LFCLK RC oscillator complete event          */
817   __IOM uint32_t  EVENTS_CTTO;                  /*!< (@ 0x00000110) Calibration timer timeout                                  */
818   __IM  uint32_t  RESERVED2[124];
819   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
820   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
821   __IM  uint32_t  RESERVED3[63];
822   __IM  uint32_t  HFCLKRUN;                     /*!< (@ 0x00000408) Status indicating that HFCLKSTART task has been
823                                                                     triggered                                                  */
824   __IM  uint32_t  HFCLKSTAT;                    /*!< (@ 0x0000040C) HFCLK status                                               */
825   __IM  uint32_t  RESERVED4;
826   __IM  uint32_t  LFCLKRUN;                     /*!< (@ 0x00000414) Status indicating that LFCLKSTART task has been
827                                                                     triggered                                                  */
828   __IM  uint32_t  LFCLKSTAT;                    /*!< (@ 0x00000418) LFCLK status                                               */
829   __IM  uint32_t  LFCLKSRCCOPY;                 /*!< (@ 0x0000041C) Copy of LFCLKSRC register, set when LFCLKSTART
830                                                                     task was triggered                                         */
831   __IM  uint32_t  RESERVED5[62];
832   __IOM uint32_t  LFCLKSRC;                     /*!< (@ 0x00000518) Clock source for the LFCLK                                 */
833   __IM  uint32_t  RESERVED6[7];
834   __IOM uint32_t  CTIV;                         /*!< (@ 0x00000538) Calibration timer interval                                 */
835   __IM  uint32_t  RESERVED7[8];
836   __IOM uint32_t  TRACECONFIG;                  /*!< (@ 0x0000055C) Clocking options for the Trace Port debug interface        */
837 } NRF_CLOCK_Type;                               /*!< Size = 1376 (0x560)                                                       */
838 
839 
840 
841 /* =========================================================================================================================== */
842 /* ================                                           POWER                                           ================ */
843 /* =========================================================================================================================== */
844 
845 
846 /**
847   * @brief Power control (POWER)
848   */
849 
850 typedef struct {                                /*!< (@ 0x40000000) POWER Structure                                            */
851   __IM  uint32_t  RESERVED[30];
852   __OM  uint32_t  TASKS_CONSTLAT;               /*!< (@ 0x00000078) Enable constant latency mode                               */
853   __OM  uint32_t  TASKS_LOWPWR;                 /*!< (@ 0x0000007C) Enable low power mode (variable latency)                   */
854   __IM  uint32_t  RESERVED1[34];
855   __IOM uint32_t  EVENTS_POFWARN;               /*!< (@ 0x00000108) Power failure warning                                      */
856   __IM  uint32_t  RESERVED2[2];
857   __IOM uint32_t  EVENTS_SLEEPENTER;            /*!< (@ 0x00000114) CPU entered WFI/WFE sleep                                  */
858   __IOM uint32_t  EVENTS_SLEEPEXIT;             /*!< (@ 0x00000118) CPU exited WFI/WFE sleep                                   */
859   __IM  uint32_t  RESERVED3[122];
860   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
861   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
862   __IM  uint32_t  RESERVED4[61];
863   __IOM uint32_t  RESETREAS;                    /*!< (@ 0x00000400) Reset reason                                               */
864   __IM  uint32_t  RESERVED5[9];
865   __IM  uint32_t  RAMSTATUS;                    /*!< (@ 0x00000428) Deprecated register - RAM status register                  */
866   __IM  uint32_t  RESERVED6[53];
867   __OM  uint32_t  SYSTEMOFF;                    /*!< (@ 0x00000500) System OFF register                                        */
868   __IM  uint32_t  RESERVED7[3];
869   __IOM uint32_t  POFCON;                       /*!< (@ 0x00000510) Power failure comparator configuration                     */
870   __IM  uint32_t  RESERVED8[2];
871   __IOM uint32_t  GPREGRET;                     /*!< (@ 0x0000051C) General purpose retention register                         */
872   __IOM uint32_t  GPREGRET2;                    /*!< (@ 0x00000520) General purpose retention register                         */
873   __IOM uint32_t  RAMON;                        /*!< (@ 0x00000524) Deprecated register - RAM on/off register (this
874                                                                     register is retained)                                      */
875   __IM  uint32_t  RESERVED9[11];
876   __IOM uint32_t  RAMONB;                       /*!< (@ 0x00000554) Deprecated register - RAM on/off register (this
877                                                                     register is retained)                                      */
878   __IM  uint32_t  RESERVED10[8];
879   __IOM uint32_t  DCDCEN;                       /*!< (@ 0x00000578) DC/DC enable register                                      */
880   __IM  uint32_t  RESERVED11[225];
881   __IOM POWER_RAM_Type RAM[8];                  /*!< (@ 0x00000900) Unspecified                                                */
882 } NRF_POWER_Type;                               /*!< Size = 2432 (0x980)                                                       */
883 
884 
885 
886 /* =========================================================================================================================== */
887 /* ================                                            P0                                             ================ */
888 /* =========================================================================================================================== */
889 
890 
891 /**
892   * @brief GPIO Port 1 (P0)
893   */
894 
895 typedef struct {                                /*!< (@ 0x50000000) P0 Structure                                               */
896   __IM  uint32_t  RESERVED[321];
897   __IOM uint32_t  OUT;                          /*!< (@ 0x00000504) Write GPIO port                                            */
898   __IOM uint32_t  OUTSET;                       /*!< (@ 0x00000508) Set individual bits in GPIO port                           */
899   __IOM uint32_t  OUTCLR;                       /*!< (@ 0x0000050C) Clear individual bits in GPIO port                         */
900   __IM  uint32_t  IN;                           /*!< (@ 0x00000510) Read GPIO port                                             */
901   __IOM uint32_t  DIR;                          /*!< (@ 0x00000514) Direction of GPIO pins                                     */
902   __IOM uint32_t  DIRSET;                       /*!< (@ 0x00000518) DIR set register                                           */
903   __IOM uint32_t  DIRCLR;                       /*!< (@ 0x0000051C) DIR clear register                                         */
904   __IOM uint32_t  LATCH;                        /*!< (@ 0x00000520) Latch register indicating what GPIO pins that
905                                                                     have met the criteria set in the PIN_CNF[n].SENSE
906                                                                     registers                                                  */
907   __IOM uint32_t  DETECTMODE;                   /*!< (@ 0x00000524) Select between default DETECT signal behaviour
908                                                                     and LDETECT mode                                           */
909   __IM  uint32_t  RESERVED1[118];
910   __IOM uint32_t  PIN_CNF[32];                  /*!< (@ 0x00000700) Description collection: Configuration of GPIO
911                                                                     pins                                                       */
912 } NRF_GPIO_Type;                                /*!< Size = 1920 (0x780)                                                       */
913 
914 
915 
916 /* =========================================================================================================================== */
917 /* ================                                           RADIO                                           ================ */
918 /* =========================================================================================================================== */
919 
920 
921 /**
922   * @brief 2.4 GHz Radio (RADIO)
923   */
924 
925 typedef struct {                                /*!< (@ 0x40001000) RADIO Structure                                            */
926   __OM  uint32_t  TASKS_TXEN;                   /*!< (@ 0x00000000) Enable RADIO in TX mode                                    */
927   __OM  uint32_t  TASKS_RXEN;                   /*!< (@ 0x00000004) Enable RADIO in RX mode                                    */
928   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000008) Start RADIO                                                */
929   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x0000000C) Stop RADIO                                                 */
930   __OM  uint32_t  TASKS_DISABLE;                /*!< (@ 0x00000010) Disable RADIO                                              */
931   __OM  uint32_t  TASKS_RSSISTART;              /*!< (@ 0x00000014) Start the RSSI and take one single sample of
932                                                                     the receive signal strength.                               */
933   __OM  uint32_t  TASKS_RSSISTOP;               /*!< (@ 0x00000018) Stop the RSSI measurement                                  */
934   __OM  uint32_t  TASKS_BCSTART;                /*!< (@ 0x0000001C) Start the bit counter                                      */
935   __OM  uint32_t  TASKS_BCSTOP;                 /*!< (@ 0x00000020) Stop the bit counter                                       */
936   __IM  uint32_t  RESERVED[55];
937   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000100) RADIO has ramped up and is ready to be started             */
938   __IOM uint32_t  EVENTS_ADDRESS;               /*!< (@ 0x00000104) Address sent or received                                   */
939   __IOM uint32_t  EVENTS_PAYLOAD;               /*!< (@ 0x00000108) Packet payload sent or received                            */
940   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x0000010C) Packet sent or received                                    */
941   __IOM uint32_t  EVENTS_DISABLED;              /*!< (@ 0x00000110) RADIO has been disabled                                    */
942   __IOM uint32_t  EVENTS_DEVMATCH;              /*!< (@ 0x00000114) A device address match occurred on the last received
943                                                                     packet                                                     */
944   __IOM uint32_t  EVENTS_DEVMISS;               /*!< (@ 0x00000118) No device address match occurred on the last
945                                                                     received packet                                            */
946   __IOM uint32_t  EVENTS_RSSIEND;               /*!< (@ 0x0000011C) Sampling of receive signal strength complete.              */
947   __IM  uint32_t  RESERVED1[2];
948   __IOM uint32_t  EVENTS_BCMATCH;               /*!< (@ 0x00000128) Bit counter reached bit count value.                       */
949   __IM  uint32_t  RESERVED2;
950   __IOM uint32_t  EVENTS_CRCOK;                 /*!< (@ 0x00000130) Packet received with CRC ok                                */
951   __IOM uint32_t  EVENTS_CRCERROR;              /*!< (@ 0x00000134) Packet received with CRC error                             */
952   __IM  uint32_t  RESERVED3[50];
953   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
954   __IM  uint32_t  RESERVED4[64];
955   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
956   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
957   __IM  uint32_t  RESERVED5[61];
958   __IM  uint32_t  CRCSTATUS;                    /*!< (@ 0x00000400) CRC status                                                 */
959   __IM  uint32_t  RESERVED6;
960   __IM  uint32_t  RXMATCH;                      /*!< (@ 0x00000408) Received address                                           */
961   __IM  uint32_t  RXCRC;                        /*!< (@ 0x0000040C) CRC field of previously received packet                    */
962   __IM  uint32_t  DAI;                          /*!< (@ 0x00000410) Device address match index                                 */
963   __IM  uint32_t  RESERVED7[60];
964   __IOM uint32_t  PACKETPTR;                    /*!< (@ 0x00000504) Packet pointer                                             */
965   __IOM uint32_t  FREQUENCY;                    /*!< (@ 0x00000508) Frequency                                                  */
966   __IOM uint32_t  TXPOWER;                      /*!< (@ 0x0000050C) Output power                                               */
967   __IOM uint32_t  MODE;                         /*!< (@ 0x00000510) Data rate and modulation                                   */
968   __IOM uint32_t  PCNF0;                        /*!< (@ 0x00000514) Packet configuration register 0                            */
969   __IOM uint32_t  PCNF1;                        /*!< (@ 0x00000518) Packet configuration register 1                            */
970   __IOM uint32_t  BASE0;                        /*!< (@ 0x0000051C) Base address 0                                             */
971   __IOM uint32_t  BASE1;                        /*!< (@ 0x00000520) Base address 1                                             */
972   __IOM uint32_t  PREFIX0;                      /*!< (@ 0x00000524) Prefixes bytes for logical addresses 0-3                   */
973   __IOM uint32_t  PREFIX1;                      /*!< (@ 0x00000528) Prefixes bytes for logical addresses 4-7                   */
974   __IOM uint32_t  TXADDRESS;                    /*!< (@ 0x0000052C) Transmit address select                                    */
975   __IOM uint32_t  RXADDRESSES;                  /*!< (@ 0x00000530) Receive address select                                     */
976   __IOM uint32_t  CRCCNF;                       /*!< (@ 0x00000534) CRC configuration                                          */
977   __IOM uint32_t  CRCPOLY;                      /*!< (@ 0x00000538) CRC polynomial                                             */
978   __IOM uint32_t  CRCINIT;                      /*!< (@ 0x0000053C) CRC initial value                                          */
979   __IM  uint32_t  RESERVED8;
980   __IOM uint32_t  TIFS;                         /*!< (@ 0x00000544) Inter Frame Spacing in us                                  */
981   __IM  uint32_t  RSSISAMPLE;                   /*!< (@ 0x00000548) RSSI sample                                                */
982   __IM  uint32_t  RESERVED9;
983   __IM  uint32_t  STATE;                        /*!< (@ 0x00000550) Current radio state                                        */
984   __IOM uint32_t  DATAWHITEIV;                  /*!< (@ 0x00000554) Data whitening initial value                               */
985   __IM  uint32_t  RESERVED10[2];
986   __IOM uint32_t  BCC;                          /*!< (@ 0x00000560) Bit counter compare                                        */
987   __IM  uint32_t  RESERVED11[39];
988   __IOM uint32_t  DAB[8];                       /*!< (@ 0x00000600) Description collection: Device address base segment
989                                                                     n                                                          */
990   __IOM uint32_t  DAP[8];                       /*!< (@ 0x00000620) Description collection: Device address prefix
991                                                                     n                                                          */
992   __IOM uint32_t  DACNF;                        /*!< (@ 0x00000640) Device address match configuration                         */
993   __IM  uint32_t  RESERVED12[3];
994   __IOM uint32_t  MODECNF0;                     /*!< (@ 0x00000650) Radio mode configuration register 0                        */
995   __IM  uint32_t  RESERVED13[618];
996   __IOM uint32_t  POWER;                        /*!< (@ 0x00000FFC) Peripheral power control                                   */
997 } NRF_RADIO_Type;                               /*!< Size = 4096 (0x1000)                                                      */
998 
999 
1000 
1001 /* =========================================================================================================================== */
1002 /* ================                                           UART0                                           ================ */
1003 /* =========================================================================================================================== */
1004 
1005 
1006 /**
1007   * @brief Universal Asynchronous Receiver/Transmitter (UART0)
1008   */
1009 
1010 typedef struct {                                /*!< (@ 0x40002000) UART0 Structure                                            */
1011   __OM  uint32_t  TASKS_STARTRX;                /*!< (@ 0x00000000) Start UART receiver                                        */
1012   __OM  uint32_t  TASKS_STOPRX;                 /*!< (@ 0x00000004) Stop UART receiver                                         */
1013   __OM  uint32_t  TASKS_STARTTX;                /*!< (@ 0x00000008) Start UART transmitter                                     */
1014   __OM  uint32_t  TASKS_STOPTX;                 /*!< (@ 0x0000000C) Stop UART transmitter                                      */
1015   __IM  uint32_t  RESERVED[3];
1016   __OM  uint32_t  TASKS_SUSPEND;                /*!< (@ 0x0000001C) Suspend UART                                               */
1017   __IM  uint32_t  RESERVED1[56];
1018   __IOM uint32_t  EVENTS_CTS;                   /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send.                 */
1019   __IOM uint32_t  EVENTS_NCTS;                  /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send.          */
1020   __IOM uint32_t  EVENTS_RXDRDY;                /*!< (@ 0x00000108) Data received in RXD                                       */
1021   __IM  uint32_t  RESERVED2[4];
1022   __IOM uint32_t  EVENTS_TXDRDY;                /*!< (@ 0x0000011C) Data sent from TXD                                         */
1023   __IM  uint32_t  RESERVED3;
1024   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000124) Error detected                                             */
1025   __IM  uint32_t  RESERVED4[7];
1026   __IOM uint32_t  EVENTS_RXTO;                  /*!< (@ 0x00000144) Receiver timeout                                           */
1027   __IM  uint32_t  RESERVED5[46];
1028   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1029   __IM  uint32_t  RESERVED6[64];
1030   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1031   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1032   __IM  uint32_t  RESERVED7[93];
1033   __IOM uint32_t  ERRORSRC;                     /*!< (@ 0x00000480) Error source                                               */
1034   __IM  uint32_t  RESERVED8[31];
1035   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable UART                                                */
1036   __IM  uint32_t  RESERVED9;
1037   __IOM uint32_t  PSELRTS;                      /*!< (@ 0x00000508) Pin select for RTS                                         */
1038   __IOM uint32_t  PSELTXD;                      /*!< (@ 0x0000050C) Pin select for TXD                                         */
1039   __IOM uint32_t  PSELCTS;                      /*!< (@ 0x00000510) Pin select for CTS                                         */
1040   __IOM uint32_t  PSELRXD;                      /*!< (@ 0x00000514) Pin select for RXD                                         */
1041   __IM  uint32_t  RXD;                          /*!< (@ 0x00000518) RXD register                                               */
1042   __OM  uint32_t  TXD;                          /*!< (@ 0x0000051C) TXD register                                               */
1043   __IM  uint32_t  RESERVED10;
1044   __IOM uint32_t  BAUDRATE;                     /*!< (@ 0x00000524) Baud rate                                                  */
1045   __IM  uint32_t  RESERVED11[17];
1046   __IOM uint32_t  CONFIG;                       /*!< (@ 0x0000056C) Configuration of parity and hardware flow control          */
1047 } NRF_UART_Type;                                /*!< Size = 1392 (0x570)                                                       */
1048 
1049 
1050 
1051 /* =========================================================================================================================== */
1052 /* ================                                          UARTE0                                           ================ */
1053 /* =========================================================================================================================== */
1054 
1055 
1056 /**
1057   * @brief UART with EasyDMA (UARTE0)
1058   */
1059 
1060 typedef struct {                                /*!< (@ 0x40002000) UARTE0 Structure                                           */
1061   __OM  uint32_t  TASKS_STARTRX;                /*!< (@ 0x00000000) Start UART receiver                                        */
1062   __OM  uint32_t  TASKS_STOPRX;                 /*!< (@ 0x00000004) Stop UART receiver                                         */
1063   __OM  uint32_t  TASKS_STARTTX;                /*!< (@ 0x00000008) Start UART transmitter                                     */
1064   __OM  uint32_t  TASKS_STOPTX;                 /*!< (@ 0x0000000C) Stop UART transmitter                                      */
1065   __IM  uint32_t  RESERVED[7];
1066   __OM  uint32_t  TASKS_FLUSHRX;                /*!< (@ 0x0000002C) Flush RX FIFO into RX buffer                               */
1067   __IM  uint32_t  RESERVED1[52];
1068   __IOM uint32_t  EVENTS_CTS;                   /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send.                 */
1069   __IOM uint32_t  EVENTS_NCTS;                  /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send.          */
1070   __IOM uint32_t  EVENTS_RXDRDY;                /*!< (@ 0x00000108) Data received in RXD (but potentially not yet
1071                                                                     transferred to Data RAM)                                   */
1072   __IM  uint32_t  RESERVED2;
1073   __IOM uint32_t  EVENTS_ENDRX;                 /*!< (@ 0x00000110) Receive buffer is filled up                                */
1074   __IM  uint32_t  RESERVED3[2];
1075   __IOM uint32_t  EVENTS_TXDRDY;                /*!< (@ 0x0000011C) Data sent from TXD                                         */
1076   __IOM uint32_t  EVENTS_ENDTX;                 /*!< (@ 0x00000120) Last TX byte transmitted                                   */
1077   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000124) Error detected                                             */
1078   __IM  uint32_t  RESERVED4[7];
1079   __IOM uint32_t  EVENTS_RXTO;                  /*!< (@ 0x00000144) Receiver timeout                                           */
1080   __IM  uint32_t  RESERVED5;
1081   __IOM uint32_t  EVENTS_RXSTARTED;             /*!< (@ 0x0000014C) UART receiver has started                                  */
1082   __IOM uint32_t  EVENTS_TXSTARTED;             /*!< (@ 0x00000150) UART transmitter has started                               */
1083   __IM  uint32_t  RESERVED6;
1084   __IOM uint32_t  EVENTS_TXSTOPPED;             /*!< (@ 0x00000158) Transmitter stopped                                        */
1085   __IM  uint32_t  RESERVED7[41];
1086   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1087   __IM  uint32_t  RESERVED8[63];
1088   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1089   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1090   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1091   __IM  uint32_t  RESERVED9[93];
1092   __IOM uint32_t  ERRORSRC;                     /*!< (@ 0x00000480) Error source                                               */
1093   __IM  uint32_t  RESERVED10[31];
1094   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable UART                                                */
1095   __IM  uint32_t  RESERVED11;
1096   __IOM UARTE_PSEL_Type PSEL;                   /*!< (@ 0x00000508) Unspecified                                                */
1097   __IM  uint32_t  RESERVED12[3];
1098   __IOM uint32_t  BAUDRATE;                     /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source
1099                                                                     selected.                                                  */
1100   __IM  uint32_t  RESERVED13[3];
1101   __IOM UARTE_RXD_Type RXD;                     /*!< (@ 0x00000534) RXD EasyDMA channel                                        */
1102   __IM  uint32_t  RESERVED14;
1103   __IOM UARTE_TXD_Type TXD;                     /*!< (@ 0x00000544) TXD EasyDMA channel                                        */
1104   __IM  uint32_t  RESERVED15[7];
1105   __IOM uint32_t  CONFIG;                       /*!< (@ 0x0000056C) Configuration of parity and hardware flow control          */
1106 } NRF_UARTE_Type;                               /*!< Size = 1392 (0x570)                                                       */
1107 
1108 
1109 
1110 /* =========================================================================================================================== */
1111 /* ================                                           SPI0                                            ================ */
1112 /* =========================================================================================================================== */
1113 
1114 
1115 /**
1116   * @brief Serial Peripheral Interface 0 (SPI0)
1117   */
1118 
1119 typedef struct {                                /*!< (@ 0x40003000) SPI0 Structure                                             */
1120   __IM  uint32_t  RESERVED[66];
1121   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000108) TXD byte sent and RXD byte received                        */
1122   __IM  uint32_t  RESERVED1[126];
1123   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1124   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1125   __IM  uint32_t  RESERVED2[125];
1126   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable SPI                                                 */
1127   __IM  uint32_t  RESERVED3;
1128   __IOM SPI_PSEL_Type PSEL;                     /*!< (@ 0x00000508) Unspecified                                                */
1129   __IM  uint32_t  RESERVED4;
1130   __IM  uint32_t  RXD;                          /*!< (@ 0x00000518) RXD register                                               */
1131   __IOM uint32_t  TXD;                          /*!< (@ 0x0000051C) TXD register                                               */
1132   __IM  uint32_t  RESERVED5;
1133   __IOM uint32_t  FREQUENCY;                    /*!< (@ 0x00000524) SPI frequency                                              */
1134   __IM  uint32_t  RESERVED6[11];
1135   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000554) Configuration register                                     */
1136 } NRF_SPI_Type;                                 /*!< Size = 1368 (0x558)                                                       */
1137 
1138 
1139 
1140 /* =========================================================================================================================== */
1141 /* ================                                           SPIM0                                           ================ */
1142 /* =========================================================================================================================== */
1143 
1144 
1145 /**
1146   * @brief Serial Peripheral Interface Master with EasyDMA 0 (SPIM0)
1147   */
1148 
1149 typedef struct {                                /*!< (@ 0x40003000) SPIM0 Structure                                            */
1150   __IM  uint32_t  RESERVED[4];
1151   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000010) Start SPI transaction                                      */
1152   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000014) Stop SPI transaction                                       */
1153   __IM  uint32_t  RESERVED1;
1154   __OM  uint32_t  TASKS_SUSPEND;                /*!< (@ 0x0000001C) Suspend SPI transaction                                    */
1155   __OM  uint32_t  TASKS_RESUME;                 /*!< (@ 0x00000020) Resume SPI transaction                                     */
1156   __IM  uint32_t  RESERVED2[56];
1157   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) SPI transaction has stopped                                */
1158   __IM  uint32_t  RESERVED3[2];
1159   __IOM uint32_t  EVENTS_ENDRX;                 /*!< (@ 0x00000110) End of RXD buffer reached                                  */
1160   __IM  uint32_t  RESERVED4;
1161   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x00000118) End of RXD buffer and TXD buffer reached                   */
1162   __IM  uint32_t  RESERVED5;
1163   __IOM uint32_t  EVENTS_ENDTX;                 /*!< (@ 0x00000120) End of TXD buffer reached                                  */
1164   __IM  uint32_t  RESERVED6[10];
1165   __IOM uint32_t  EVENTS_STARTED;               /*!< (@ 0x0000014C) Transaction started                                        */
1166   __IM  uint32_t  RESERVED7[44];
1167   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1168   __IM  uint32_t  RESERVED8[64];
1169   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1170   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1171   __IM  uint32_t  RESERVED9[125];
1172   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable SPIM                                                */
1173   __IM  uint32_t  RESERVED10;
1174   __IOM SPIM_PSEL_Type PSEL;                    /*!< (@ 0x00000508) Unspecified                                                */
1175   __IM  uint32_t  RESERVED11[4];
1176   __IOM uint32_t  FREQUENCY;                    /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK
1177                                                                     source selected.                                           */
1178   __IM  uint32_t  RESERVED12[3];
1179   __IOM SPIM_RXD_Type RXD;                      /*!< (@ 0x00000534) RXD EasyDMA channel                                        */
1180   __IOM SPIM_TXD_Type TXD;                      /*!< (@ 0x00000544) TXD EasyDMA channel                                        */
1181   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000554) Configuration register                                     */
1182   __IM  uint32_t  RESERVED13[26];
1183   __IOM uint32_t  ORC;                          /*!< (@ 0x000005C0) Over-read character. Character clocked out in
1184                                                                     case and over-read of the TXD buffer.                      */
1185 } NRF_SPIM_Type;                                /*!< Size = 1476 (0x5c4)                                                       */
1186 
1187 
1188 
1189 /* =========================================================================================================================== */
1190 /* ================                                           SPIS0                                           ================ */
1191 /* =========================================================================================================================== */
1192 
1193 
1194 /**
1195   * @brief SPI Slave 0 (SPIS0)
1196   */
1197 
1198 typedef struct {                                /*!< (@ 0x40003000) SPIS0 Structure                                            */
1199   __IM  uint32_t  RESERVED[9];
1200   __OM  uint32_t  TASKS_ACQUIRE;                /*!< (@ 0x00000024) Acquire SPI semaphore                                      */
1201   __OM  uint32_t  TASKS_RELEASE;                /*!< (@ 0x00000028) Release SPI semaphore, enabling the SPI slave
1202                                                                     to acquire it                                              */
1203   __IM  uint32_t  RESERVED1[54];
1204   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x00000104) Granted transaction completed                              */
1205   __IM  uint32_t  RESERVED2[2];
1206   __IOM uint32_t  EVENTS_ENDRX;                 /*!< (@ 0x00000110) End of RXD buffer reached                                  */
1207   __IM  uint32_t  RESERVED3[5];
1208   __IOM uint32_t  EVENTS_ACQUIRED;              /*!< (@ 0x00000128) Semaphore acquired                                         */
1209   __IM  uint32_t  RESERVED4[53];
1210   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1211   __IM  uint32_t  RESERVED5[64];
1212   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1213   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1214   __IM  uint32_t  RESERVED6[61];
1215   __IM  uint32_t  SEMSTAT;                      /*!< (@ 0x00000400) Semaphore status register                                  */
1216   __IM  uint32_t  RESERVED7[15];
1217   __IOM uint32_t  STATUS;                       /*!< (@ 0x00000440) Status from last transaction                               */
1218   __IM  uint32_t  RESERVED8[47];
1219   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable SPI slave                                           */
1220   __IM  uint32_t  RESERVED9;
1221   __IOM SPIS_PSEL_Type PSEL;                    /*!< (@ 0x00000508) Unspecified                                                */
1222   __IM  uint32_t  RESERVED10[7];
1223   __IOM SPIS_RXD_Type RXD;                      /*!< (@ 0x00000534) Unspecified                                                */
1224   __IM  uint32_t  RESERVED11;
1225   __IOM SPIS_TXD_Type TXD;                      /*!< (@ 0x00000544) Unspecified                                                */
1226   __IM  uint32_t  RESERVED12;
1227   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000554) Configuration register                                     */
1228   __IM  uint32_t  RESERVED13;
1229   __IOM uint32_t  DEF;                          /*!< (@ 0x0000055C) Default character. Character clocked out in case
1230                                                                     of an ignored transaction.                                 */
1231   __IM  uint32_t  RESERVED14[24];
1232   __IOM uint32_t  ORC;                          /*!< (@ 0x000005C0) Over-read character                                        */
1233 } NRF_SPIS_Type;                                /*!< Size = 1476 (0x5c4)                                                       */
1234 
1235 
1236 
1237 /* =========================================================================================================================== */
1238 /* ================                                           TWI0                                            ================ */
1239 /* =========================================================================================================================== */
1240 
1241 
1242 /**
1243   * @brief I2C compatible Two-Wire Interface 0 (TWI0)
1244   */
1245 
1246 typedef struct {                                /*!< (@ 0x40003000) TWI0 Structure                                             */
1247   __OM  uint32_t  TASKS_STARTRX;                /*!< (@ 0x00000000) Start TWI receive sequence                                 */
1248   __IM  uint32_t  RESERVED;
1249   __OM  uint32_t  TASKS_STARTTX;                /*!< (@ 0x00000008) Start TWI transmit sequence                                */
1250   __IM  uint32_t  RESERVED1[2];
1251   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000014) Stop TWI transaction                                       */
1252   __IM  uint32_t  RESERVED2;
1253   __OM  uint32_t  TASKS_SUSPEND;                /*!< (@ 0x0000001C) Suspend TWI transaction                                    */
1254   __OM  uint32_t  TASKS_RESUME;                 /*!< (@ 0x00000020) Resume TWI transaction                                     */
1255   __IM  uint32_t  RESERVED3[56];
1256   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) TWI stopped                                                */
1257   __IOM uint32_t  EVENTS_RXDREADY;              /*!< (@ 0x00000108) TWI RXD byte received                                      */
1258   __IM  uint32_t  RESERVED4[4];
1259   __IOM uint32_t  EVENTS_TXDSENT;               /*!< (@ 0x0000011C) TWI TXD byte sent                                          */
1260   __IM  uint32_t  RESERVED5;
1261   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000124) TWI error                                                  */
1262   __IM  uint32_t  RESERVED6[4];
1263   __IOM uint32_t  EVENTS_BB;                    /*!< (@ 0x00000138) TWI byte boundary, generated before each byte
1264                                                                     that is sent or received                                   */
1265   __IM  uint32_t  RESERVED7[3];
1266   __IOM uint32_t  EVENTS_SUSPENDED;             /*!< (@ 0x00000148) TWI entered the suspended state                            */
1267   __IM  uint32_t  RESERVED8[45];
1268   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1269   __IM  uint32_t  RESERVED9[64];
1270   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1271   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1272   __IM  uint32_t  RESERVED10[110];
1273   __IOM uint32_t  ERRORSRC;                     /*!< (@ 0x000004C4) Error source                                               */
1274   __IM  uint32_t  RESERVED11[14];
1275   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable TWI                                                 */
1276   __IM  uint32_t  RESERVED12;
1277   __IOM uint32_t  PSELSCL;                      /*!< (@ 0x00000508) Pin select for SCL                                         */
1278   __IOM uint32_t  PSELSDA;                      /*!< (@ 0x0000050C) Pin select for SDA                                         */
1279   __IM  uint32_t  RESERVED13[2];
1280   __IM  uint32_t  RXD;                          /*!< (@ 0x00000518) RXD register                                               */
1281   __IOM uint32_t  TXD;                          /*!< (@ 0x0000051C) TXD register                                               */
1282   __IM  uint32_t  RESERVED14;
1283   __IOM uint32_t  FREQUENCY;                    /*!< (@ 0x00000524) TWI frequency                                              */
1284   __IM  uint32_t  RESERVED15[24];
1285   __IOM uint32_t  ADDRESS;                      /*!< (@ 0x00000588) Address used in the TWI transfer                           */
1286 } NRF_TWI_Type;                                 /*!< Size = 1420 (0x58c)                                                       */
1287 
1288 
1289 
1290 /* =========================================================================================================================== */
1291 /* ================                                           TWIM0                                           ================ */
1292 /* =========================================================================================================================== */
1293 
1294 
1295 /**
1296   * @brief I2C compatible Two-Wire Master Interface with EasyDMA 0 (TWIM0)
1297   */
1298 
1299 typedef struct {                                /*!< (@ 0x40003000) TWIM0 Structure                                            */
1300   __OM  uint32_t  TASKS_STARTRX;                /*!< (@ 0x00000000) Start TWI receive sequence                                 */
1301   __IM  uint32_t  RESERVED;
1302   __OM  uint32_t  TASKS_STARTTX;                /*!< (@ 0x00000008) Start TWI transmit sequence                                */
1303   __IM  uint32_t  RESERVED1[2];
1304   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000014) Stop TWI transaction. Must be issued while the
1305                                                                     TWI master is not suspended.                               */
1306   __IM  uint32_t  RESERVED2;
1307   __OM  uint32_t  TASKS_SUSPEND;                /*!< (@ 0x0000001C) Suspend TWI transaction                                    */
1308   __OM  uint32_t  TASKS_RESUME;                 /*!< (@ 0x00000020) Resume TWI transaction                                     */
1309   __IM  uint32_t  RESERVED3[56];
1310   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) TWI stopped                                                */
1311   __IM  uint32_t  RESERVED4[7];
1312   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000124) TWI error                                                  */
1313   __IM  uint32_t  RESERVED5[8];
1314   __IOM uint32_t  EVENTS_SUSPENDED;             /*!< (@ 0x00000148) Last byte has been sent out after the SUSPEND
1315                                                                     task has been issued, TWI traffic is now
1316                                                                     suspended.                                                 */
1317   __IOM uint32_t  EVENTS_RXSTARTED;             /*!< (@ 0x0000014C) Receive sequence started                                   */
1318   __IOM uint32_t  EVENTS_TXSTARTED;             /*!< (@ 0x00000150) Transmit sequence started                                  */
1319   __IM  uint32_t  RESERVED6[2];
1320   __IOM uint32_t  EVENTS_LASTRX;                /*!< (@ 0x0000015C) Byte boundary, starting to receive the last byte           */
1321   __IOM uint32_t  EVENTS_LASTTX;                /*!< (@ 0x00000160) Byte boundary, starting to transmit the last
1322                                                                     byte                                                       */
1323   __IM  uint32_t  RESERVED7[39];
1324   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1325   __IM  uint32_t  RESERVED8[63];
1326   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1327   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1328   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1329   __IM  uint32_t  RESERVED9[110];
1330   __IOM uint32_t  ERRORSRC;                     /*!< (@ 0x000004C4) Error source                                               */
1331   __IM  uint32_t  RESERVED10[14];
1332   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable TWIM                                                */
1333   __IM  uint32_t  RESERVED11;
1334   __IOM TWIM_PSEL_Type PSEL;                    /*!< (@ 0x00000508) Unspecified                                                */
1335   __IM  uint32_t  RESERVED12[5];
1336   __IOM uint32_t  FREQUENCY;                    /*!< (@ 0x00000524) TWI frequency                                              */
1337   __IM  uint32_t  RESERVED13[3];
1338   __IOM TWIM_RXD_Type RXD;                      /*!< (@ 0x00000534) RXD EasyDMA channel                                        */
1339   __IOM TWIM_TXD_Type TXD;                      /*!< (@ 0x00000544) TXD EasyDMA channel                                        */
1340   __IM  uint32_t  RESERVED14[13];
1341   __IOM uint32_t  ADDRESS;                      /*!< (@ 0x00000588) Address used in the TWI transfer                           */
1342 } NRF_TWIM_Type;                                /*!< Size = 1420 (0x58c)                                                       */
1343 
1344 
1345 
1346 /* =========================================================================================================================== */
1347 /* ================                                           TWIS0                                           ================ */
1348 /* =========================================================================================================================== */
1349 
1350 
1351 /**
1352   * @brief I2C compatible Two-Wire Slave Interface with EasyDMA 0 (TWIS0)
1353   */
1354 
1355 typedef struct {                                /*!< (@ 0x40003000) TWIS0 Structure                                            */
1356   __IM  uint32_t  RESERVED[5];
1357   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000014) Stop TWI transaction                                       */
1358   __IM  uint32_t  RESERVED1;
1359   __OM  uint32_t  TASKS_SUSPEND;                /*!< (@ 0x0000001C) Suspend TWI transaction                                    */
1360   __OM  uint32_t  TASKS_RESUME;                 /*!< (@ 0x00000020) Resume TWI transaction                                     */
1361   __IM  uint32_t  RESERVED2[3];
1362   __OM  uint32_t  TASKS_PREPARERX;              /*!< (@ 0x00000030) Prepare the TWI slave to respond to a write command        */
1363   __OM  uint32_t  TASKS_PREPARETX;              /*!< (@ 0x00000034) Prepare the TWI slave to respond to a read command         */
1364   __IM  uint32_t  RESERVED3[51];
1365   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) TWI stopped                                                */
1366   __IM  uint32_t  RESERVED4[7];
1367   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000124) TWI error                                                  */
1368   __IM  uint32_t  RESERVED5[9];
1369   __IOM uint32_t  EVENTS_RXSTARTED;             /*!< (@ 0x0000014C) Receive sequence started                                   */
1370   __IOM uint32_t  EVENTS_TXSTARTED;             /*!< (@ 0x00000150) Transmit sequence started                                  */
1371   __IM  uint32_t  RESERVED6[4];
1372   __IOM uint32_t  EVENTS_WRITE;                 /*!< (@ 0x00000164) Write command received                                     */
1373   __IOM uint32_t  EVENTS_READ;                  /*!< (@ 0x00000168) Read command received                                      */
1374   __IM  uint32_t  RESERVED7[37];
1375   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1376   __IM  uint32_t  RESERVED8[63];
1377   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1378   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1379   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1380   __IM  uint32_t  RESERVED9[113];
1381   __IOM uint32_t  ERRORSRC;                     /*!< (@ 0x000004D0) Error source                                               */
1382   __IM  uint32_t  MATCH;                        /*!< (@ 0x000004D4) Status register indicating which address had
1383                                                                     a match                                                    */
1384   __IM  uint32_t  RESERVED10[10];
1385   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable TWIS                                                */
1386   __IM  uint32_t  RESERVED11;
1387   __IOM TWIS_PSEL_Type PSEL;                    /*!< (@ 0x00000508) Unspecified                                                */
1388   __IM  uint32_t  RESERVED12[9];
1389   __IOM TWIS_RXD_Type RXD;                      /*!< (@ 0x00000534) RXD EasyDMA channel                                        */
1390   __IM  uint32_t  RESERVED13;
1391   __IOM TWIS_TXD_Type TXD;                      /*!< (@ 0x00000544) TXD EasyDMA channel                                        */
1392   __IM  uint32_t  RESERVED14[14];
1393   __IOM uint32_t  ADDRESS[2];                   /*!< (@ 0x00000588) Description collection: TWI slave address n                */
1394   __IM  uint32_t  RESERVED15;
1395   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000594) Configuration register for the address match
1396                                                                     mechanism                                                  */
1397   __IM  uint32_t  RESERVED16[10];
1398   __IOM uint32_t  ORC;                          /*!< (@ 0x000005C0) Over-read character. Character sent out in case
1399                                                                     of an over-read of the transmit buffer.                    */
1400 } NRF_TWIS_Type;                                /*!< Size = 1476 (0x5c4)                                                       */
1401 
1402 
1403 
1404 /* =========================================================================================================================== */
1405 /* ================                                           NFCT                                            ================ */
1406 /* =========================================================================================================================== */
1407 
1408 
1409 /**
1410   * @brief NFC-A compatible radio (NFCT)
1411   */
1412 
1413 typedef struct {                                /*!< (@ 0x40005000) NFCT Structure                                             */
1414   __OM  uint32_t  TASKS_ACTIVATE;               /*!< (@ 0x00000000) Activate NFC peripheral for incoming and outgoing
1415                                                                     frames, change state to activated                          */
1416   __OM  uint32_t  TASKS_DISABLE;                /*!< (@ 0x00000004) Disable NFC peripheral                                     */
1417   __OM  uint32_t  TASKS_SENSE;                  /*!< (@ 0x00000008) Enable NFC sense field mode, change state to
1418                                                                     sense mode                                                 */
1419   __OM  uint32_t  TASKS_STARTTX;                /*!< (@ 0x0000000C) Start transmission of a outgoing frame, change
1420                                                                     state to transmit                                          */
1421   __IM  uint32_t  RESERVED[3];
1422   __OM  uint32_t  TASKS_ENABLERXDATA;           /*!< (@ 0x0000001C) Initializes the EasyDMA for receive.                       */
1423   __IM  uint32_t  RESERVED1;
1424   __OM  uint32_t  TASKS_GOIDLE;                 /*!< (@ 0x00000024) Force state machine to IDLE state                          */
1425   __OM  uint32_t  TASKS_GOSLEEP;                /*!< (@ 0x00000028) Force state machine to SLEEP_A state                       */
1426   __IM  uint32_t  RESERVED2[53];
1427   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000100) The NFC peripheral is ready to receive and send
1428                                                                     frames                                                     */
1429   __IOM uint32_t  EVENTS_FIELDDETECTED;         /*!< (@ 0x00000104) Remote NFC field detected                                  */
1430   __IOM uint32_t  EVENTS_FIELDLOST;             /*!< (@ 0x00000108) Remote NFC field lost                                      */
1431   __IOM uint32_t  EVENTS_TXFRAMESTART;          /*!< (@ 0x0000010C) Marks the start of the first symbol of a transmitted
1432                                                                     frame                                                      */
1433   __IOM uint32_t  EVENTS_TXFRAMEEND;            /*!< (@ 0x00000110) Marks the end of the last transmitted on-air
1434                                                                     symbol of a frame                                          */
1435   __IOM uint32_t  EVENTS_RXFRAMESTART;          /*!< (@ 0x00000114) Marks the end of the first symbol of a received
1436                                                                     frame                                                      */
1437   __IOM uint32_t  EVENTS_RXFRAMEEND;            /*!< (@ 0x00000118) Received data have been checked (CRC, parity)
1438                                                                     and transferred to RAM, and EasyDMA has
1439                                                                     ended accessing the RX buffer                              */
1440   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x0000011C) NFC error reported. The ERRORSTATUS register
1441                                                                     contains details on the source of the error.               */
1442   __IM  uint32_t  RESERVED3[2];
1443   __IOM uint32_t  EVENTS_RXERROR;               /*!< (@ 0x00000128) NFC RX frame error reported. The FRAMESTATUS.RX
1444                                                                     register contains details on the source
1445                                                                     of the error.                                              */
1446   __IOM uint32_t  EVENTS_ENDRX;                 /*!< (@ 0x0000012C) RX buffer (as defined by PACKETPTR and MAXLEN)
1447                                                                     in Data RAM full.                                          */
1448   __IOM uint32_t  EVENTS_ENDTX;                 /*!< (@ 0x00000130) Transmission of data in RAM has ended, and EasyDMA
1449                                                                     has ended accessing the TX buffer                          */
1450   __IM  uint32_t  RESERVED4;
1451   __IOM uint32_t  EVENTS_AUTOCOLRESSTARTED;     /*!< (@ 0x00000138) Auto collision resolution process has started              */
1452   __IM  uint32_t  RESERVED5[3];
1453   __IOM uint32_t  EVENTS_COLLISION;             /*!< (@ 0x00000148) NFC Auto collision resolution error reported.              */
1454   __IOM uint32_t  EVENTS_SELECTED;              /*!< (@ 0x0000014C) NFC Auto collision resolution successfully completed       */
1455   __IOM uint32_t  EVENTS_STARTED;               /*!< (@ 0x00000150) EasyDMA is ready to receive or send frames.                */
1456   __IM  uint32_t  RESERVED6[43];
1457   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1458   __IM  uint32_t  RESERVED7[63];
1459   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1460   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1461   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1462   __IM  uint32_t  RESERVED8[62];
1463   __IOM uint32_t  ERRORSTATUS;                  /*!< (@ 0x00000404) NFC Error Status register                                  */
1464   __IM  uint32_t  RESERVED9;
1465   __IOM NFCT_FRAMESTATUS_Type FRAMESTATUS;      /*!< (@ 0x0000040C) Unspecified                                                */
1466   __IM  uint32_t  RESERVED10[8];
1467   __IM  uint32_t  CURRENTLOADCTRL;              /*!< (@ 0x00000430) Current value driven to the NFC Load Control               */
1468   __IM  uint32_t  RESERVED11[2];
1469   __IM  uint32_t  FIELDPRESENT;                 /*!< (@ 0x0000043C) Indicates the presence or not of a valid field             */
1470   __IM  uint32_t  RESERVED12[49];
1471   __IOM uint32_t  FRAMEDELAYMIN;                /*!< (@ 0x00000504) Minimum frame delay                                        */
1472   __IOM uint32_t  FRAMEDELAYMAX;                /*!< (@ 0x00000508) Maximum frame delay                                        */
1473   __IOM uint32_t  FRAMEDELAYMODE;               /*!< (@ 0x0000050C) Configuration register for the Frame Delay Timer           */
1474   __IOM uint32_t  PACKETPTR;                    /*!< (@ 0x00000510) Packet pointer for TXD and RXD data storage in
1475                                                                     Data RAM                                                   */
1476   __IOM uint32_t  MAXLEN;                       /*!< (@ 0x00000514) Size of allocated for TXD and RXD data storage
1477                                                                     buffer in Data RAM                                         */
1478   __IOM NFCT_TXD_Type TXD;                      /*!< (@ 0x00000518) Unspecified                                                */
1479   __IOM NFCT_RXD_Type RXD;                      /*!< (@ 0x00000520) Unspecified                                                */
1480   __IM  uint32_t  RESERVED13[26];
1481   __IOM uint32_t  NFCID1_LAST;                  /*!< (@ 0x00000590) Last NFCID1 part (4, 7 or 10 bytes ID)                     */
1482   __IOM uint32_t  NFCID1_2ND_LAST;              /*!< (@ 0x00000594) Second last NFCID1 part (7 or 10 bytes ID)                 */
1483   __IOM uint32_t  NFCID1_3RD_LAST;              /*!< (@ 0x00000598) Third last NFCID1 part (10 bytes ID)                       */
1484   __IM  uint32_t  RESERVED14;
1485   __IOM uint32_t  SENSRES;                      /*!< (@ 0x000005A0) NFC-A SENS_RES auto-response settings                      */
1486   __IOM uint32_t  SELRES;                       /*!< (@ 0x000005A4) NFC-A SEL_RES auto-response settings                       */
1487 } NRF_NFCT_Type;                                /*!< Size = 1448 (0x5a8)                                                       */
1488 
1489 
1490 
1491 /* =========================================================================================================================== */
1492 /* ================                                          GPIOTE                                           ================ */
1493 /* =========================================================================================================================== */
1494 
1495 
1496 /**
1497   * @brief GPIO Tasks and Events (GPIOTE)
1498   */
1499 
1500 typedef struct {                                /*!< (@ 0x40006000) GPIOTE Structure                                           */
1501   __OM  uint32_t  TASKS_OUT[8];                 /*!< (@ 0x00000000) Description collection: Task for writing to pin
1502                                                                     specified in CONFIG[n].PSEL. Action on pin
1503                                                                     is configured in CONFIG[n].POLARITY.                       */
1504   __IM  uint32_t  RESERVED[4];
1505   __OM  uint32_t  TASKS_SET[8];                 /*!< (@ 0x00000030) Description collection: Task for writing to pin
1506                                                                     specified in CONFIG[n].PSEL. Action on pin
1507                                                                     is to set it high.                                         */
1508   __IM  uint32_t  RESERVED1[4];
1509   __OM  uint32_t  TASKS_CLR[8];                 /*!< (@ 0x00000060) Description collection: Task for writing to pin
1510                                                                     specified in CONFIG[n].PSEL. Action on pin
1511                                                                     is to set it low.                                          */
1512   __IM  uint32_t  RESERVED2[32];
1513   __IOM uint32_t  EVENTS_IN[8];                 /*!< (@ 0x00000100) Description collection: Event generated from
1514                                                                     pin specified in CONFIG[n].PSEL                            */
1515   __IM  uint32_t  RESERVED3[23];
1516   __IOM uint32_t  EVENTS_PORT;                  /*!< (@ 0x0000017C) Event generated from multiple input GPIO pins
1517                                                                     with SENSE mechanism enabled                               */
1518   __IM  uint32_t  RESERVED4[97];
1519   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1520   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1521   __IM  uint32_t  RESERVED5[129];
1522   __IOM uint32_t  CONFIG[8];                    /*!< (@ 0x00000510) Description collection: Configuration for OUT[n],
1523                                                                     SET[n] and CLR[n] tasks and IN[n] event                    */
1524 } NRF_GPIOTE_Type;                              /*!< Size = 1328 (0x530)                                                       */
1525 
1526 
1527 
1528 /* =========================================================================================================================== */
1529 /* ================                                           SAADC                                           ================ */
1530 /* =========================================================================================================================== */
1531 
1532 
1533 /**
1534   * @brief Analog to Digital Converter (SAADC)
1535   */
1536 
1537 typedef struct {                                /*!< (@ 0x40007000) SAADC Structure                                            */
1538   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start the ADC and prepare the result buffer in
1539                                                                     RAM                                                        */
1540   __OM  uint32_t  TASKS_SAMPLE;                 /*!< (@ 0x00000004) Take one ADC sample, if scan is enabled all channels
1541                                                                     are sampled                                                */
1542   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000008) Stop the ADC and terminate any on-going conversion         */
1543   __OM  uint32_t  TASKS_CALIBRATEOFFSET;        /*!< (@ 0x0000000C) Starts offset auto-calibration                             */
1544   __IM  uint32_t  RESERVED[60];
1545   __IOM uint32_t  EVENTS_STARTED;               /*!< (@ 0x00000100) The ADC has started                                        */
1546   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x00000104) The ADC has filled up the Result buffer                    */
1547   __IOM uint32_t  EVENTS_DONE;                  /*!< (@ 0x00000108) A conversion task has been completed. Depending
1548                                                                     on the mode, multiple conversions might
1549                                                                     be needed for a result to be transferred
1550                                                                     to RAM.                                                    */
1551   __IOM uint32_t  EVENTS_RESULTDONE;            /*!< (@ 0x0000010C) A result is ready to get transferred to RAM.               */
1552   __IOM uint32_t  EVENTS_CALIBRATEDONE;         /*!< (@ 0x00000110) Calibration is complete                                    */
1553   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000114) The ADC has stopped                                        */
1554   __IOM SAADC_EVENTS_CH_Type EVENTS_CH[8];      /*!< (@ 0x00000118) Peripheral events.                                         */
1555   __IM  uint32_t  RESERVED1[106];
1556   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1557   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1558   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1559   __IM  uint32_t  RESERVED2[61];
1560   __IM  uint32_t  STATUS;                       /*!< (@ 0x00000400) Status                                                     */
1561   __IM  uint32_t  RESERVED3[63];
1562   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable or disable ADC                                      */
1563   __IM  uint32_t  RESERVED4[3];
1564   __IOM SAADC_CH_Type CH[8];                    /*!< (@ 0x00000510) Unspecified                                                */
1565   __IM  uint32_t  RESERVED5[24];
1566   __IOM uint32_t  RESOLUTION;                   /*!< (@ 0x000005F0) Resolution configuration                                   */
1567   __IOM uint32_t  OVERSAMPLE;                   /*!< (@ 0x000005F4) Oversampling configuration. OVERSAMPLE should
1568                                                                     not be combined with SCAN. The RESOLUTION
1569                                                                     is applied before averaging, thus for high
1570                                                                     OVERSAMPLE a higher RESOLUTION should be
1571                                                                     used.                                                      */
1572   __IOM uint32_t  SAMPLERATE;                   /*!< (@ 0x000005F8) Controls normal or continuous sample rate                  */
1573   __IM  uint32_t  RESERVED6[12];
1574   __IOM SAADC_RESULT_Type RESULT;               /*!< (@ 0x0000062C) RESULT EasyDMA channel                                     */
1575 } NRF_SAADC_Type;                               /*!< Size = 1592 (0x638)                                                       */
1576 
1577 
1578 
1579 /* =========================================================================================================================== */
1580 /* ================                                          TIMER0                                           ================ */
1581 /* =========================================================================================================================== */
1582 
1583 
1584 /**
1585   * @brief Timer/Counter 0 (TIMER0)
1586   */
1587 
1588 typedef struct {                                /*!< (@ 0x40008000) TIMER0 Structure                                           */
1589   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start Timer                                                */
1590   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stop Timer                                                 */
1591   __OM  uint32_t  TASKS_COUNT;                  /*!< (@ 0x00000008) Increment Timer (Counter mode only)                        */
1592   __OM  uint32_t  TASKS_CLEAR;                  /*!< (@ 0x0000000C) Clear time                                                 */
1593   __OM  uint32_t  TASKS_SHUTDOWN;               /*!< (@ 0x00000010) Deprecated register - Shut down timer                      */
1594   __IM  uint32_t  RESERVED[11];
1595   __OM  uint32_t  TASKS_CAPTURE[6];             /*!< (@ 0x00000040) Description collection: Capture Timer value to
1596                                                                     CC[n] register                                             */
1597   __IM  uint32_t  RESERVED1[58];
1598   __IOM uint32_t  EVENTS_COMPARE[6];            /*!< (@ 0x00000140) Description collection: Compare event on CC[n]
1599                                                                     match                                                      */
1600   __IM  uint32_t  RESERVED2[42];
1601   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1602   __IM  uint32_t  RESERVED3[64];
1603   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1604   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1605   __IM  uint32_t  RESERVED4[126];
1606   __IOM uint32_t  MODE;                         /*!< (@ 0x00000504) Timer mode selection                                       */
1607   __IOM uint32_t  BITMODE;                      /*!< (@ 0x00000508) Configure the number of bits used by the TIMER             */
1608   __IM  uint32_t  RESERVED5;
1609   __IOM uint32_t  PRESCALER;                    /*!< (@ 0x00000510) Timer prescaler register                                   */
1610   __IM  uint32_t  RESERVED6[11];
1611   __IOM uint32_t  CC[6];                        /*!< (@ 0x00000540) Description collection: Capture/Compare register
1612                                                                     n                                                          */
1613 } NRF_TIMER_Type;                               /*!< Size = 1368 (0x558)                                                       */
1614 
1615 
1616 
1617 /* =========================================================================================================================== */
1618 /* ================                                           RTC0                                            ================ */
1619 /* =========================================================================================================================== */
1620 
1621 
1622 /**
1623   * @brief Real time counter 0 (RTC0)
1624   */
1625 
1626 typedef struct {                                /*!< (@ 0x4000B000) RTC0 Structure                                             */
1627   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start RTC COUNTER                                          */
1628   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stop RTC COUNTER                                           */
1629   __OM  uint32_t  TASKS_CLEAR;                  /*!< (@ 0x00000008) Clear RTC COUNTER                                          */
1630   __OM  uint32_t  TASKS_TRIGOVRFLW;             /*!< (@ 0x0000000C) Set COUNTER to 0xFFFFF0                                    */
1631   __IM  uint32_t  RESERVED[60];
1632   __IOM uint32_t  EVENTS_TICK;                  /*!< (@ 0x00000100) Event on COUNTER increment                                 */
1633   __IOM uint32_t  EVENTS_OVRFLW;                /*!< (@ 0x00000104) Event on COUNTER overflow                                  */
1634   __IM  uint32_t  RESERVED1[14];
1635   __IOM uint32_t  EVENTS_COMPARE[4];            /*!< (@ 0x00000140) Description collection: Compare event on CC[n]
1636                                                                     match                                                      */
1637   __IM  uint32_t  RESERVED2[109];
1638   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1639   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1640   __IM  uint32_t  RESERVED3[13];
1641   __IOM uint32_t  EVTEN;                        /*!< (@ 0x00000340) Enable or disable event routing                            */
1642   __IOM uint32_t  EVTENSET;                     /*!< (@ 0x00000344) Enable event routing                                       */
1643   __IOM uint32_t  EVTENCLR;                     /*!< (@ 0x00000348) Disable event routing                                      */
1644   __IM  uint32_t  RESERVED4[110];
1645   __IM  uint32_t  COUNTER;                      /*!< (@ 0x00000504) Current COUNTER value                                      */
1646   __IOM uint32_t  PRESCALER;                    /*!< (@ 0x00000508) 12 bit prescaler for COUNTER frequency (32768/(PRESCALER+1)).Mu
1647                                                                     t be written when RTC is stopped                           */
1648   __IM  uint32_t  RESERVED5[13];
1649   __IOM uint32_t  CC[4];                        /*!< (@ 0x00000540) Description collection: Compare register n                 */
1650 } NRF_RTC_Type;                                 /*!< Size = 1360 (0x550)                                                       */
1651 
1652 
1653 
1654 /* =========================================================================================================================== */
1655 /* ================                                           TEMP                                            ================ */
1656 /* =========================================================================================================================== */
1657 
1658 
1659 /**
1660   * @brief Temperature Sensor (TEMP)
1661   */
1662 
1663 typedef struct {                                /*!< (@ 0x4000C000) TEMP Structure                                             */
1664   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start temperature measurement                              */
1665   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stop temperature measurement                               */
1666   __IM  uint32_t  RESERVED[62];
1667   __IOM uint32_t  EVENTS_DATARDY;               /*!< (@ 0x00000100) Temperature measurement complete, data ready               */
1668   __IM  uint32_t  RESERVED1[128];
1669   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1670   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1671   __IM  uint32_t  RESERVED2[127];
1672   __IM  int32_t   TEMP;                         /*!< (@ 0x00000508) Temperature in degC (0.25deg steps)                        */
1673   __IM  uint32_t  RESERVED3[5];
1674   __IOM uint32_t  A0;                           /*!< (@ 0x00000520) Slope of 1st piece wise linear function                    */
1675   __IOM uint32_t  A1;                           /*!< (@ 0x00000524) Slope of 2nd piece wise linear function                    */
1676   __IOM uint32_t  A2;                           /*!< (@ 0x00000528) Slope of 3rd piece wise linear function                    */
1677   __IOM uint32_t  A3;                           /*!< (@ 0x0000052C) Slope of 4th piece wise linear function                    */
1678   __IOM uint32_t  A4;                           /*!< (@ 0x00000530) Slope of 5th piece wise linear function                    */
1679   __IOM uint32_t  A5;                           /*!< (@ 0x00000534) Slope of 6th piece wise linear function                    */
1680   __IM  uint32_t  RESERVED4[2];
1681   __IOM uint32_t  B0;                           /*!< (@ 0x00000540) y-intercept of 1st piece wise linear function              */
1682   __IOM uint32_t  B1;                           /*!< (@ 0x00000544) y-intercept of 2nd piece wise linear function              */
1683   __IOM uint32_t  B2;                           /*!< (@ 0x00000548) y-intercept of 3rd piece wise linear function              */
1684   __IOM uint32_t  B3;                           /*!< (@ 0x0000054C) y-intercept of 4th piece wise linear function              */
1685   __IOM uint32_t  B4;                           /*!< (@ 0x00000550) y-intercept of 5th piece wise linear function              */
1686   __IOM uint32_t  B5;                           /*!< (@ 0x00000554) y-intercept of 6th piece wise linear function              */
1687   __IM  uint32_t  RESERVED5[2];
1688   __IOM uint32_t  T0;                           /*!< (@ 0x00000560) End point of 1st piece wise linear function                */
1689   __IOM uint32_t  T1;                           /*!< (@ 0x00000564) End point of 2nd piece wise linear function                */
1690   __IOM uint32_t  T2;                           /*!< (@ 0x00000568) End point of 3rd piece wise linear function                */
1691   __IOM uint32_t  T3;                           /*!< (@ 0x0000056C) End point of 4th piece wise linear function                */
1692   __IOM uint32_t  T4;                           /*!< (@ 0x00000570) End point of 5th piece wise linear function                */
1693 } NRF_TEMP_Type;                                /*!< Size = 1396 (0x574)                                                       */
1694 
1695 
1696 
1697 /* =========================================================================================================================== */
1698 /* ================                                            RNG                                            ================ */
1699 /* =========================================================================================================================== */
1700 
1701 
1702 /**
1703   * @brief Random Number Generator (RNG)
1704   */
1705 
1706 typedef struct {                                /*!< (@ 0x4000D000) RNG Structure                                              */
1707   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Task starting the random number generator                  */
1708   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Task stopping the random number generator                  */
1709   __IM  uint32_t  RESERVED[62];
1710   __IOM uint32_t  EVENTS_VALRDY;                /*!< (@ 0x00000100) Event being generated for every new random number
1711                                                                     written to the VALUE register                              */
1712   __IM  uint32_t  RESERVED1[63];
1713   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1714   __IM  uint32_t  RESERVED2[64];
1715   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1716   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1717   __IM  uint32_t  RESERVED3[126];
1718   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000504) Configuration register                                     */
1719   __IM  uint32_t  VALUE;                        /*!< (@ 0x00000508) Output random number                                       */
1720 } NRF_RNG_Type;                                 /*!< Size = 1292 (0x50c)                                                       */
1721 
1722 
1723 
1724 /* =========================================================================================================================== */
1725 /* ================                                            ECB                                            ================ */
1726 /* =========================================================================================================================== */
1727 
1728 
1729 /**
1730   * @brief AES ECB Mode Encryption (ECB)
1731   */
1732 
1733 typedef struct {                                /*!< (@ 0x4000E000) ECB Structure                                              */
1734   __OM  uint32_t  TASKS_STARTECB;               /*!< (@ 0x00000000) Start ECB block encrypt                                    */
1735   __OM  uint32_t  TASKS_STOPECB;                /*!< (@ 0x00000004) Abort a possible executing ECB operation                   */
1736   __IM  uint32_t  RESERVED[62];
1737   __IOM uint32_t  EVENTS_ENDECB;                /*!< (@ 0x00000100) ECB block encrypt complete                                 */
1738   __IOM uint32_t  EVENTS_ERRORECB;              /*!< (@ 0x00000104) ECB block encrypt aborted because of a STOPECB
1739                                                                     task or due to an error                                    */
1740   __IM  uint32_t  RESERVED1[127];
1741   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1742   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1743   __IM  uint32_t  RESERVED2[126];
1744   __IOM uint32_t  ECBDATAPTR;                   /*!< (@ 0x00000504) ECB block encrypt memory pointers                          */
1745 } NRF_ECB_Type;                                 /*!< Size = 1288 (0x508)                                                       */
1746 
1747 
1748 
1749 /* =========================================================================================================================== */
1750 /* ================                                            AAR                                            ================ */
1751 /* =========================================================================================================================== */
1752 
1753 
1754 /**
1755   * @brief Accelerated Address Resolver (AAR)
1756   */
1757 
1758 typedef struct {                                /*!< (@ 0x4000F000) AAR Structure                                              */
1759   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start resolving addresses based on IRKs specified
1760                                                                     in the IRK data structure                                  */
1761   __IM  uint32_t  RESERVED;
1762   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000008) Stop resolving addresses                                   */
1763   __IM  uint32_t  RESERVED1[61];
1764   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x00000100) Address resolution procedure complete                      */
1765   __IOM uint32_t  EVENTS_RESOLVED;              /*!< (@ 0x00000104) Address resolved                                           */
1766   __IOM uint32_t  EVENTS_NOTRESOLVED;           /*!< (@ 0x00000108) Address not resolved                                       */
1767   __IM  uint32_t  RESERVED2[126];
1768   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1769   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1770   __IM  uint32_t  RESERVED3[61];
1771   __IM  uint32_t  STATUS;                       /*!< (@ 0x00000400) Resolution status                                          */
1772   __IM  uint32_t  RESERVED4[63];
1773   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable AAR                                                 */
1774   __IOM uint32_t  NIRK;                         /*!< (@ 0x00000504) Number of IRKs                                             */
1775   __IOM uint32_t  IRKPTR;                       /*!< (@ 0x00000508) Pointer to IRK data structure                              */
1776   __IM  uint32_t  RESERVED5;
1777   __IOM uint32_t  ADDRPTR;                      /*!< (@ 0x00000510) Pointer to the resolvable address                          */
1778   __IOM uint32_t  SCRATCHPTR;                   /*!< (@ 0x00000514) Pointer to data area used for temporary storage            */
1779 } NRF_AAR_Type;                                 /*!< Size = 1304 (0x518)                                                       */
1780 
1781 
1782 
1783 /* =========================================================================================================================== */
1784 /* ================                                            CCM                                            ================ */
1785 /* =========================================================================================================================== */
1786 
1787 
1788 /**
1789   * @brief AES CCM Mode Encryption (CCM)
1790   */
1791 
1792 typedef struct {                                /*!< (@ 0x4000F000) CCM Structure                                              */
1793   __OM  uint32_t  TASKS_KSGEN;                  /*!< (@ 0x00000000) Start generation of key-stream. This operation
1794                                                                     will stop by itself when completed.                        */
1795   __OM  uint32_t  TASKS_CRYPT;                  /*!< (@ 0x00000004) Start encryption/decryption. This operation will
1796                                                                     stop by itself when completed.                             */
1797   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000008) Stop encryption/decryption                                 */
1798   __IM  uint32_t  RESERVED[61];
1799   __IOM uint32_t  EVENTS_ENDKSGEN;              /*!< (@ 0x00000100) Key-stream generation complete                             */
1800   __IOM uint32_t  EVENTS_ENDCRYPT;              /*!< (@ 0x00000104) Encrypt/decrypt complete                                   */
1801   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000108) CCM error event                                            */
1802   __IM  uint32_t  RESERVED1[61];
1803   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1804   __IM  uint32_t  RESERVED2[64];
1805   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1806   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1807   __IM  uint32_t  RESERVED3[61];
1808   __IM  uint32_t  MICSTATUS;                    /*!< (@ 0x00000400) MIC check result                                           */
1809   __IM  uint32_t  RESERVED4[63];
1810   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable                                                     */
1811   __IOM uint32_t  MODE;                         /*!< (@ 0x00000504) Operation mode                                             */
1812   __IOM uint32_t  CNFPTR;                       /*!< (@ 0x00000508) Pointer to data structure holding AES key and
1813                                                                     NONCE vector                                               */
1814   __IOM uint32_t  INPTR;                        /*!< (@ 0x0000050C) Input pointer                                              */
1815   __IOM uint32_t  OUTPTR;                       /*!< (@ 0x00000510) Output pointer                                             */
1816   __IOM uint32_t  SCRATCHPTR;                   /*!< (@ 0x00000514) Pointer to data area used for temporary storage            */
1817 } NRF_CCM_Type;                                 /*!< Size = 1304 (0x518)                                                       */
1818 
1819 
1820 
1821 /* =========================================================================================================================== */
1822 /* ================                                            WDT                                            ================ */
1823 /* =========================================================================================================================== */
1824 
1825 
1826 /**
1827   * @brief Watchdog Timer (WDT)
1828   */
1829 
1830 typedef struct {                                /*!< (@ 0x40010000) WDT Structure                                              */
1831   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start the watchdog                                         */
1832   __IM  uint32_t  RESERVED[63];
1833   __IOM uint32_t  EVENTS_TIMEOUT;               /*!< (@ 0x00000100) Watchdog timeout                                           */
1834   __IM  uint32_t  RESERVED1[128];
1835   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1836   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1837   __IM  uint32_t  RESERVED2[61];
1838   __IM  uint32_t  RUNSTATUS;                    /*!< (@ 0x00000400) Run status                                                 */
1839   __IM  uint32_t  REQSTATUS;                    /*!< (@ 0x00000404) Request status                                             */
1840   __IM  uint32_t  RESERVED3[63];
1841   __IOM uint32_t  CRV;                          /*!< (@ 0x00000504) Counter reload value                                       */
1842   __IOM uint32_t  RREN;                         /*!< (@ 0x00000508) Enable register for reload request registers               */
1843   __IOM uint32_t  CONFIG;                       /*!< (@ 0x0000050C) Configuration register                                     */
1844   __IM  uint32_t  RESERVED4[60];
1845   __OM  uint32_t  RR[8];                        /*!< (@ 0x00000600) Description collection: Reload request n                   */
1846 } NRF_WDT_Type;                                 /*!< Size = 1568 (0x620)                                                       */
1847 
1848 
1849 
1850 /* =========================================================================================================================== */
1851 /* ================                                           QDEC                                            ================ */
1852 /* =========================================================================================================================== */
1853 
1854 
1855 /**
1856   * @brief Quadrature Decoder (QDEC)
1857   */
1858 
1859 typedef struct {                                /*!< (@ 0x40012000) QDEC Structure                                             */
1860   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Task starting the quadrature decoder                       */
1861   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Task stopping the quadrature decoder                       */
1862   __OM  uint32_t  TASKS_READCLRACC;             /*!< (@ 0x00000008) Read and clear ACC and ACCDBL                              */
1863   __OM  uint32_t  TASKS_RDCLRACC;               /*!< (@ 0x0000000C) Read and clear ACC                                         */
1864   __OM  uint32_t  TASKS_RDCLRDBL;               /*!< (@ 0x00000010) Read and clear ACCDBL                                      */
1865   __IM  uint32_t  RESERVED[59];
1866   __IOM uint32_t  EVENTS_SAMPLERDY;             /*!< (@ 0x00000100) Event being generated for every new sample value
1867                                                                     written to the SAMPLE register                             */
1868   __IOM uint32_t  EVENTS_REPORTRDY;             /*!< (@ 0x00000104) Non-null report ready                                      */
1869   __IOM uint32_t  EVENTS_ACCOF;                 /*!< (@ 0x00000108) ACC or ACCDBL register overflow                            */
1870   __IOM uint32_t  EVENTS_DBLRDY;                /*!< (@ 0x0000010C) Double displacement(s) detected                            */
1871   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000110) QDEC has been stopped                                      */
1872   __IM  uint32_t  RESERVED1[59];
1873   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1874   __IM  uint32_t  RESERVED2[64];
1875   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1876   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1877   __IM  uint32_t  RESERVED3[125];
1878   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable the quadrature decoder                              */
1879   __IOM uint32_t  LEDPOL;                       /*!< (@ 0x00000504) LED output pin polarity                                    */
1880   __IOM uint32_t  SAMPLEPER;                    /*!< (@ 0x00000508) Sample period                                              */
1881   __IM  int32_t   SAMPLE;                       /*!< (@ 0x0000050C) Motion sample value                                        */
1882   __IOM uint32_t  REPORTPER;                    /*!< (@ 0x00000510) Number of samples to be taken before REPORTRDY
1883                                                                     and DBLRDY events can be generated                         */
1884   __IM  int32_t   ACC;                          /*!< (@ 0x00000514) Register accumulating the valid transitions                */
1885   __IM  int32_t   ACCREAD;                      /*!< (@ 0x00000518) Snapshot of the ACC register, updated by the
1886                                                                     READCLRACC or RDCLRACC task                                */
1887   __IOM QDEC_PSEL_Type PSEL;                    /*!< (@ 0x0000051C) Unspecified                                                */
1888   __IOM uint32_t  DBFEN;                        /*!< (@ 0x00000528) Enable input debounce filters                              */
1889   __IM  uint32_t  RESERVED4[5];
1890   __IOM uint32_t  LEDPRE;                       /*!< (@ 0x00000540) Time period the LED is switched ON prior to sampling       */
1891   __IM  uint32_t  ACCDBL;                       /*!< (@ 0x00000544) Register accumulating the number of detected
1892                                                                     double transitions                                         */
1893   __IM  uint32_t  ACCDBLREAD;                   /*!< (@ 0x00000548) Snapshot of the ACCDBL, updated by the READCLRACC
1894                                                                     or RDCLRDBL task                                           */
1895 } NRF_QDEC_Type;                                /*!< Size = 1356 (0x54c)                                                       */
1896 
1897 
1898 
1899 /* =========================================================================================================================== */
1900 /* ================                                           COMP                                            ================ */
1901 /* =========================================================================================================================== */
1902 
1903 
1904 /**
1905   * @brief Comparator (COMP)
1906   */
1907 
1908 typedef struct {                                /*!< (@ 0x40013000) COMP Structure                                             */
1909   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start comparator                                           */
1910   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stop comparator                                            */
1911   __OM  uint32_t  TASKS_SAMPLE;                 /*!< (@ 0x00000008) Sample comparator value                                    */
1912   __IM  uint32_t  RESERVED[61];
1913   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000100) COMP is ready and output is valid                          */
1914   __IOM uint32_t  EVENTS_DOWN;                  /*!< (@ 0x00000104) Downward crossing                                          */
1915   __IOM uint32_t  EVENTS_UP;                    /*!< (@ 0x00000108) Upward crossing                                            */
1916   __IOM uint32_t  EVENTS_CROSS;                 /*!< (@ 0x0000010C) Downward or upward crossing                                */
1917   __IM  uint32_t  RESERVED1[60];
1918   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1919   __IM  uint32_t  RESERVED2[63];
1920   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1921   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1922   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1923   __IM  uint32_t  RESERVED3[61];
1924   __IM  uint32_t  RESULT;                       /*!< (@ 0x00000400) Compare result                                             */
1925   __IM  uint32_t  RESERVED4[63];
1926   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) COMP enable                                                */
1927   __IOM uint32_t  PSEL;                         /*!< (@ 0x00000504) Pin select                                                 */
1928   __IOM uint32_t  REFSEL;                       /*!< (@ 0x00000508) Reference source select for single-ended mode              */
1929   __IOM uint32_t  EXTREFSEL;                    /*!< (@ 0x0000050C) External reference select                                  */
1930   __IM  uint32_t  RESERVED5[8];
1931   __IOM uint32_t  TH;                           /*!< (@ 0x00000530) Threshold configuration for hysteresis unit                */
1932   __IOM uint32_t  MODE;                         /*!< (@ 0x00000534) Mode configuration                                         */
1933   __IOM uint32_t  HYST;                         /*!< (@ 0x00000538) Comparator hysteresis enable                               */
1934   __IOM uint32_t  ISOURCE;                      /*!< (@ 0x0000053C) Current source select on analog input                      */
1935 } NRF_COMP_Type;                                /*!< Size = 1344 (0x540)                                                       */
1936 
1937 
1938 
1939 /* =========================================================================================================================== */
1940 /* ================                                          LPCOMP                                           ================ */
1941 /* =========================================================================================================================== */
1942 
1943 
1944 /**
1945   * @brief Low Power Comparator (LPCOMP)
1946   */
1947 
1948 typedef struct {                                /*!< (@ 0x40013000) LPCOMP Structure                                           */
1949   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start comparator                                           */
1950   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stop comparator                                            */
1951   __OM  uint32_t  TASKS_SAMPLE;                 /*!< (@ 0x00000008) Sample comparator value                                    */
1952   __IM  uint32_t  RESERVED[61];
1953   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000100) LPCOMP is ready and output is valid                        */
1954   __IOM uint32_t  EVENTS_DOWN;                  /*!< (@ 0x00000104) Downward crossing                                          */
1955   __IOM uint32_t  EVENTS_UP;                    /*!< (@ 0x00000108) Upward crossing                                            */
1956   __IOM uint32_t  EVENTS_CROSS;                 /*!< (@ 0x0000010C) Downward or upward crossing                                */
1957   __IM  uint32_t  RESERVED1[60];
1958   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1959   __IM  uint32_t  RESERVED2[64];
1960   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1961   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1962   __IM  uint32_t  RESERVED3[61];
1963   __IM  uint32_t  RESULT;                       /*!< (@ 0x00000400) Compare result                                             */
1964   __IM  uint32_t  RESERVED4[63];
1965   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable LPCOMP                                              */
1966   __IOM uint32_t  PSEL;                         /*!< (@ 0x00000504) Input pin select                                           */
1967   __IOM uint32_t  REFSEL;                       /*!< (@ 0x00000508) Reference select                                           */
1968   __IOM uint32_t  EXTREFSEL;                    /*!< (@ 0x0000050C) External reference select                                  */
1969   __IM  uint32_t  RESERVED5[4];
1970   __IOM uint32_t  ANADETECT;                    /*!< (@ 0x00000520) Analog detect configuration                                */
1971   __IM  uint32_t  RESERVED6[5];
1972   __IOM uint32_t  HYST;                         /*!< (@ 0x00000538) Comparator hysteresis enable                               */
1973 } NRF_LPCOMP_Type;                              /*!< Size = 1340 (0x53c)                                                       */
1974 
1975 
1976 
1977 /* =========================================================================================================================== */
1978 /* ================                                           EGU0                                            ================ */
1979 /* =========================================================================================================================== */
1980 
1981 
1982 /**
1983   * @brief Event Generator Unit 0 (EGU0)
1984   */
1985 
1986 typedef struct {                                /*!< (@ 0x40014000) EGU0 Structure                                             */
1987   __OM  uint32_t  TASKS_TRIGGER[16];            /*!< (@ 0x00000000) Description collection: Trigger n for triggering
1988                                                                     the corresponding TRIGGERED[n] event                       */
1989   __IM  uint32_t  RESERVED[48];
1990   __IOM uint32_t  EVENTS_TRIGGERED[16];         /*!< (@ 0x00000100) Description collection: Event number n generated
1991                                                                     by triggering the corresponding TRIGGER[n]
1992                                                                     task                                                       */
1993   __IM  uint32_t  RESERVED1[112];
1994   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1995   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1996   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1997 } NRF_EGU_Type;                                 /*!< Size = 780 (0x30c)                                                        */
1998 
1999 
2000 
2001 /* =========================================================================================================================== */
2002 /* ================                                           SWI0                                            ================ */
2003 /* =========================================================================================================================== */
2004 
2005 
2006 /**
2007   * @brief Software interrupt 0 (SWI0)
2008   */
2009 
2010 typedef struct {                                /*!< (@ 0x40014000) SWI0 Structure                                             */
2011   __IM  uint32_t  UNUSED;                       /*!< (@ 0x00000000) Unused.                                                    */
2012 } NRF_SWI_Type;                                 /*!< Size = 4 (0x4)                                                            */
2013 
2014 
2015 
2016 /* =========================================================================================================================== */
2017 /* ================                                           PWM0                                            ================ */
2018 /* =========================================================================================================================== */
2019 
2020 
2021 /**
2022   * @brief Pulse Width Modulation Unit 0 (PWM0)
2023   */
2024 
2025 typedef struct {                                /*!< (@ 0x4001C000) PWM0 Structure                                             */
2026   __IM  uint32_t  RESERVED;
2027   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stops PWM pulse generation on all channels at
2028                                                                     the end of current PWM period, and stops
2029                                                                     sequence playback                                          */
2030   __OM  uint32_t  TASKS_SEQSTART[2];            /*!< (@ 0x00000008) Description collection: Loads the first PWM value
2031                                                                     on all enabled channels from sequence n,
2032                                                                     and starts playing that sequence at the
2033                                                                     rate defined in SEQ[n]REFRESH and/or DECODER.MODE.
2034                                                                     Causes PWM generation to start it was not
2035                                                                     running.                                                   */
2036   __OM  uint32_t  TASKS_NEXTSTEP;               /*!< (@ 0x00000010) Steps by one value in the current sequence on
2037                                                                     all enabled channels if DECODER.MODE=NextStep.
2038                                                                     Does not cause PWM generation to start it
2039                                                                     was not running.                                           */
2040   __IM  uint32_t  RESERVED1[60];
2041   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) Response to STOP task, emitted when PWM pulses
2042                                                                     are no longer generated                                    */
2043   __IOM uint32_t  EVENTS_SEQSTARTED[2];         /*!< (@ 0x00000108) Description collection: First PWM period started
2044                                                                     on sequence n                                              */
2045   __IOM uint32_t  EVENTS_SEQEND[2];             /*!< (@ 0x00000110) Description collection: Emitted at end of every
2046                                                                     sequence n, when last value from RAM has
2047                                                                     been applied to wave counter                               */
2048   __IOM uint32_t  EVENTS_PWMPERIODEND;          /*!< (@ 0x00000118) Emitted at the end of each PWM period                      */
2049   __IOM uint32_t  EVENTS_LOOPSDONE;             /*!< (@ 0x0000011C) Concatenated sequences have been played the amount
2050                                                                     of times defined in LOOP.CNT                               */
2051   __IM  uint32_t  RESERVED2[56];
2052   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
2053   __IM  uint32_t  RESERVED3[63];
2054   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2055   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2056   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2057   __IM  uint32_t  RESERVED4[125];
2058   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) PWM module enable register                                 */
2059   __IOM uint32_t  MODE;                         /*!< (@ 0x00000504) Selects operating mode of the wave counter                 */
2060   __IOM uint32_t  COUNTERTOP;                   /*!< (@ 0x00000508) Value up to which the pulse generator counter
2061                                                                     counts                                                     */
2062   __IOM uint32_t  PRESCALER;                    /*!< (@ 0x0000050C) Configuration for PWM_CLK                                  */
2063   __IOM uint32_t  DECODER;                      /*!< (@ 0x00000510) Configuration of the decoder                               */
2064   __IOM uint32_t  LOOP;                         /*!< (@ 0x00000514) Amount of playback of a loop                               */
2065   __IM  uint32_t  RESERVED5[2];
2066   __IOM PWM_SEQ_Type SEQ[2];                    /*!< (@ 0x00000520) Unspecified                                                */
2067   __IOM PWM_PSEL_Type PSEL;                     /*!< (@ 0x00000560) Unspecified                                                */
2068 } NRF_PWM_Type;                                 /*!< Size = 1392 (0x570)                                                       */
2069 
2070 
2071 
2072 /* =========================================================================================================================== */
2073 /* ================                                            PDM                                            ================ */
2074 /* =========================================================================================================================== */
2075 
2076 
2077 /**
2078   * @brief Pulse Density Modulation (Digital Microphone) Interface (PDM)
2079   */
2080 
2081 typedef struct {                                /*!< (@ 0x4001D000) PDM Structure                                              */
2082   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Starts continuous PDM transfer                             */
2083   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stops PDM transfer                                         */
2084   __IM  uint32_t  RESERVED[62];
2085   __IOM uint32_t  EVENTS_STARTED;               /*!< (@ 0x00000100) PDM transfer has started                                   */
2086   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) PDM transfer has finished                                  */
2087   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x00000108) The PDM has written the last sample specified
2088                                                                     by SAMPLE.MAXCNT (or the last sample after
2089                                                                     a STOP task has been received) to Data RAM                 */
2090   __IM  uint32_t  RESERVED1[125];
2091   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2092   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2093   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2094   __IM  uint32_t  RESERVED2[125];
2095   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) PDM module enable register                                 */
2096   __IOM uint32_t  PDMCLKCTRL;                   /*!< (@ 0x00000504) PDM clock generator control                                */
2097   __IOM uint32_t  MODE;                         /*!< (@ 0x00000508) Defines the routing of the connected PDM microphones'
2098                                                                     signals                                                    */
2099   __IM  uint32_t  RESERVED3[3];
2100   __IOM uint32_t  GAINL;                        /*!< (@ 0x00000518) Left output gain adjustment                                */
2101   __IOM uint32_t  GAINR;                        /*!< (@ 0x0000051C) Right output gain adjustment                               */
2102   __IM  uint32_t  RESERVED4[8];
2103   __IOM PDM_PSEL_Type PSEL;                     /*!< (@ 0x00000540) Unspecified                                                */
2104   __IM  uint32_t  RESERVED5[6];
2105   __IOM PDM_SAMPLE_Type SAMPLE;                 /*!< (@ 0x00000560) Unspecified                                                */
2106 } NRF_PDM_Type;                                 /*!< Size = 1384 (0x568)                                                       */
2107 
2108 
2109 
2110 /* =========================================================================================================================== */
2111 /* ================                                           NVMC                                            ================ */
2112 /* =========================================================================================================================== */
2113 
2114 
2115 /**
2116   * @brief Non Volatile Memory Controller (NVMC)
2117   */
2118 
2119 typedef struct {                                /*!< (@ 0x4001E000) NVMC Structure                                             */
2120   __IM  uint32_t  RESERVED[256];
2121   __IM  uint32_t  READY;                        /*!< (@ 0x00000400) Ready flag                                                 */
2122   __IM  uint32_t  RESERVED1[64];
2123   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000504) Configuration register                                     */
2124 
2125   union {
2126     __IOM uint32_t ERASEPAGE;                   /*!< (@ 0x00000508) Register for erasing a page in Code area                   */
2127     __IOM uint32_t ERASEPCR1;                   /*!< (@ 0x00000508) Deprecated register - Register for erasing a
2128                                                                     page in Code area. Equivalent to ERASEPAGE.                */
2129   };
2130   __IOM uint32_t  ERASEALL;                     /*!< (@ 0x0000050C) Register for erasing all non-volatile user memory          */
2131   __IOM uint32_t  ERASEPCR0;                    /*!< (@ 0x00000510) Deprecated register - Register for erasing a
2132                                                                     page in Code area. Equivalent to ERASEPAGE.                */
2133   __IOM uint32_t  ERASEUICR;                    /*!< (@ 0x00000514) Register for erasing User Information Configuration
2134                                                                     Registers                                                  */
2135   __IM  uint32_t  RESERVED2[10];
2136   __IOM uint32_t  ICACHECNF;                    /*!< (@ 0x00000540) I-Code cache configuration register.                       */
2137   __IM  uint32_t  RESERVED3;
2138   __IOM uint32_t  IHIT;                         /*!< (@ 0x00000548) I-Code cache hit counter.                                  */
2139   __IOM uint32_t  IMISS;                        /*!< (@ 0x0000054C) I-Code cache miss counter.                                 */
2140 } NRF_NVMC_Type;                                /*!< Size = 1360 (0x550)                                                       */
2141 
2142 
2143 
2144 /* =========================================================================================================================== */
2145 /* ================                                            PPI                                            ================ */
2146 /* =========================================================================================================================== */
2147 
2148 
2149 /**
2150   * @brief Programmable Peripheral Interconnect (PPI)
2151   */
2152 
2153 typedef struct {                                /*!< (@ 0x4001F000) PPI Structure                                              */
2154   __OM  PPI_TASKS_CHG_Type TASKS_CHG[6];        /*!< (@ 0x00000000) Channel group tasks                                        */
2155   __IM  uint32_t  RESERVED[308];
2156   __IOM uint32_t  CHEN;                         /*!< (@ 0x00000500) Channel enable register                                    */
2157   __IOM uint32_t  CHENSET;                      /*!< (@ 0x00000504) Channel enable set register                                */
2158   __IOM uint32_t  CHENCLR;                      /*!< (@ 0x00000508) Channel enable clear register                              */
2159   __IM  uint32_t  RESERVED1;
2160   __IOM PPI_CH_Type CH[20];                     /*!< (@ 0x00000510) PPI Channel                                                */
2161   __IM  uint32_t  RESERVED2[148];
2162   __IOM uint32_t  CHG[6];                       /*!< (@ 0x00000800) Description collection: Channel group n                    */
2163   __IM  uint32_t  RESERVED3[62];
2164   __IOM PPI_FORK_Type FORK[32];                 /*!< (@ 0x00000910) Fork                                                       */
2165 } NRF_PPI_Type;                                 /*!< Size = 2448 (0x990)                                                       */
2166 
2167 
2168 
2169 /* =========================================================================================================================== */
2170 /* ================                                            MWU                                            ================ */
2171 /* =========================================================================================================================== */
2172 
2173 
2174 /**
2175   * @brief Memory Watch Unit (MWU)
2176   */
2177 
2178 typedef struct {                                /*!< (@ 0x40020000) MWU Structure                                              */
2179   __IM  uint32_t  RESERVED[64];
2180   __IOM MWU_EVENTS_REGION_Type EVENTS_REGION[4];/*!< (@ 0x00000100) Peripheral events.                                         */
2181   __IM  uint32_t  RESERVED1[16];
2182   __IOM MWU_EVENTS_PREGION_Type EVENTS_PREGION[2];/*!< (@ 0x00000160) Peripheral events.                                       */
2183   __IM  uint32_t  RESERVED2[100];
2184   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2185   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2186   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2187   __IM  uint32_t  RESERVED3[5];
2188   __IOM uint32_t  NMIEN;                        /*!< (@ 0x00000320) Enable or disable interrupt                                */
2189   __IOM uint32_t  NMIENSET;                     /*!< (@ 0x00000324) Enable interrupt                                           */
2190   __IOM uint32_t  NMIENCLR;                     /*!< (@ 0x00000328) Disable interrupt                                          */
2191   __IM  uint32_t  RESERVED4[53];
2192   __IOM MWU_PERREGION_Type PERREGION[2];        /*!< (@ 0x00000400) Unspecified                                                */
2193   __IM  uint32_t  RESERVED5[64];
2194   __IOM uint32_t  REGIONEN;                     /*!< (@ 0x00000510) Enable/disable regions watch                               */
2195   __IOM uint32_t  REGIONENSET;                  /*!< (@ 0x00000514) Enable regions watch                                       */
2196   __IOM uint32_t  REGIONENCLR;                  /*!< (@ 0x00000518) Disable regions watch                                      */
2197   __IM  uint32_t  RESERVED6[57];
2198   __IOM MWU_REGION_Type REGION[4];              /*!< (@ 0x00000600) Unspecified                                                */
2199   __IM  uint32_t  RESERVED7[32];
2200   __IOM MWU_PREGION_Type PREGION[2];            /*!< (@ 0x000006C0) Unspecified                                                */
2201 } NRF_MWU_Type;                                 /*!< Size = 1760 (0x6e0)                                                       */
2202 
2203 
2204 
2205 /* =========================================================================================================================== */
2206 /* ================                                            I2S                                            ================ */
2207 /* =========================================================================================================================== */
2208 
2209 
2210 /**
2211   * @brief Inter-IC Sound (I2S)
2212   */
2213 
2214 typedef struct {                                /*!< (@ 0x40025000) I2S Structure                                              */
2215   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Starts continuous I2S transfer. Also starts MCK
2216                                                                     generator when this is enabled.                            */
2217   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stops I2S transfer. Also stops MCK generator.
2218                                                                     Triggering this task will cause the {event:STOPPED}
2219                                                                     event to be generated.                                     */
2220   __IM  uint32_t  RESERVED[63];
2221   __IOM uint32_t  EVENTS_RXPTRUPD;              /*!< (@ 0x00000104) The RXD.PTR register has been copied to internal
2222                                                                     double-buffers. When the I2S module is started
2223                                                                     and RX is enabled, this event will be generated
2224                                                                     for every RXTXD.MAXCNT words that are received
2225                                                                     on the SDIN pin.                                           */
2226   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000108) I2S transfer stopped.                                      */
2227   __IM  uint32_t  RESERVED1[2];
2228   __IOM uint32_t  EVENTS_TXPTRUPD;              /*!< (@ 0x00000114) The TDX.PTR register has been copied to internal
2229                                                                     double-buffers. When the I2S module is started
2230                                                                     and TX is enabled, this event will be generated
2231                                                                     for every RXTXD.MAXCNT words that are sent
2232                                                                     on the SDOUT pin.                                          */
2233   __IM  uint32_t  RESERVED2[122];
2234   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2235   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2236   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2237   __IM  uint32_t  RESERVED3[125];
2238   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable I2S module.                                         */
2239   __IOM I2S_CONFIG_Type CONFIG;                 /*!< (@ 0x00000504) Unspecified                                                */
2240   __IM  uint32_t  RESERVED4[3];
2241   __IOM I2S_RXD_Type RXD;                       /*!< (@ 0x00000538) Unspecified                                                */
2242   __IM  uint32_t  RESERVED5;
2243   __IOM I2S_TXD_Type TXD;                       /*!< (@ 0x00000540) Unspecified                                                */
2244   __IM  uint32_t  RESERVED6[3];
2245   __IOM I2S_RXTXD_Type RXTXD;                   /*!< (@ 0x00000550) Unspecified                                                */
2246   __IM  uint32_t  RESERVED7[3];
2247   __IOM I2S_PSEL_Type PSEL;                     /*!< (@ 0x00000560) Unspecified                                                */
2248 } NRF_I2S_Type;                                 /*!< Size = 1396 (0x574)                                                       */
2249 
2250 
2251 
2252 /* =========================================================================================================================== */
2253 /* ================                                            FPU                                            ================ */
2254 /* =========================================================================================================================== */
2255 
2256 
2257 /**
2258   * @brief FPU (FPU)
2259   */
2260 
2261 typedef struct {                                /*!< (@ 0x40026000) FPU Structure                                              */
2262   __IM  uint32_t  UNUSED;                       /*!< (@ 0x00000000) Unused.                                                    */
2263 } NRF_FPU_Type;                                 /*!< Size = 4 (0x4)                                                            */
2264 
2265 
2266 /** @} */ /* End of group Device_Peripheral_peripherals */
2267 
2268 
2269 /* =========================================================================================================================== */
2270 /* ================                          Device Specific Peripheral Address Map                           ================ */
2271 /* =========================================================================================================================== */
2272 
2273 
2274 /** @addtogroup Device_Peripheral_peripheralAddr
2275   * @{
2276   */
2277 
2278 #define NRF_FICR_BASE               0x10000000UL
2279 #define NRF_UICR_BASE               0x10001000UL
2280 #define NRF_APPROTECT_BASE          0x40000000UL
2281 #define NRF_BPROT_BASE              0x40000000UL
2282 #define NRF_CLOCK_BASE              0x40000000UL
2283 #define NRF_POWER_BASE              0x40000000UL
2284 #define NRF_P0_BASE                 0x50000000UL
2285 #define NRF_RADIO_BASE              0x40001000UL
2286 #define NRF_UART0_BASE              0x40002000UL
2287 #define NRF_UARTE0_BASE             0x40002000UL
2288 #define NRF_SPI0_BASE               0x40003000UL
2289 #define NRF_SPIM0_BASE              0x40003000UL
2290 #define NRF_SPIS0_BASE              0x40003000UL
2291 #define NRF_TWI0_BASE               0x40003000UL
2292 #define NRF_TWIM0_BASE              0x40003000UL
2293 #define NRF_TWIS0_BASE              0x40003000UL
2294 #define NRF_SPI1_BASE               0x40004000UL
2295 #define NRF_SPIM1_BASE              0x40004000UL
2296 #define NRF_SPIS1_BASE              0x40004000UL
2297 #define NRF_TWI1_BASE               0x40004000UL
2298 #define NRF_TWIM1_BASE              0x40004000UL
2299 #define NRF_TWIS1_BASE              0x40004000UL
2300 #define NRF_NFCT_BASE               0x40005000UL
2301 #define NRF_GPIOTE_BASE             0x40006000UL
2302 #define NRF_SAADC_BASE              0x40007000UL
2303 #define NRF_TIMER0_BASE             0x40008000UL
2304 #define NRF_TIMER1_BASE             0x40009000UL
2305 #define NRF_TIMER2_BASE             0x4000A000UL
2306 #define NRF_RTC0_BASE               0x4000B000UL
2307 #define NRF_TEMP_BASE               0x4000C000UL
2308 #define NRF_RNG_BASE                0x4000D000UL
2309 #define NRF_ECB_BASE                0x4000E000UL
2310 #define NRF_AAR_BASE                0x4000F000UL
2311 #define NRF_CCM_BASE                0x4000F000UL
2312 #define NRF_WDT_BASE                0x40010000UL
2313 #define NRF_RTC1_BASE               0x40011000UL
2314 #define NRF_QDEC_BASE               0x40012000UL
2315 #define NRF_COMP_BASE               0x40013000UL
2316 #define NRF_LPCOMP_BASE             0x40013000UL
2317 #define NRF_EGU0_BASE               0x40014000UL
2318 #define NRF_SWI0_BASE               0x40014000UL
2319 #define NRF_EGU1_BASE               0x40015000UL
2320 #define NRF_SWI1_BASE               0x40015000UL
2321 #define NRF_EGU2_BASE               0x40016000UL
2322 #define NRF_SWI2_BASE               0x40016000UL
2323 #define NRF_EGU3_BASE               0x40017000UL
2324 #define NRF_SWI3_BASE               0x40017000UL
2325 #define NRF_EGU4_BASE               0x40018000UL
2326 #define NRF_SWI4_BASE               0x40018000UL
2327 #define NRF_EGU5_BASE               0x40019000UL
2328 #define NRF_SWI5_BASE               0x40019000UL
2329 #define NRF_TIMER3_BASE             0x4001A000UL
2330 #define NRF_TIMER4_BASE             0x4001B000UL
2331 #define NRF_PWM0_BASE               0x4001C000UL
2332 #define NRF_PDM_BASE                0x4001D000UL
2333 #define NRF_NVMC_BASE               0x4001E000UL
2334 #define NRF_PPI_BASE                0x4001F000UL
2335 #define NRF_MWU_BASE                0x40020000UL
2336 #define NRF_PWM1_BASE               0x40021000UL
2337 #define NRF_PWM2_BASE               0x40022000UL
2338 #define NRF_SPI2_BASE               0x40023000UL
2339 #define NRF_SPIM2_BASE              0x40023000UL
2340 #define NRF_SPIS2_BASE              0x40023000UL
2341 #define NRF_RTC2_BASE               0x40024000UL
2342 #define NRF_I2S_BASE                0x40025000UL
2343 #define NRF_FPU_BASE                0x40026000UL
2344 
2345 /** @} */ /* End of group Device_Peripheral_peripheralAddr */
2346 
2347 
2348 /* =========================================================================================================================== */
2349 /* ================                                  Peripheral declaration                                   ================ */
2350 /* =========================================================================================================================== */
2351 
2352 
2353 /** @addtogroup Device_Peripheral_declaration
2354   * @{
2355   */
2356 
2357 #define NRF_FICR                    ((NRF_FICR_Type*)          NRF_FICR_BASE)
2358 #define NRF_UICR                    ((NRF_UICR_Type*)          NRF_UICR_BASE)
2359 #define NRF_APPROTECT               ((NRF_APPROTECT_Type*)     NRF_APPROTECT_BASE)
2360 #define NRF_BPROT                   ((NRF_BPROT_Type*)         NRF_BPROT_BASE)
2361 #define NRF_CLOCK                   ((NRF_CLOCK_Type*)         NRF_CLOCK_BASE)
2362 #define NRF_POWER                   ((NRF_POWER_Type*)         NRF_POWER_BASE)
2363 #define NRF_P0                      ((NRF_GPIO_Type*)          NRF_P0_BASE)
2364 #define NRF_RADIO                   ((NRF_RADIO_Type*)         NRF_RADIO_BASE)
2365 #define NRF_UART0                   ((NRF_UART_Type*)          NRF_UART0_BASE)
2366 #define NRF_UARTE0                  ((NRF_UARTE_Type*)         NRF_UARTE0_BASE)
2367 #define NRF_SPI0                    ((NRF_SPI_Type*)           NRF_SPI0_BASE)
2368 #define NRF_SPIM0                   ((NRF_SPIM_Type*)          NRF_SPIM0_BASE)
2369 #define NRF_SPIS0                   ((NRF_SPIS_Type*)          NRF_SPIS0_BASE)
2370 #define NRF_TWI0                    ((NRF_TWI_Type*)           NRF_TWI0_BASE)
2371 #define NRF_TWIM0                   ((NRF_TWIM_Type*)          NRF_TWIM0_BASE)
2372 #define NRF_TWIS0                   ((NRF_TWIS_Type*)          NRF_TWIS0_BASE)
2373 #define NRF_SPI1                    ((NRF_SPI_Type*)           NRF_SPI1_BASE)
2374 #define NRF_SPIM1                   ((NRF_SPIM_Type*)          NRF_SPIM1_BASE)
2375 #define NRF_SPIS1                   ((NRF_SPIS_Type*)          NRF_SPIS1_BASE)
2376 #define NRF_TWI1                    ((NRF_TWI_Type*)           NRF_TWI1_BASE)
2377 #define NRF_TWIM1                   ((NRF_TWIM_Type*)          NRF_TWIM1_BASE)
2378 #define NRF_TWIS1                   ((NRF_TWIS_Type*)          NRF_TWIS1_BASE)
2379 #define NRF_NFCT                    ((NRF_NFCT_Type*)          NRF_NFCT_BASE)
2380 #define NRF_GPIOTE                  ((NRF_GPIOTE_Type*)        NRF_GPIOTE_BASE)
2381 #define NRF_SAADC                   ((NRF_SAADC_Type*)         NRF_SAADC_BASE)
2382 #define NRF_TIMER0                  ((NRF_TIMER_Type*)         NRF_TIMER0_BASE)
2383 #define NRF_TIMER1                  ((NRF_TIMER_Type*)         NRF_TIMER1_BASE)
2384 #define NRF_TIMER2                  ((NRF_TIMER_Type*)         NRF_TIMER2_BASE)
2385 #define NRF_RTC0                    ((NRF_RTC_Type*)           NRF_RTC0_BASE)
2386 #define NRF_TEMP                    ((NRF_TEMP_Type*)          NRF_TEMP_BASE)
2387 #define NRF_RNG                     ((NRF_RNG_Type*)           NRF_RNG_BASE)
2388 #define NRF_ECB                     ((NRF_ECB_Type*)           NRF_ECB_BASE)
2389 #define NRF_AAR                     ((NRF_AAR_Type*)           NRF_AAR_BASE)
2390 #define NRF_CCM                     ((NRF_CCM_Type*)           NRF_CCM_BASE)
2391 #define NRF_WDT                     ((NRF_WDT_Type*)           NRF_WDT_BASE)
2392 #define NRF_RTC1                    ((NRF_RTC_Type*)           NRF_RTC1_BASE)
2393 #define NRF_QDEC                    ((NRF_QDEC_Type*)          NRF_QDEC_BASE)
2394 #define NRF_COMP                    ((NRF_COMP_Type*)          NRF_COMP_BASE)
2395 #define NRF_LPCOMP                  ((NRF_LPCOMP_Type*)        NRF_LPCOMP_BASE)
2396 #define NRF_EGU0                    ((NRF_EGU_Type*)           NRF_EGU0_BASE)
2397 #define NRF_SWI0                    ((NRF_SWI_Type*)           NRF_SWI0_BASE)
2398 #define NRF_EGU1                    ((NRF_EGU_Type*)           NRF_EGU1_BASE)
2399 #define NRF_SWI1                    ((NRF_SWI_Type*)           NRF_SWI1_BASE)
2400 #define NRF_EGU2                    ((NRF_EGU_Type*)           NRF_EGU2_BASE)
2401 #define NRF_SWI2                    ((NRF_SWI_Type*)           NRF_SWI2_BASE)
2402 #define NRF_EGU3                    ((NRF_EGU_Type*)           NRF_EGU3_BASE)
2403 #define NRF_SWI3                    ((NRF_SWI_Type*)           NRF_SWI3_BASE)
2404 #define NRF_EGU4                    ((NRF_EGU_Type*)           NRF_EGU4_BASE)
2405 #define NRF_SWI4                    ((NRF_SWI_Type*)           NRF_SWI4_BASE)
2406 #define NRF_EGU5                    ((NRF_EGU_Type*)           NRF_EGU5_BASE)
2407 #define NRF_SWI5                    ((NRF_SWI_Type*)           NRF_SWI5_BASE)
2408 #define NRF_TIMER3                  ((NRF_TIMER_Type*)         NRF_TIMER3_BASE)
2409 #define NRF_TIMER4                  ((NRF_TIMER_Type*)         NRF_TIMER4_BASE)
2410 #define NRF_PWM0                    ((NRF_PWM_Type*)           NRF_PWM0_BASE)
2411 #define NRF_PDM                     ((NRF_PDM_Type*)           NRF_PDM_BASE)
2412 #define NRF_NVMC                    ((NRF_NVMC_Type*)          NRF_NVMC_BASE)
2413 #define NRF_PPI                     ((NRF_PPI_Type*)           NRF_PPI_BASE)
2414 #define NRF_MWU                     ((NRF_MWU_Type*)           NRF_MWU_BASE)
2415 #define NRF_PWM1                    ((NRF_PWM_Type*)           NRF_PWM1_BASE)
2416 #define NRF_PWM2                    ((NRF_PWM_Type*)           NRF_PWM2_BASE)
2417 #define NRF_SPI2                    ((NRF_SPI_Type*)           NRF_SPI2_BASE)
2418 #define NRF_SPIM2                   ((NRF_SPIM_Type*)          NRF_SPIM2_BASE)
2419 #define NRF_SPIS2                   ((NRF_SPIS_Type*)          NRF_SPIS2_BASE)
2420 #define NRF_RTC2                    ((NRF_RTC_Type*)           NRF_RTC2_BASE)
2421 #define NRF_I2S                     ((NRF_I2S_Type*)           NRF_I2S_BASE)
2422 #define NRF_FPU                     ((NRF_FPU_Type*)           NRF_FPU_BASE)
2423 
2424 /** @} */ /* End of group Device_Peripheral_declaration */
2425 
2426 
2427 /* =========================================  End of section using anonymous unions  ========================================= */
2428 #if defined (__CC_ARM)
2429   #pragma pop
2430 #elif defined (__ICCARM__)
2431   /* leave anonymous unions enabled */
2432 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
2433   #pragma clang diagnostic pop
2434 #elif defined (__GNUC__)
2435   /* anonymous unions are enabled by default */
2436 #elif defined (__TMS470__)
2437   /* anonymous unions are enabled by default */
2438 #elif defined (__TASKING__)
2439   #pragma warning restore
2440 #elif defined (__CSMC__)
2441   /* anonymous unions are enabled by default */
2442 #endif
2443 
2444 
2445 #ifdef __cplusplus
2446 }
2447 #endif
2448 
2449 #endif /* NRF52_H */
2450 
2451 
2452 /** @} */ /* End of group nrf52 */
2453 
2454 /** @} */ /* End of group Nordic Semiconductor */
2455