1 /*
2 Copyright (c) 2010 - 2024, Nordic Semiconductor ASA All rights reserved.\n
3 \n
4 SPDX-License-Identifier: BSD-3-Clause\n
5 \n
6 Redistribution and use in source and binary forms, with or without\n
7 modification, are permitted provided that the following conditions are met:\n
8 \n
9 1. Redistributions of source code must retain the above copyright notice, this\n
10    list of conditions and the following disclaimer.\n
11 \n
12 2. Redistributions in binary form must reproduce the above copyright\n
13    notice, this list of conditions and the following disclaimer in the\n
14    documentation and/or other materials provided with the distribution.\n
15 \n
16 3. Neither the name of Nordic Semiconductor ASA nor the names of its\n
17    contributors may be used to endorse or promote products derived from this\n
18    software without specific prior written permission.\n
19 \n
20 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\n
21 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n
22 IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE\n
23 ARE DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE\n
24 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n
25 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n
26 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n
27 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n
28 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n
29 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n
30 POSSIBILITY OF SUCH DAMAGE.\n
31  *
32  * @file     nrf52840.h
33  * @brief    CMSIS HeaderFile
34  * @version  1
35  * @date     22. April 2024
36  * @note     Generated by SVDConv V3.3.35 on Monday, 22.04.2024 15:21:07
37  *           from File 'nrf52840.svd',
38  *           last modified on Monday, 22.04.2024 13:20:06
39  */
40 
41 
42 
43 /** @addtogroup Nordic Semiconductor
44   * @{
45   */
46 
47 
48 /** @addtogroup nrf52840
49   * @{
50   */
51 
52 
53 #ifndef NRF52840_H
54 #define NRF52840_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 /* ==========================================  nrf52840 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   USBD_IRQn                 =  39,              /*!< 39 USBD                                                                   */
124   UARTE1_IRQn               =  40,              /*!< 40 UARTE1                                                                 */
125   QSPI_IRQn                 =  41,              /*!< 41 QSPI                                                                   */
126   CRYPTOCELL_IRQn           =  42,              /*!< 42 CRYPTOCELL                                                             */
127   PWM3_IRQn                 =  45,              /*!< 45 PWM3                                                                   */
128   SPIM3_IRQn                =  47               /*!< 47 SPIM3                                                                  */
129 } IRQn_Type;
130 
131 
132 
133 /* =========================================================================================================================== */
134 /* ================                           Processor and Core Peripheral Section                           ================ */
135 /* =========================================================================================================================== */
136 
137 /* ===========================  Configuration of the ARM Cortex-M4 Processor and Core Peripherals  =========================== */
138 #define __CM4_REV                 0x0001U       /*!< CM4 Core Revision                                                         */
139 #define __INTERRUPTS_MAX                   112        /*!< Top interrupt number                                                      */
140 #define __DSP_PRESENT                  1        /*!< DSP present or not                                                        */
141 #define __VTOR_PRESENT                 1        /*!< Set to 1 if CPU supports Vector Table Offset Register                     */
142 #define __NVIC_PRIO_BITS               3        /*!< Number of Bits used for Priority Levels                                   */
143 #define __Vendor_SysTickConfig         0        /*!< Set to 1 if different SysTick Config is used                              */
144 #define __MPU_PRESENT                  1        /*!< MPU present                                                               */
145 #define __FPU_PRESENT                  1        /*!< FPU present                                                               */
146 
147 
148 /** @} */ /* End of group Configuration_of_CMSIS */
149 
150 #include "core_cm4.h"                           /*!< ARM Cortex-M4 processor and core peripherals                              */
151 #include "system_nrf52840.h"                    /*!< nrf52840 System                                                           */
152 
153 #ifndef __IM                                    /*!< Fallback for older CMSIS versions                                         */
154   #define __IM   __I
155 #endif
156 #ifndef __OM                                    /*!< Fallback for older CMSIS versions                                         */
157   #define __OM   __O
158 #endif
159 #ifndef __IOM                                   /*!< Fallback for older CMSIS versions                                         */
160   #define __IOM  __IO
161 #endif
162 
163 
164 /* ========================================  Start of section using anonymous unions  ======================================== */
165 #if defined (__CC_ARM)
166   #pragma push
167   #pragma anon_unions
168 #elif defined (__ICCARM__)
169   #pragma language=extended
170 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
171   #pragma clang diagnostic push
172   #pragma clang diagnostic ignored "-Wc11-extensions"
173   #pragma clang diagnostic ignored "-Wreserved-id-macro"
174   #pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
175   #pragma clang diagnostic ignored "-Wnested-anon-types"
176 #elif defined (__GNUC__)
177   /* anonymous unions are enabled by default */
178 #elif defined (__TMS470__)
179   /* anonymous unions are enabled by default */
180 #elif defined (__TASKING__)
181   #pragma warning 586
182 #elif defined (__CSMC__)
183   /* anonymous unions are enabled by default */
184 #else
185   #warning Not supported compiler type
186 #endif
187 
188 
189 /* =========================================================================================================================== */
190 /* ================                              Device Specific Cluster Section                              ================ */
191 /* =========================================================================================================================== */
192 
193 
194 /** @addtogroup Device_Peripheral_clusters
195   * @{
196   */
197 
198 
199 /**
200   * @brief FICR_INFO [INFO] (Device info)
201   */
202 typedef struct {
203   __IM  uint32_t  PART;                         /*!< (@ 0x00000000) Part code                                                  */
204   __IM  uint32_t  VARIANT;                      /*!< (@ 0x00000004) Build code (hardware version and production configuration) */
205   __IM  uint32_t  PACKAGE;                      /*!< (@ 0x00000008) Package option                                             */
206   __IM  uint32_t  RAM;                          /*!< (@ 0x0000000C) RAM variant                                                */
207   __IM  uint32_t  FLASH;                        /*!< (@ 0x00000010) Flash variant                                              */
208 } FICR_INFO_Type;                               /*!< Size = 20 (0x14)                                                          */
209 
210 
211 /**
212   * @brief FICR_TEMP [TEMP] (Registers storing factory TEMP module linearization coefficients)
213   */
214 typedef struct {
215   __IM  uint32_t  A0;                           /*!< (@ 0x00000000) Slope definition A0                                        */
216   __IM  uint32_t  A1;                           /*!< (@ 0x00000004) Slope definition A1                                        */
217   __IM  uint32_t  A2;                           /*!< (@ 0x00000008) Slope definition A2                                        */
218   __IM  uint32_t  A3;                           /*!< (@ 0x0000000C) Slope definition A3                                        */
219   __IM  uint32_t  A4;                           /*!< (@ 0x00000010) Slope definition A4                                        */
220   __IM  uint32_t  A5;                           /*!< (@ 0x00000014) Slope definition A5                                        */
221   __IM  uint32_t  B0;                           /*!< (@ 0x00000018) Y-intercept B0                                             */
222   __IM  uint32_t  B1;                           /*!< (@ 0x0000001C) Y-intercept B1                                             */
223   __IM  uint32_t  B2;                           /*!< (@ 0x00000020) Y-intercept B2                                             */
224   __IM  uint32_t  B3;                           /*!< (@ 0x00000024) Y-intercept B3                                             */
225   __IM  uint32_t  B4;                           /*!< (@ 0x00000028) Y-intercept B4                                             */
226   __IM  uint32_t  B5;                           /*!< (@ 0x0000002C) Y-intercept B5                                             */
227   __IM  uint32_t  T0;                           /*!< (@ 0x00000030) Segment end T0                                             */
228   __IM  uint32_t  T1;                           /*!< (@ 0x00000034) Segment end T1                                             */
229   __IM  uint32_t  T2;                           /*!< (@ 0x00000038) Segment end T2                                             */
230   __IM  uint32_t  T3;                           /*!< (@ 0x0000003C) Segment end T3                                             */
231   __IM  uint32_t  T4;                           /*!< (@ 0x00000040) Segment end T4                                             */
232 } FICR_TEMP_Type;                               /*!< Size = 68 (0x44)                                                          */
233 
234 
235 /**
236   * @brief FICR_NFC [NFC] (Unspecified)
237   */
238 typedef struct {
239   __IM  uint32_t  TAGHEADER0;                   /*!< (@ 0x00000000) Default header for NFC tag. Software can read
240                                                                     these values to populate NFCID1_3RD_LAST,
241                                                                     NFCID1_2ND_LAST, and NFCID1_LAST.                          */
242   __IM  uint32_t  TAGHEADER1;                   /*!< (@ 0x00000004) Default header for NFC tag. Software can read
243                                                                     these values to populate NFCID1_3RD_LAST,
244                                                                     NFCID1_2ND_LAST, and NFCID1_LAST.                          */
245   __IM  uint32_t  TAGHEADER2;                   /*!< (@ 0x00000008) Default header for NFC tag. Software can read
246                                                                     these values to populate NFCID1_3RD_LAST,
247                                                                     NFCID1_2ND_LAST, and NFCID1_LAST.                          */
248   __IM  uint32_t  TAGHEADER3;                   /*!< (@ 0x0000000C) Default header for NFC tag. Software can read
249                                                                     these values to populate NFCID1_3RD_LAST,
250                                                                     NFCID1_2ND_LAST, and NFCID1_LAST.                          */
251 } FICR_NFC_Type;                                /*!< Size = 16 (0x10)                                                          */
252 
253 
254 /**
255   * @brief FICR_TRNG90B [TRNG90B] (NIST800-90B RNG calibration data)
256   */
257 typedef struct {
258   __IM  uint32_t  BYTES;                        /*!< (@ 0x00000000) Amount of bytes for the required entropy bits              */
259   __IM  uint32_t  RCCUTOFF;                     /*!< (@ 0x00000004) Repetition counter cutoff                                  */
260   __IM  uint32_t  APCUTOFF;                     /*!< (@ 0x00000008) Adaptive proportion cutoff                                 */
261   __IM  uint32_t  STARTUP;                      /*!< (@ 0x0000000C) Amount of bytes for the startup tests                      */
262   __IM  uint32_t  ROSC1;                        /*!< (@ 0x00000010) Sample count for ring oscillator 1                         */
263   __IM  uint32_t  ROSC2;                        /*!< (@ 0x00000014) Sample count for ring oscillator 2                         */
264   __IM  uint32_t  ROSC3;                        /*!< (@ 0x00000018) Sample count for ring oscillator 3                         */
265   __IM  uint32_t  ROSC4;                        /*!< (@ 0x0000001C) Sample count for ring oscillator 4                         */
266 } FICR_TRNG90B_Type;                            /*!< Size = 32 (0x20)                                                          */
267 
268 
269 /**
270   * @brief POWER_RAM [RAM] (Unspecified)
271   */
272 typedef struct {
273   __IOM uint32_t  POWER;                        /*!< (@ 0x00000000) Description cluster: RAMn power control register           */
274   __OM  uint32_t  POWERSET;                     /*!< (@ 0x00000004) Description cluster: RAMn power control set register       */
275   __OM  uint32_t  POWERCLR;                     /*!< (@ 0x00000008) Description cluster: RAMn power control clear
276                                                                     register                                                   */
277   __IM  uint32_t  RESERVED;
278 } POWER_RAM_Type;                               /*!< Size = 16 (0x10)                                                          */
279 
280 
281 /**
282   * @brief UART_PSEL [PSEL] (Unspecified)
283   */
284 typedef struct {
285   __IOM uint32_t  RTS;                          /*!< (@ 0x00000000) Pin select for RTS                                         */
286   __IOM uint32_t  TXD;                          /*!< (@ 0x00000004) Pin select for TXD                                         */
287   __IOM uint32_t  CTS;                          /*!< (@ 0x00000008) Pin select for CTS                                         */
288   __IOM uint32_t  RXD;                          /*!< (@ 0x0000000C) Pin select for RXD                                         */
289 } UART_PSEL_Type;                               /*!< Size = 16 (0x10)                                                          */
290 
291 
292 /**
293   * @brief UARTE_PSEL [PSEL] (Unspecified)
294   */
295 typedef struct {
296   __IOM uint32_t  RTS;                          /*!< (@ 0x00000000) Pin select for RTS signal                                  */
297   __IOM uint32_t  TXD;                          /*!< (@ 0x00000004) Pin select for TXD signal                                  */
298   __IOM uint32_t  CTS;                          /*!< (@ 0x00000008) Pin select for CTS signal                                  */
299   __IOM uint32_t  RXD;                          /*!< (@ 0x0000000C) Pin select for RXD signal                                  */
300 } UARTE_PSEL_Type;                              /*!< Size = 16 (0x10)                                                          */
301 
302 
303 /**
304   * @brief UARTE_RXD [RXD] (RXD EasyDMA channel)
305   */
306 typedef struct {
307   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
308   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in receive buffer                  */
309   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
310 } UARTE_RXD_Type;                               /*!< Size = 12 (0xc)                                                           */
311 
312 
313 /**
314   * @brief UARTE_TXD [TXD] (TXD EasyDMA channel)
315   */
316 typedef struct {
317   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
318   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer                 */
319   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
320 } UARTE_TXD_Type;                               /*!< Size = 12 (0xc)                                                           */
321 
322 
323 /**
324   * @brief SPI_PSEL [PSEL] (Unspecified)
325   */
326 typedef struct {
327   __IOM uint32_t  SCK;                          /*!< (@ 0x00000000) Pin select for SCK                                         */
328   __IOM uint32_t  MOSI;                         /*!< (@ 0x00000004) Pin select for MOSI signal                                 */
329   __IOM uint32_t  MISO;                         /*!< (@ 0x00000008) Pin select for MISO signal                                 */
330 } SPI_PSEL_Type;                                /*!< Size = 12 (0xc)                                                           */
331 
332 
333 /**
334   * @brief SPIM_PSEL [PSEL] (Unspecified)
335   */
336 typedef struct {
337   __IOM uint32_t  SCK;                          /*!< (@ 0x00000000) Pin select for SCK                                         */
338   __IOM uint32_t  MOSI;                         /*!< (@ 0x00000004) Pin select for MOSI signal                                 */
339   __IOM uint32_t  MISO;                         /*!< (@ 0x00000008) Pin select for MISO signal                                 */
340   __IOM uint32_t  CSN;                          /*!< (@ 0x0000000C) Pin select for CSN                                         */
341 } SPIM_PSEL_Type;                               /*!< Size = 16 (0x10)                                                          */
342 
343 
344 /**
345   * @brief SPIM_RXD [RXD] (RXD EasyDMA channel)
346   */
347 typedef struct {
348   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
349   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in receive buffer                  */
350   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
351   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
352 } SPIM_RXD_Type;                                /*!< Size = 16 (0x10)                                                          */
353 
354 
355 /**
356   * @brief SPIM_TXD [TXD] (TXD EasyDMA channel)
357   */
358 typedef struct {
359   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
360   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Number of bytes in transmit buffer                         */
361   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
362   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
363 } SPIM_TXD_Type;                                /*!< Size = 16 (0x10)                                                          */
364 
365 
366 /**
367   * @brief SPIM_IFTIMING [IFTIMING] (Unspecified)
368   */
369 typedef struct {
370   __IOM uint32_t  RXDELAY;                      /*!< (@ 0x00000000) Sample delay for input serial data on MISO                 */
371   __IOM uint32_t  CSNDUR;                       /*!< (@ 0x00000004) Minimum duration between edge of CSN and edge
372                                                                     of SCK and minimum duration CSN must stay
373                                                                     high between transactions                                  */
374 } SPIM_IFTIMING_Type;                           /*!< Size = 8 (0x8)                                                            */
375 
376 
377 /**
378   * @brief SPIS_PSEL [PSEL] (Unspecified)
379   */
380 typedef struct {
381   __IOM uint32_t  SCK;                          /*!< (@ 0x00000000) Pin select for SCK                                         */
382   __IOM uint32_t  MISO;                         /*!< (@ 0x00000004) Pin select for MISO signal                                 */
383   __IOM uint32_t  MOSI;                         /*!< (@ 0x00000008) Pin select for MOSI signal                                 */
384   __IOM uint32_t  CSN;                          /*!< (@ 0x0000000C) Pin select for CSN signal                                  */
385 } SPIS_PSEL_Type;                               /*!< Size = 16 (0x10)                                                          */
386 
387 
388 /**
389   * @brief SPIS_RXD [RXD] (Unspecified)
390   */
391 typedef struct {
392   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) RXD data pointer                                           */
393   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in receive buffer                  */
394   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes received in last granted transaction       */
395   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
396 } SPIS_RXD_Type;                                /*!< Size = 16 (0x10)                                                          */
397 
398 
399 /**
400   * @brief SPIS_TXD [TXD] (Unspecified)
401   */
402 typedef struct {
403   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) TXD data pointer                                           */
404   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer                 */
405   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transmitted in last granted transaction    */
406   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
407 } SPIS_TXD_Type;                                /*!< Size = 16 (0x10)                                                          */
408 
409 
410 /**
411   * @brief TWI_PSEL [PSEL] (Unspecified)
412   */
413 typedef struct {
414   __IOM uint32_t  SCL;                          /*!< (@ 0x00000000) Pin select for SCL                                         */
415   __IOM uint32_t  SDA;                          /*!< (@ 0x00000004) Pin select for SDA                                         */
416 } TWI_PSEL_Type;                                /*!< Size = 8 (0x8)                                                            */
417 
418 
419 /**
420   * @brief TWIM_PSEL [PSEL] (Unspecified)
421   */
422 typedef struct {
423   __IOM uint32_t  SCL;                          /*!< (@ 0x00000000) Pin select for SCL signal                                  */
424   __IOM uint32_t  SDA;                          /*!< (@ 0x00000004) Pin select for SDA signal                                  */
425 } TWIM_PSEL_Type;                               /*!< Size = 8 (0x8)                                                            */
426 
427 
428 /**
429   * @brief TWIM_RXD [RXD] (RXD EasyDMA channel)
430   */
431 typedef struct {
432   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
433   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in receive buffer                  */
434   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
435   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
436 } TWIM_RXD_Type;                                /*!< Size = 16 (0x10)                                                          */
437 
438 
439 /**
440   * @brief TWIM_TXD [TXD] (TXD EasyDMA channel)
441   */
442 typedef struct {
443   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
444   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer                 */
445   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
446   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
447 } TWIM_TXD_Type;                                /*!< Size = 16 (0x10)                                                          */
448 
449 
450 /**
451   * @brief TWIS_PSEL [PSEL] (Unspecified)
452   */
453 typedef struct {
454   __IOM uint32_t  SCL;                          /*!< (@ 0x00000000) Pin select for SCL signal                                  */
455   __IOM uint32_t  SDA;                          /*!< (@ 0x00000004) Pin select for SDA signal                                  */
456 } TWIS_PSEL_Type;                               /*!< Size = 8 (0x8)                                                            */
457 
458 
459 /**
460   * @brief TWIS_RXD [RXD] (RXD EasyDMA channel)
461   */
462 typedef struct {
463   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) RXD Data pointer                                           */
464   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in RXD buffer                      */
465   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last RXD transaction    */
466   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
467 } TWIS_RXD_Type;                                /*!< Size = 16 (0x10)                                                          */
468 
469 
470 /**
471   * @brief TWIS_TXD [TXD] (TXD EasyDMA channel)
472   */
473 typedef struct {
474   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) TXD Data pointer                                           */
475   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes in TXD buffer                      */
476   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last TXD transaction    */
477   __IOM uint32_t  LIST;                         /*!< (@ 0x0000000C) EasyDMA list type                                          */
478 } TWIS_TXD_Type;                                /*!< Size = 16 (0x10)                                                          */
479 
480 
481 /**
482   * @brief NFCT_FRAMESTATUS [FRAMESTATUS] (Unspecified)
483   */
484 typedef struct {
485   __IOM uint32_t  RX;                           /*!< (@ 0x00000000) Result of last incoming frame                              */
486 } NFCT_FRAMESTATUS_Type;                        /*!< Size = 4 (0x4)                                                            */
487 
488 
489 /**
490   * @brief NFCT_TXD [TXD] (Unspecified)
491   */
492 typedef struct {
493   __IOM uint32_t  FRAMECONFIG;                  /*!< (@ 0x00000000) Configuration of outgoing frames                           */
494   __IOM uint32_t  AMOUNT;                       /*!< (@ 0x00000004) Size of outgoing frame                                     */
495 } NFCT_TXD_Type;                                /*!< Size = 8 (0x8)                                                            */
496 
497 
498 /**
499   * @brief NFCT_RXD [RXD] (Unspecified)
500   */
501 typedef struct {
502   __IOM uint32_t  FRAMECONFIG;                  /*!< (@ 0x00000000) Configuration of incoming frames                           */
503   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000004) Size of last incoming frame                                */
504 } NFCT_RXD_Type;                                /*!< Size = 8 (0x8)                                                            */
505 
506 
507 /**
508   * @brief SAADC_EVENTS_CH [EVENTS_CH] (Peripheral events.)
509   */
510 typedef struct {
511   __IOM uint32_t  LIMITH;                       /*!< (@ 0x00000000) Description cluster: Last result is equal or
512                                                                     above CH[n].LIMIT.HIGH                                     */
513   __IOM uint32_t  LIMITL;                       /*!< (@ 0x00000004) Description cluster: Last result is equal or
514                                                                     below CH[n].LIMIT.LOW                                      */
515 } SAADC_EVENTS_CH_Type;                         /*!< Size = 8 (0x8)                                                            */
516 
517 
518 /**
519   * @brief SAADC_CH [CH] (Unspecified)
520   */
521 typedef struct {
522   __IOM uint32_t  PSELP;                        /*!< (@ 0x00000000) Description cluster: Input positive pin selection
523                                                                     for CH[n]                                                  */
524   __IOM uint32_t  PSELN;                        /*!< (@ 0x00000004) Description cluster: Input negative pin selection
525                                                                     for CH[n]                                                  */
526   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000008) Description cluster: Input configuration for
527                                                                     CH[n]                                                      */
528   __IOM uint32_t  LIMIT;                        /*!< (@ 0x0000000C) Description cluster: High/low limits for event
529                                                                     monitoring of a channel                                    */
530 } SAADC_CH_Type;                                /*!< Size = 16 (0x10)                                                          */
531 
532 
533 /**
534   * @brief SAADC_RESULT [RESULT] (RESULT EasyDMA channel)
535   */
536 typedef struct {
537   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
538   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of 16-bit samples to be written
539                                                                     to output RAM buffer                                       */
540   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of 16-bit samples written to output RAM
541                                                                     buffer since the previous START task                       */
542 } SAADC_RESULT_Type;                            /*!< Size = 12 (0xc)                                                           */
543 
544 
545 /**
546   * @brief QDEC_PSEL [PSEL] (Unspecified)
547   */
548 typedef struct {
549   __IOM uint32_t  LED;                          /*!< (@ 0x00000000) Pin select for LED signal                                  */
550   __IOM uint32_t  A;                            /*!< (@ 0x00000004) Pin select for A signal                                    */
551   __IOM uint32_t  B;                            /*!< (@ 0x00000008) Pin select for B signal                                    */
552 } QDEC_PSEL_Type;                               /*!< Size = 12 (0xc)                                                           */
553 
554 
555 /**
556   * @brief PWM_SEQ [SEQ] (Unspecified)
557   */
558 typedef struct {
559   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Description cluster: Beginning address in RAM
560                                                                     of this sequence                                           */
561   __IOM uint32_t  CNT;                          /*!< (@ 0x00000004) Description cluster: Number of values (duty cycles)
562                                                                     in this sequence                                           */
563   __IOM uint32_t  REFRESH;                      /*!< (@ 0x00000008) Description cluster: Number of additional PWM
564                                                                     periods between samples loaded into compare
565                                                                     register                                                   */
566   __IOM uint32_t  ENDDELAY;                     /*!< (@ 0x0000000C) Description cluster: Time added after the sequence         */
567   __IM  uint32_t  RESERVED[4];
568 } PWM_SEQ_Type;                                 /*!< Size = 32 (0x20)                                                          */
569 
570 
571 /**
572   * @brief PWM_PSEL [PSEL] (Unspecified)
573   */
574 typedef struct {
575   __IOM uint32_t  OUT[4];                       /*!< (@ 0x00000000) Description collection: Output pin select for
576                                                                     PWM channel n                                              */
577 } PWM_PSEL_Type;                                /*!< Size = 16 (0x10)                                                          */
578 
579 
580 /**
581   * @brief PDM_PSEL [PSEL] (Unspecified)
582   */
583 typedef struct {
584   __IOM uint32_t  CLK;                          /*!< (@ 0x00000000) Pin number configuration for PDM CLK signal                */
585   __IOM uint32_t  DIN;                          /*!< (@ 0x00000004) Pin number configuration for PDM DIN signal                */
586 } PDM_PSEL_Type;                                /*!< Size = 8 (0x8)                                                            */
587 
588 
589 /**
590   * @brief PDM_SAMPLE [SAMPLE] (Unspecified)
591   */
592 typedef struct {
593   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) RAM address pointer to write samples to with
594                                                                     EasyDMA                                                    */
595   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Number of samples to allocate memory for in EasyDMA
596                                                                     mode                                                       */
597 } PDM_SAMPLE_Type;                              /*!< Size = 8 (0x8)                                                            */
598 
599 
600 /**
601   * @brief ACL_ACL [ACL] (Unspecified)
602   */
603 typedef struct {
604   __IOM uint32_t  ADDR;                         /*!< (@ 0x00000000) Description cluster: Start address of region
605                                                                     to protect. The start address must be word-aligned.        */
606   __IOM uint32_t  SIZE;                         /*!< (@ 0x00000004) Description cluster: Size of region to protect
607                                                                     counting from address ACL[n].ADDR. Writing
608                                                                     a '0' has no effect.                                       */
609   __IOM uint32_t  PERM;                         /*!< (@ 0x00000008) Description cluster: Access permissions for region
610                                                                     n as defined by start address ACL[n].ADDR
611                                                                     and size ACL[n].SIZE                                       */
612   __IM  uint32_t  RESERVED;
613 } ACL_ACL_Type;                                 /*!< Size = 16 (0x10)                                                          */
614 
615 
616 /**
617   * @brief PPI_TASKS_CHG [TASKS_CHG] (Channel group tasks)
618   */
619 typedef struct {
620   __OM  uint32_t  EN;                           /*!< (@ 0x00000000) Description cluster: Enable channel group n                */
621   __OM  uint32_t  DIS;                          /*!< (@ 0x00000004) Description cluster: Disable channel group n               */
622 } PPI_TASKS_CHG_Type;                           /*!< Size = 8 (0x8)                                                            */
623 
624 
625 /**
626   * @brief PPI_CH [CH] (PPI Channel)
627   */
628 typedef struct {
629   __IOM uint32_t  EEP;                          /*!< (@ 0x00000000) Description cluster: Channel n event endpoint              */
630   __IOM uint32_t  TEP;                          /*!< (@ 0x00000004) Description cluster: Channel n task endpoint               */
631 } PPI_CH_Type;                                  /*!< Size = 8 (0x8)                                                            */
632 
633 
634 /**
635   * @brief PPI_FORK [FORK] (Fork)
636   */
637 typedef struct {
638   __IOM uint32_t  TEP;                          /*!< (@ 0x00000000) Description cluster: Channel n task endpoint               */
639 } PPI_FORK_Type;                                /*!< Size = 4 (0x4)                                                            */
640 
641 
642 /**
643   * @brief MWU_EVENTS_REGION [EVENTS_REGION] (Peripheral events.)
644   */
645 typedef struct {
646   __IOM uint32_t  WA;                           /*!< (@ 0x00000000) Description cluster: Write access to region n
647                                                                     detected                                                   */
648   __IOM uint32_t  RA;                           /*!< (@ 0x00000004) Description cluster: Read access to region n
649                                                                     detected                                                   */
650 } MWU_EVENTS_REGION_Type;                       /*!< Size = 8 (0x8)                                                            */
651 
652 
653 /**
654   * @brief MWU_EVENTS_PREGION [EVENTS_PREGION] (Peripheral events.)
655   */
656 typedef struct {
657   __IOM uint32_t  WA;                           /*!< (@ 0x00000000) Description cluster: Write access to peripheral
658                                                                     region n detected                                          */
659   __IOM uint32_t  RA;                           /*!< (@ 0x00000004) Description cluster: Read access to peripheral
660                                                                     region n detected                                          */
661 } MWU_EVENTS_PREGION_Type;                      /*!< Size = 8 (0x8)                                                            */
662 
663 
664 /**
665   * @brief MWU_PERREGION [PERREGION] (Unspecified)
666   */
667 typedef struct {
668   __IOM uint32_t  SUBSTATWA;                    /*!< (@ 0x00000000) Description cluster: Source of event/interrupt
669                                                                     in region n, write access detected while
670                                                                     corresponding subregion was enabled for
671                                                                     watching                                                   */
672   __IOM uint32_t  SUBSTATRA;                    /*!< (@ 0x00000004) Description cluster: Source of event/interrupt
673                                                                     in region n, read access detected while
674                                                                     corresponding subregion was enabled for
675                                                                     watching                                                   */
676 } MWU_PERREGION_Type;                           /*!< Size = 8 (0x8)                                                            */
677 
678 
679 /**
680   * @brief MWU_REGION [REGION] (Unspecified)
681   */
682 typedef struct {
683   __IOM uint32_t  START;                        /*!< (@ 0x00000000) Description cluster: Start address for region
684                                                                     n                                                          */
685   __IOM uint32_t  END;                          /*!< (@ 0x00000004) Description cluster: End address of region n               */
686   __IM  uint32_t  RESERVED[2];
687 } MWU_REGION_Type;                              /*!< Size = 16 (0x10)                                                          */
688 
689 
690 /**
691   * @brief MWU_PREGION [PREGION] (Unspecified)
692   */
693 typedef struct {
694   __IM  uint32_t  START;                        /*!< (@ 0x00000000) Description cluster: Reserved for future use               */
695   __IM  uint32_t  END;                          /*!< (@ 0x00000004) Description cluster: Reserved for future use               */
696   __IOM uint32_t  SUBS;                         /*!< (@ 0x00000008) Description cluster: Subregions of region n                */
697   __IM  uint32_t  RESERVED;
698 } MWU_PREGION_Type;                             /*!< Size = 16 (0x10)                                                          */
699 
700 
701 /**
702   * @brief I2S_CONFIG [CONFIG] (Unspecified)
703   */
704 typedef struct {
705   __IOM uint32_t  MODE;                         /*!< (@ 0x00000000) I2S mode.                                                  */
706   __IOM uint32_t  RXEN;                         /*!< (@ 0x00000004) Reception (RX) enable.                                     */
707   __IOM uint32_t  TXEN;                         /*!< (@ 0x00000008) Transmission (TX) enable.                                  */
708   __IOM uint32_t  MCKEN;                        /*!< (@ 0x0000000C) Master clock generator enable.                             */
709   __IOM uint32_t  MCKFREQ;                      /*!< (@ 0x00000010) Master clock generator frequency.                          */
710   __IOM uint32_t  RATIO;                        /*!< (@ 0x00000014) MCK / LRCK ratio.                                          */
711   __IOM uint32_t  SWIDTH;                       /*!< (@ 0x00000018) Sample width.                                              */
712   __IOM uint32_t  ALIGN;                        /*!< (@ 0x0000001C) Alignment of sample within a frame.                        */
713   __IOM uint32_t  FORMAT;                       /*!< (@ 0x00000020) Frame format.                                              */
714   __IOM uint32_t  CHANNELS;                     /*!< (@ 0x00000024) Enable channels.                                           */
715 } I2S_CONFIG_Type;                              /*!< Size = 40 (0x28)                                                          */
716 
717 
718 /**
719   * @brief I2S_RXD [RXD] (Unspecified)
720   */
721 typedef struct {
722   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Receive buffer RAM start address.                          */
723 } I2S_RXD_Type;                                 /*!< Size = 4 (0x4)                                                            */
724 
725 
726 /**
727   * @brief I2S_TXD [TXD] (Unspecified)
728   */
729 typedef struct {
730   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Transmit buffer RAM start address.                         */
731 } I2S_TXD_Type;                                 /*!< Size = 4 (0x4)                                                            */
732 
733 
734 /**
735   * @brief I2S_RXTXD [RXTXD] (Unspecified)
736   */
737 typedef struct {
738   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000000) Size of RXD and TXD buffers.                               */
739 } I2S_RXTXD_Type;                               /*!< Size = 4 (0x4)                                                            */
740 
741 
742 /**
743   * @brief I2S_PSEL [PSEL] (Unspecified)
744   */
745 typedef struct {
746   __IOM uint32_t  MCK;                          /*!< (@ 0x00000000) Pin select for MCK signal.                                 */
747   __IOM uint32_t  SCK;                          /*!< (@ 0x00000004) Pin select for SCK signal.                                 */
748   __IOM uint32_t  LRCK;                         /*!< (@ 0x00000008) Pin select for LRCK signal.                                */
749   __IOM uint32_t  SDIN;                         /*!< (@ 0x0000000C) Pin select for SDIN signal.                                */
750   __IOM uint32_t  SDOUT;                        /*!< (@ 0x00000010) Pin select for SDOUT signal.                               */
751 } I2S_PSEL_Type;                                /*!< Size = 20 (0x14)                                                          */
752 
753 
754 /**
755   * @brief USBD_HALTED [HALTED] (Unspecified)
756   */
757 typedef struct {
758   __IM  uint32_t  EPIN[8];                      /*!< (@ 0x00000000) Description collection: IN endpoint halted status.
759                                                                     Can be used as is as response to a GetStatus()
760                                                                     request to endpoint.                                       */
761   __IM  uint32_t  RESERVED;
762   __IM  uint32_t  EPOUT[8];                     /*!< (@ 0x00000024) Description collection: OUT endpoint halted status.
763                                                                     Can be used as is as response to a GetStatus()
764                                                                     request to endpoint.                                       */
765 } USBD_HALTED_Type;                             /*!< Size = 68 (0x44)                                                          */
766 
767 
768 /**
769   * @brief USBD_SIZE [SIZE] (Unspecified)
770   */
771 typedef struct {
772   __IOM uint32_t  EPOUT[8];                     /*!< (@ 0x00000000) Description collection: Number of bytes received
773                                                                     last in the data stage of this OUT endpoint                */
774   __IM  uint32_t  ISOOUT;                       /*!< (@ 0x00000020) Number of bytes received last on this ISO OUT
775                                                                     data endpoint                                              */
776 } USBD_SIZE_Type;                               /*!< Size = 36 (0x24)                                                          */
777 
778 
779 /**
780   * @brief USBD_EPIN [EPIN] (Unspecified)
781   */
782 typedef struct {
783   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Description cluster: Data pointer                          */
784   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Description cluster: Maximum number of bytes
785                                                                     to transfer                                                */
786   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Description cluster: Number of bytes transferred
787                                                                     in the last transaction                                    */
788   __IM  uint32_t  RESERVED[2];
789 } USBD_EPIN_Type;                               /*!< Size = 20 (0x14)                                                          */
790 
791 
792 /**
793   * @brief USBD_ISOIN [ISOIN] (Unspecified)
794   */
795 typedef struct {
796   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
797   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes to transfer                        */
798   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
799 } USBD_ISOIN_Type;                              /*!< Size = 12 (0xc)                                                           */
800 
801 
802 /**
803   * @brief USBD_EPOUT [EPOUT] (Unspecified)
804   */
805 typedef struct {
806   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Description cluster: Data pointer                          */
807   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Description cluster: Maximum number of bytes
808                                                                     to transfer                                                */
809   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Description cluster: Number of bytes transferred
810                                                                     in the last transaction                                    */
811   __IM  uint32_t  RESERVED[2];
812 } USBD_EPOUT_Type;                              /*!< Size = 20 (0x14)                                                          */
813 
814 
815 /**
816   * @brief USBD_ISOOUT [ISOOUT] (Unspecified)
817   */
818 typedef struct {
819   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Data pointer                                               */
820   __IOM uint32_t  MAXCNT;                       /*!< (@ 0x00000004) Maximum number of bytes to transfer                        */
821   __IM  uint32_t  AMOUNT;                       /*!< (@ 0x00000008) Number of bytes transferred in the last transaction        */
822 } USBD_ISOOUT_Type;                             /*!< Size = 12 (0xc)                                                           */
823 
824 
825 /**
826   * @brief QSPI_READ [READ] (Unspecified)
827   */
828 typedef struct {
829   __IOM uint32_t  SRC;                          /*!< (@ 0x00000000) Flash memory source address                                */
830   __IOM uint32_t  DST;                          /*!< (@ 0x00000004) RAM destination address                                    */
831   __IOM uint32_t  CNT;                          /*!< (@ 0x00000008) Read transfer length                                       */
832 } QSPI_READ_Type;                               /*!< Size = 12 (0xc)                                                           */
833 
834 
835 /**
836   * @brief QSPI_WRITE [WRITE] (Unspecified)
837   */
838 typedef struct {
839   __IOM uint32_t  DST;                          /*!< (@ 0x00000000) Flash destination address                                  */
840   __IOM uint32_t  SRC;                          /*!< (@ 0x00000004) RAM source address                                         */
841   __IOM uint32_t  CNT;                          /*!< (@ 0x00000008) Write transfer length                                      */
842 } QSPI_WRITE_Type;                              /*!< Size = 12 (0xc)                                                           */
843 
844 
845 /**
846   * @brief QSPI_ERASE [ERASE] (Unspecified)
847   */
848 typedef struct {
849   __IOM uint32_t  PTR;                          /*!< (@ 0x00000000) Start address of flash block to be erased                  */
850   __IOM uint32_t  LEN;                          /*!< (@ 0x00000004) Size of block to be erased.                                */
851 } QSPI_ERASE_Type;                              /*!< Size = 8 (0x8)                                                            */
852 
853 
854 /**
855   * @brief QSPI_PSEL [PSEL] (Unspecified)
856   */
857 typedef struct {
858   __IOM uint32_t  SCK;                          /*!< (@ 0x00000000) Pin select for serial clock SCK                            */
859   __IOM uint32_t  CSN;                          /*!< (@ 0x00000004) Pin select for chip select signal CSN.                     */
860   __IM  uint32_t  RESERVED;
861   __IOM uint32_t  IO0;                          /*!< (@ 0x0000000C) Pin select for serial data MOSI/IO0.                       */
862   __IOM uint32_t  IO1;                          /*!< (@ 0x00000010) Pin select for serial data MISO/IO1.                       */
863   __IOM uint32_t  IO2;                          /*!< (@ 0x00000014) Pin select for serial data IO2.                            */
864   __IOM uint32_t  IO3;                          /*!< (@ 0x00000018) Pin select for serial data IO3.                            */
865 } QSPI_PSEL_Type;                               /*!< Size = 28 (0x1c)                                                          */
866 
867 
868 /** @} */ /* End of group Device_Peripheral_clusters */
869 
870 
871 /* =========================================================================================================================== */
872 /* ================                            Device Specific Peripheral Section                             ================ */
873 /* =========================================================================================================================== */
874 
875 
876 /** @addtogroup Device_Peripheral_peripherals
877   * @{
878   */
879 
880 
881 
882 /* =========================================================================================================================== */
883 /* ================                                           FICR                                            ================ */
884 /* =========================================================================================================================== */
885 
886 
887 /**
888   * @brief Factory information configuration registers (FICR)
889   */
890 
891 typedef struct {                                /*!< (@ 0x10000000) FICR Structure                                             */
892   __IM  uint32_t  RESERVED[4];
893   __IM  uint32_t  CODEPAGESIZE;                 /*!< (@ 0x00000010) Code memory page size                                      */
894   __IM  uint32_t  CODESIZE;                     /*!< (@ 0x00000014) Code memory size                                           */
895   __IM  uint32_t  RESERVED1[18];
896   __IM  uint32_t  DEVICEID[2];                  /*!< (@ 0x00000060) Description collection: Device identifier                  */
897   __IM  uint32_t  RESERVED2[6];
898   __IM  uint32_t  ER[4];                        /*!< (@ 0x00000080) Description collection: Encryption root, word
899                                                                     n                                                          */
900   __IM  uint32_t  IR[4];                        /*!< (@ 0x00000090) Description collection: Identity Root, word n              */
901   __IM  uint32_t  DEVICEADDRTYPE;               /*!< (@ 0x000000A0) Device address type                                        */
902   __IM  uint32_t  DEVICEADDR[2];                /*!< (@ 0x000000A4) Description collection: Device address n                   */
903   __IM  uint32_t  RESERVED3[21];
904   __IM  FICR_INFO_Type INFO;                    /*!< (@ 0x00000100) Device info                                                */
905   __IM  uint32_t  RESERVED4[143];
906   __IM  uint32_t  PRODTEST[3];                  /*!< (@ 0x00000350) Description collection: Production test signature
907                                                                     n                                                          */
908   __IM  uint32_t  RESERVED5[42];
909   __IM  FICR_TEMP_Type TEMP;                    /*!< (@ 0x00000404) Registers storing factory TEMP module linearization
910                                                                     coefficients                                               */
911   __IM  uint32_t  RESERVED6[2];
912   __IOM FICR_NFC_Type NFC;                      /*!< (@ 0x00000450) Unspecified                                                */
913   __IM  uint32_t  RESERVED7[488];
914   __IOM FICR_TRNG90B_Type TRNG90B;              /*!< (@ 0x00000C00) NIST800-90B RNG calibration data                           */
915 } NRF_FICR_Type;                                /*!< Size = 3104 (0xc20)                                                       */
916 
917 
918 
919 /* =========================================================================================================================== */
920 /* ================                                           UICR                                            ================ */
921 /* =========================================================================================================================== */
922 
923 
924 /**
925   * @brief User information configuration registers (UICR)
926   */
927 
928 typedef struct {                                /*!< (@ 0x10001000) UICR Structure                                             */
929   __IM  uint32_t  RESERVED[5];
930   __IOM uint32_t  NRFFW[13];                    /*!< (@ 0x00000014) Description collection: Reserved for Nordic firmware
931                                                                     design                                                     */
932   __IM  uint32_t  RESERVED1[2];
933   __IOM uint32_t  NRFHW[12];                    /*!< (@ 0x00000050) Description collection: Reserved for Nordic hardware
934                                                                     design                                                     */
935   __IOM uint32_t  CUSTOMER[32];                 /*!< (@ 0x00000080) Description collection: Reserved for customer              */
936   __IM  uint32_t  RESERVED2[64];
937   __IOM uint32_t  PSELRESET[2];                 /*!< (@ 0x00000200) Description collection: Mapping of the nRESET
938                                                                     function (see POWER chapter for details)                   */
939   __IOM uint32_t  APPROTECT;                    /*!< (@ 0x00000208) Access port protection                                     */
940   __IOM uint32_t  NFCPINS;                      /*!< (@ 0x0000020C) Setting of pins dedicated to NFC functionality:
941                                                                     NFC antenna or GPIO                                        */
942   __IOM uint32_t  DEBUGCTRL;                    /*!< (@ 0x00000210) Processor debug control                                    */
943   __IM  uint32_t  RESERVED3[60];
944   __IOM uint32_t  REGOUT0;                      /*!< (@ 0x00000304) Output voltage from REG0 regulator stage. The
945                                                                     maximum output voltage from this stage is
946                                                                     given as VDDH - V_VDDH-VDD.                                */
947 } NRF_UICR_Type;                                /*!< Size = 776 (0x308)                                                        */
948 
949 
950 
951 /* =========================================================================================================================== */
952 /* ================                                         APPROTECT                                         ================ */
953 /* =========================================================================================================================== */
954 
955 
956 /**
957   * @brief Access Port Protection (APPROTECT)
958   */
959 
960 typedef struct {                                /*!< (@ 0x40000000) APPROTECT Structure                                        */
961   __IM  uint32_t  RESERVED[340];
962   __IOM uint32_t  FORCEPROTECT;                 /*!< (@ 0x00000550) Software force enable APPROTECT mechanism until
963                                                                     next reset.                                                */
964   __IM  uint32_t  RESERVED1;
965   __IOM uint32_t  DISABLE;                      /*!< (@ 0x00000558) Software disable APPROTECT mechanism                       */
966 } NRF_APPROTECT_Type;                           /*!< Size = 1372 (0x55c)                                                       */
967 
968 
969 
970 /* =========================================================================================================================== */
971 /* ================                                           CLOCK                                           ================ */
972 /* =========================================================================================================================== */
973 
974 
975 /**
976   * @brief Clock control (CLOCK)
977   */
978 
979 typedef struct {                                /*!< (@ 0x40000000) CLOCK Structure                                            */
980   __OM  uint32_t  TASKS_HFCLKSTART;             /*!< (@ 0x00000000) Start HFXO crystal oscillator                              */
981   __OM  uint32_t  TASKS_HFCLKSTOP;              /*!< (@ 0x00000004) Stop HFXO crystal oscillator                               */
982   __OM  uint32_t  TASKS_LFCLKSTART;             /*!< (@ 0x00000008) Start LFCLK                                                */
983   __OM  uint32_t  TASKS_LFCLKSTOP;              /*!< (@ 0x0000000C) Stop LFCLK                                                 */
984   __OM  uint32_t  TASKS_CAL;                    /*!< (@ 0x00000010) Start calibration of LFRC                                  */
985   __OM  uint32_t  TASKS_CTSTART;                /*!< (@ 0x00000014) Start calibration timer                                    */
986   __OM  uint32_t  TASKS_CTSTOP;                 /*!< (@ 0x00000018) Stop calibration timer                                     */
987   __IM  uint32_t  RESERVED[57];
988   __IOM uint32_t  EVENTS_HFCLKSTARTED;          /*!< (@ 0x00000100) HFXO crystal oscillator started                            */
989   __IOM uint32_t  EVENTS_LFCLKSTARTED;          /*!< (@ 0x00000104) LFCLK started                                              */
990   __IM  uint32_t  RESERVED1;
991   __IOM uint32_t  EVENTS_DONE;                  /*!< (@ 0x0000010C) Calibration of LFRC completed                              */
992   __IOM uint32_t  EVENTS_CTTO;                  /*!< (@ 0x00000110) Calibration timer timeout                                  */
993   __IM  uint32_t  RESERVED2[5];
994   __IOM uint32_t  EVENTS_CTSTARTED;             /*!< (@ 0x00000128) Calibration timer has been started and is ready
995                                                                     to process new tasks                                       */
996   __IOM uint32_t  EVENTS_CTSTOPPED;             /*!< (@ 0x0000012C) Calibration timer has been stopped and is ready
997                                                                     to process new tasks                                       */
998   __IM  uint32_t  RESERVED3[117];
999   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1000   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1001   __IM  uint32_t  RESERVED4[63];
1002   __IM  uint32_t  HFCLKRUN;                     /*!< (@ 0x00000408) Status indicating that HFCLKSTART task has been
1003                                                                     triggered                                                  */
1004   __IM  uint32_t  HFCLKSTAT;                    /*!< (@ 0x0000040C) HFCLK status                                               */
1005   __IM  uint32_t  RESERVED5;
1006   __IM  uint32_t  LFCLKRUN;                     /*!< (@ 0x00000414) Status indicating that LFCLKSTART task has been
1007                                                                     triggered                                                  */
1008   __IM  uint32_t  LFCLKSTAT;                    /*!< (@ 0x00000418) LFCLK status                                               */
1009   __IM  uint32_t  LFCLKSRCCOPY;                 /*!< (@ 0x0000041C) Copy of LFCLKSRC register, set when LFCLKSTART
1010                                                                     task was triggered                                         */
1011   __IM  uint32_t  RESERVED6[62];
1012   __IOM uint32_t  LFCLKSRC;                     /*!< (@ 0x00000518) Clock source for the LFCLK                                 */
1013   __IM  uint32_t  RESERVED7[3];
1014   __IOM uint32_t  HFXODEBOUNCE;                 /*!< (@ 0x00000528) HFXO debounce time. The HFXO is started by triggering
1015                                                                     the TASKS_HFCLKSTART task.                                 */
1016   __IM  uint32_t  RESERVED8[3];
1017   __IOM uint32_t  CTIV;                         /*!< (@ 0x00000538) Calibration timer interval                                 */
1018   __IM  uint32_t  RESERVED9[8];
1019   __IOM uint32_t  TRACECONFIG;                  /*!< (@ 0x0000055C) Clocking options for the trace port debug interface        */
1020   __IM  uint32_t  RESERVED10[21];
1021   __IOM uint32_t  LFRCMODE;                     /*!< (@ 0x000005B4) LFRC mode configuration                                    */
1022 } NRF_CLOCK_Type;                               /*!< Size = 1464 (0x5b8)                                                       */
1023 
1024 
1025 
1026 /* =========================================================================================================================== */
1027 /* ================                                           POWER                                           ================ */
1028 /* =========================================================================================================================== */
1029 
1030 
1031 /**
1032   * @brief Power control (POWER)
1033   */
1034 
1035 typedef struct {                                /*!< (@ 0x40000000) POWER Structure                                            */
1036   __IM  uint32_t  RESERVED[30];
1037   __OM  uint32_t  TASKS_CONSTLAT;               /*!< (@ 0x00000078) Enable Constant Latency mode                               */
1038   __OM  uint32_t  TASKS_LOWPWR;                 /*!< (@ 0x0000007C) Enable Low-power mode (variable latency)                   */
1039   __IM  uint32_t  RESERVED1[34];
1040   __IOM uint32_t  EVENTS_POFWARN;               /*!< (@ 0x00000108) Power failure warning                                      */
1041   __IM  uint32_t  RESERVED2[2];
1042   __IOM uint32_t  EVENTS_SLEEPENTER;            /*!< (@ 0x00000114) CPU entered WFI/WFE sleep                                  */
1043   __IOM uint32_t  EVENTS_SLEEPEXIT;             /*!< (@ 0x00000118) CPU exited WFI/WFE sleep                                   */
1044   __IOM uint32_t  EVENTS_USBDETECTED;           /*!< (@ 0x0000011C) Voltage supply detected on VBUS                            */
1045   __IOM uint32_t  EVENTS_USBREMOVED;            /*!< (@ 0x00000120) Voltage supply removed from VBUS                           */
1046   __IOM uint32_t  EVENTS_USBPWRRDY;             /*!< (@ 0x00000124) USB 3.3 V supply ready                                     */
1047   __IM  uint32_t  RESERVED3[119];
1048   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1049   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1050   __IM  uint32_t  RESERVED4[61];
1051   __IOM uint32_t  RESETREAS;                    /*!< (@ 0x00000400) Reset reason                                               */
1052   __IM  uint32_t  RESERVED5[9];
1053   __IM  uint32_t  RAMSTATUS;                    /*!< (@ 0x00000428) Deprecated register - RAM status register                  */
1054   __IM  uint32_t  RESERVED6[3];
1055   __IM  uint32_t  USBREGSTATUS;                 /*!< (@ 0x00000438) USB supply status                                          */
1056   __IM  uint32_t  RESERVED7[49];
1057   __OM  uint32_t  SYSTEMOFF;                    /*!< (@ 0x00000500) System OFF register                                        */
1058   __IM  uint32_t  RESERVED8[3];
1059   __IOM uint32_t  POFCON;                       /*!< (@ 0x00000510) Power-fail comparator configuration                        */
1060   __IM  uint32_t  RESERVED9[2];
1061   __IOM uint32_t  GPREGRET;                     /*!< (@ 0x0000051C) General purpose retention register                         */
1062   __IOM uint32_t  GPREGRET2;                    /*!< (@ 0x00000520) General purpose retention register                         */
1063   __IM  uint32_t  RESERVED10[21];
1064   __IOM uint32_t  DCDCEN;                       /*!< (@ 0x00000578) Enable DC/DC converter for REG1 stage                      */
1065   __IM  uint32_t  RESERVED11;
1066   __IOM uint32_t  DCDCEN0;                      /*!< (@ 0x00000580) Enable DC/DC converter for REG0 stage                      */
1067   __IM  uint32_t  RESERVED12[47];
1068   __IM  uint32_t  MAINREGSTATUS;                /*!< (@ 0x00000640) Main supply status                                         */
1069   __IM  uint32_t  RESERVED13[175];
1070   __IOM POWER_RAM_Type RAM[9];                  /*!< (@ 0x00000900) Unspecified                                                */
1071 } NRF_POWER_Type;                               /*!< Size = 2448 (0x990)                                                       */
1072 
1073 
1074 
1075 /* =========================================================================================================================== */
1076 /* ================                                            P0                                             ================ */
1077 /* =========================================================================================================================== */
1078 
1079 
1080 /**
1081   * @brief GPIO Port 1 (P0)
1082   */
1083 
1084 typedef struct {                                /*!< (@ 0x50000000) P0 Structure                                               */
1085   __IM  uint32_t  RESERVED[321];
1086   __IOM uint32_t  OUT;                          /*!< (@ 0x00000504) Write GPIO port                                            */
1087   __IOM uint32_t  OUTSET;                       /*!< (@ 0x00000508) Set individual bits in GPIO port                           */
1088   __IOM uint32_t  OUTCLR;                       /*!< (@ 0x0000050C) Clear individual bits in GPIO port                         */
1089   __IM  uint32_t  IN;                           /*!< (@ 0x00000510) Read GPIO port                                             */
1090   __IOM uint32_t  DIR;                          /*!< (@ 0x00000514) Direction of GPIO pins                                     */
1091   __IOM uint32_t  DIRSET;                       /*!< (@ 0x00000518) DIR set register                                           */
1092   __IOM uint32_t  DIRCLR;                       /*!< (@ 0x0000051C) DIR clear register                                         */
1093   __IOM uint32_t  LATCH;                        /*!< (@ 0x00000520) Latch register indicating what GPIO pins that
1094                                                                     have met the criteria set in the PIN_CNF[n].SENSE
1095                                                                     registers                                                  */
1096   __IOM uint32_t  DETECTMODE;                   /*!< (@ 0x00000524) Select between default DETECT signal behavior
1097                                                                     and LDETECT mode                                           */
1098   __IM  uint32_t  RESERVED1[118];
1099   __IOM uint32_t  PIN_CNF[32];                  /*!< (@ 0x00000700) Description collection: Configuration of GPIO
1100                                                                     pins                                                       */
1101 } NRF_GPIO_Type;                                /*!< Size = 1920 (0x780)                                                       */
1102 
1103 
1104 
1105 /* =========================================================================================================================== */
1106 /* ================                                           RADIO                                           ================ */
1107 /* =========================================================================================================================== */
1108 
1109 
1110 /**
1111   * @brief 2.4 GHz radio (RADIO)
1112   */
1113 
1114 typedef struct {                                /*!< (@ 0x40001000) RADIO Structure                                            */
1115   __OM  uint32_t  TASKS_TXEN;                   /*!< (@ 0x00000000) Enable RADIO in TX mode                                    */
1116   __OM  uint32_t  TASKS_RXEN;                   /*!< (@ 0x00000004) Enable RADIO in RX mode                                    */
1117   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000008) Start RADIO                                                */
1118   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x0000000C) Stop RADIO                                                 */
1119   __OM  uint32_t  TASKS_DISABLE;                /*!< (@ 0x00000010) Disable RADIO                                              */
1120   __OM  uint32_t  TASKS_RSSISTART;              /*!< (@ 0x00000014) Start the RSSI and take one single sample of
1121                                                                     the receive signal strength                                */
1122   __OM  uint32_t  TASKS_RSSISTOP;               /*!< (@ 0x00000018) Stop the RSSI measurement                                  */
1123   __OM  uint32_t  TASKS_BCSTART;                /*!< (@ 0x0000001C) Start the bit counter                                      */
1124   __OM  uint32_t  TASKS_BCSTOP;                 /*!< (@ 0x00000020) Stop the bit counter                                       */
1125   __OM  uint32_t  TASKS_EDSTART;                /*!< (@ 0x00000024) Start the energy detect measurement used in IEEE
1126                                                                     802.15.4 mode                                              */
1127   __OM  uint32_t  TASKS_EDSTOP;                 /*!< (@ 0x00000028) Stop the energy detect measurement                         */
1128   __OM  uint32_t  TASKS_CCASTART;               /*!< (@ 0x0000002C) Start the clear channel assessment used in IEEE
1129                                                                     802.15.4 mode                                              */
1130   __OM  uint32_t  TASKS_CCASTOP;                /*!< (@ 0x00000030) Stop the clear channel assessment                          */
1131   __IM  uint32_t  RESERVED[51];
1132   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000100) RADIO has ramped up and is ready to be started             */
1133   __IOM uint32_t  EVENTS_ADDRESS;               /*!< (@ 0x00000104) Address sent or received                                   */
1134   __IOM uint32_t  EVENTS_PAYLOAD;               /*!< (@ 0x00000108) Packet payload sent or received                            */
1135   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x0000010C) Packet sent or received                                    */
1136   __IOM uint32_t  EVENTS_DISABLED;              /*!< (@ 0x00000110) RADIO has been disabled                                    */
1137   __IOM uint32_t  EVENTS_DEVMATCH;              /*!< (@ 0x00000114) A device address match occurred on the last received
1138                                                                     packet                                                     */
1139   __IOM uint32_t  EVENTS_DEVMISS;               /*!< (@ 0x00000118) No device address match occurred on the last
1140                                                                     received packet                                            */
1141   __IOM uint32_t  EVENTS_RSSIEND;               /*!< (@ 0x0000011C) Sampling of receive signal strength complete               */
1142   __IM  uint32_t  RESERVED1[2];
1143   __IOM uint32_t  EVENTS_BCMATCH;               /*!< (@ 0x00000128) Bit counter reached bit count value                        */
1144   __IM  uint32_t  RESERVED2;
1145   __IOM uint32_t  EVENTS_CRCOK;                 /*!< (@ 0x00000130) Packet received with CRC ok                                */
1146   __IOM uint32_t  EVENTS_CRCERROR;              /*!< (@ 0x00000134) Packet received with CRC error                             */
1147   __IOM uint32_t  EVENTS_FRAMESTART;            /*!< (@ 0x00000138) IEEE 802.15.4 length field received                        */
1148   __IOM uint32_t  EVENTS_EDEND;                 /*!< (@ 0x0000013C) Sampling of energy detection complete. A new
1149                                                                     ED sample is ready for readout from the
1150                                                                     RADIO.EDSAMPLE register.                                   */
1151   __IOM uint32_t  EVENTS_EDSTOPPED;             /*!< (@ 0x00000140) The sampling of energy detection has stopped               */
1152   __IOM uint32_t  EVENTS_CCAIDLE;               /*!< (@ 0x00000144) Wireless medium in idle - clear to send                    */
1153   __IOM uint32_t  EVENTS_CCABUSY;               /*!< (@ 0x00000148) Wireless medium busy - do not send                         */
1154   __IOM uint32_t  EVENTS_CCASTOPPED;            /*!< (@ 0x0000014C) The CCA has stopped                                        */
1155   __IOM uint32_t  EVENTS_RATEBOOST;             /*!< (@ 0x00000150) Ble_LR CI field received, receive mode is changed
1156                                                                     from Ble_LR125Kbit to Ble_LR500Kbit.                       */
1157   __IOM uint32_t  EVENTS_TXREADY;               /*!< (@ 0x00000154) RADIO has ramped up and is ready to be started
1158                                                                     TX path                                                    */
1159   __IOM uint32_t  EVENTS_RXREADY;               /*!< (@ 0x00000158) RADIO has ramped up and is ready to be started
1160                                                                     RX path                                                    */
1161   __IOM uint32_t  EVENTS_MHRMATCH;              /*!< (@ 0x0000015C) MAC header match found                                     */
1162   __IM  uint32_t  RESERVED3[2];
1163   __IOM uint32_t  EVENTS_SYNC;                  /*!< (@ 0x00000168) Preamble indicator.                                        */
1164   __IOM uint32_t  EVENTS_PHYEND;                /*!< (@ 0x0000016C) Generated in Ble_LR125Kbit, Ble_LR500Kbit and
1165                                                                     Ieee802154_250Kbit modes when last bit is
1166                                                                     sent on air.                                               */
1167   __IM  uint32_t  RESERVED4[36];
1168   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1169   __IM  uint32_t  RESERVED5[64];
1170   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1171   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1172   __IM  uint32_t  RESERVED6[61];
1173   __IM  uint32_t  CRCSTATUS;                    /*!< (@ 0x00000400) CRC status                                                 */
1174   __IM  uint32_t  RESERVED7;
1175   __IM  uint32_t  RXMATCH;                      /*!< (@ 0x00000408) Received address                                           */
1176   __IM  uint32_t  RXCRC;                        /*!< (@ 0x0000040C) CRC field of previously received packet                    */
1177   __IM  uint32_t  DAI;                          /*!< (@ 0x00000410) Device address match index                                 */
1178   __IM  uint32_t  PDUSTAT;                      /*!< (@ 0x00000414) Payload status                                             */
1179   __IM  uint32_t  RESERVED8[59];
1180   __IOM uint32_t  PACKETPTR;                    /*!< (@ 0x00000504) Packet pointer                                             */
1181   __IOM uint32_t  FREQUENCY;                    /*!< (@ 0x00000508) Frequency                                                  */
1182   __IOM uint32_t  TXPOWER;                      /*!< (@ 0x0000050C) Output power                                               */
1183   __IOM uint32_t  MODE;                         /*!< (@ 0x00000510) Data rate and modulation                                   */
1184   __IOM uint32_t  PCNF0;                        /*!< (@ 0x00000514) Packet configuration register 0                            */
1185   __IOM uint32_t  PCNF1;                        /*!< (@ 0x00000518) Packet configuration register 1                            */
1186   __IOM uint32_t  BASE0;                        /*!< (@ 0x0000051C) Base address 0                                             */
1187   __IOM uint32_t  BASE1;                        /*!< (@ 0x00000520) Base address 1                                             */
1188   __IOM uint32_t  PREFIX0;                      /*!< (@ 0x00000524) Prefixes bytes for logical addresses 0-3                   */
1189   __IOM uint32_t  PREFIX1;                      /*!< (@ 0x00000528) Prefixes bytes for logical addresses 4-7                   */
1190   __IOM uint32_t  TXADDRESS;                    /*!< (@ 0x0000052C) Transmit address select                                    */
1191   __IOM uint32_t  RXADDRESSES;                  /*!< (@ 0x00000530) Receive address select                                     */
1192   __IOM uint32_t  CRCCNF;                       /*!< (@ 0x00000534) CRC configuration                                          */
1193   __IOM uint32_t  CRCPOLY;                      /*!< (@ 0x00000538) CRC polynomial                                             */
1194   __IOM uint32_t  CRCINIT;                      /*!< (@ 0x0000053C) CRC initial value                                          */
1195   __IM  uint32_t  RESERVED9;
1196   __IOM uint32_t  TIFS;                         /*!< (@ 0x00000544) Interframe spacing in us                                   */
1197   __IM  uint32_t  RSSISAMPLE;                   /*!< (@ 0x00000548) RSSI sample                                                */
1198   __IM  uint32_t  RESERVED10;
1199   __IM  uint32_t  STATE;                        /*!< (@ 0x00000550) Current radio state                                        */
1200   __IOM uint32_t  DATAWHITEIV;                  /*!< (@ 0x00000554) Data whitening initial value                               */
1201   __IM  uint32_t  RESERVED11[2];
1202   __IOM uint32_t  BCC;                          /*!< (@ 0x00000560) Bit counter compare                                        */
1203   __IM  uint32_t  RESERVED12[39];
1204   __IOM uint32_t  DAB[8];                       /*!< (@ 0x00000600) Description collection: Device address base segment
1205                                                                     n                                                          */
1206   __IOM uint32_t  DAP[8];                       /*!< (@ 0x00000620) Description collection: Device address prefix
1207                                                                     n                                                          */
1208   __IOM uint32_t  DACNF;                        /*!< (@ 0x00000640) Device address match configuration                         */
1209   __IOM uint32_t  MHRMATCHCONF;                 /*!< (@ 0x00000644) Search pattern configuration                               */
1210   __IOM uint32_t  MHRMATCHMAS;                  /*!< (@ 0x00000648) Pattern mask                                               */
1211   __IM  uint32_t  RESERVED13;
1212   __IOM uint32_t  MODECNF0;                     /*!< (@ 0x00000650) Radio mode configuration register 0                        */
1213   __IM  uint32_t  RESERVED14[3];
1214   __IOM uint32_t  SFD;                          /*!< (@ 0x00000660) IEEE 802.15.4 start of frame delimiter                     */
1215   __IOM uint32_t  EDCNT;                        /*!< (@ 0x00000664) IEEE 802.15.4 energy detect loop count                     */
1216   __IOM uint32_t  EDSAMPLE;                     /*!< (@ 0x00000668) IEEE 802.15.4 energy detect level                          */
1217   __IOM uint32_t  CCACTRL;                      /*!< (@ 0x0000066C) IEEE 802.15.4 clear channel assessment control             */
1218   __IM  uint32_t  RESERVED15[611];
1219   __IOM uint32_t  POWER;                        /*!< (@ 0x00000FFC) Peripheral power control                                   */
1220 } NRF_RADIO_Type;                               /*!< Size = 4096 (0x1000)                                                      */
1221 
1222 
1223 
1224 /* =========================================================================================================================== */
1225 /* ================                                           UART0                                           ================ */
1226 /* =========================================================================================================================== */
1227 
1228 
1229 /**
1230   * @brief Universal Asynchronous Receiver/Transmitter (UART0)
1231   */
1232 
1233 typedef struct {                                /*!< (@ 0x40002000) UART0 Structure                                            */
1234   __OM  uint32_t  TASKS_STARTRX;                /*!< (@ 0x00000000) Start UART receiver                                        */
1235   __OM  uint32_t  TASKS_STOPRX;                 /*!< (@ 0x00000004) Stop UART receiver                                         */
1236   __OM  uint32_t  TASKS_STARTTX;                /*!< (@ 0x00000008) Start UART transmitter                                     */
1237   __OM  uint32_t  TASKS_STOPTX;                 /*!< (@ 0x0000000C) Stop UART transmitter                                      */
1238   __IM  uint32_t  RESERVED[3];
1239   __OM  uint32_t  TASKS_SUSPEND;                /*!< (@ 0x0000001C) Suspend UART                                               */
1240   __IM  uint32_t  RESERVED1[56];
1241   __IOM uint32_t  EVENTS_CTS;                   /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send.                 */
1242   __IOM uint32_t  EVENTS_NCTS;                  /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send.          */
1243   __IOM uint32_t  EVENTS_RXDRDY;                /*!< (@ 0x00000108) Data received in RXD                                       */
1244   __IM  uint32_t  RESERVED2[4];
1245   __IOM uint32_t  EVENTS_TXDRDY;                /*!< (@ 0x0000011C) Data sent from TXD                                         */
1246   __IM  uint32_t  RESERVED3;
1247   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000124) Error detected                                             */
1248   __IM  uint32_t  RESERVED4[7];
1249   __IOM uint32_t  EVENTS_RXTO;                  /*!< (@ 0x00000144) Receiver timeout                                           */
1250   __IM  uint32_t  RESERVED5[46];
1251   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1252   __IM  uint32_t  RESERVED6[64];
1253   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1254   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1255   __IM  uint32_t  RESERVED7[93];
1256   __IOM uint32_t  ERRORSRC;                     /*!< (@ 0x00000480) Error source                                               */
1257   __IM  uint32_t  RESERVED8[31];
1258   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable UART                                                */
1259   __IM  uint32_t  RESERVED9;
1260   __IOM UART_PSEL_Type PSEL;                    /*!< (@ 0x00000508) Unspecified                                                */
1261   __IM  uint32_t  RXD;                          /*!< (@ 0x00000518) RXD register                                               */
1262   __OM  uint32_t  TXD;                          /*!< (@ 0x0000051C) TXD register                                               */
1263   __IM  uint32_t  RESERVED10;
1264   __IOM uint32_t  BAUDRATE;                     /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source
1265                                                                     selected.                                                  */
1266   __IM  uint32_t  RESERVED11[17];
1267   __IOM uint32_t  CONFIG;                       /*!< (@ 0x0000056C) Configuration of parity and hardware flow control          */
1268 } NRF_UART_Type;                                /*!< Size = 1392 (0x570)                                                       */
1269 
1270 
1271 
1272 /* =========================================================================================================================== */
1273 /* ================                                          UARTE0                                           ================ */
1274 /* =========================================================================================================================== */
1275 
1276 
1277 /**
1278   * @brief UART with EasyDMA 0 (UARTE0)
1279   */
1280 
1281 typedef struct {                                /*!< (@ 0x40002000) UARTE0 Structure                                           */
1282   __OM  uint32_t  TASKS_STARTRX;                /*!< (@ 0x00000000) Start UART receiver                                        */
1283   __OM  uint32_t  TASKS_STOPRX;                 /*!< (@ 0x00000004) Stop UART receiver                                         */
1284   __OM  uint32_t  TASKS_STARTTX;                /*!< (@ 0x00000008) Start UART transmitter                                     */
1285   __OM  uint32_t  TASKS_STOPTX;                 /*!< (@ 0x0000000C) Stop UART transmitter                                      */
1286   __IM  uint32_t  RESERVED[7];
1287   __OM  uint32_t  TASKS_FLUSHRX;                /*!< (@ 0x0000002C) Flush RX FIFO into RX buffer                               */
1288   __IM  uint32_t  RESERVED1[52];
1289   __IOM uint32_t  EVENTS_CTS;                   /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send.                 */
1290   __IOM uint32_t  EVENTS_NCTS;                  /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send.          */
1291   __IOM uint32_t  EVENTS_RXDRDY;                /*!< (@ 0x00000108) Data received in RXD (but potentially not yet
1292                                                                     transferred to Data RAM)                                   */
1293   __IM  uint32_t  RESERVED2;
1294   __IOM uint32_t  EVENTS_ENDRX;                 /*!< (@ 0x00000110) Receive buffer is filled up                                */
1295   __IM  uint32_t  RESERVED3[2];
1296   __IOM uint32_t  EVENTS_TXDRDY;                /*!< (@ 0x0000011C) Data sent from TXD                                         */
1297   __IOM uint32_t  EVENTS_ENDTX;                 /*!< (@ 0x00000120) Last TX byte transmitted                                   */
1298   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000124) Error detected                                             */
1299   __IM  uint32_t  RESERVED4[7];
1300   __IOM uint32_t  EVENTS_RXTO;                  /*!< (@ 0x00000144) Receiver timeout                                           */
1301   __IM  uint32_t  RESERVED5;
1302   __IOM uint32_t  EVENTS_RXSTARTED;             /*!< (@ 0x0000014C) UART receiver has started                                  */
1303   __IOM uint32_t  EVENTS_TXSTARTED;             /*!< (@ 0x00000150) UART transmitter has started                               */
1304   __IM  uint32_t  RESERVED6;
1305   __IOM uint32_t  EVENTS_TXSTOPPED;             /*!< (@ 0x00000158) Transmitter stopped                                        */
1306   __IM  uint32_t  RESERVED7[41];
1307   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1308   __IM  uint32_t  RESERVED8[63];
1309   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1310   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1311   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1312   __IM  uint32_t  RESERVED9[93];
1313   __IOM uint32_t  ERRORSRC;                     /*!< (@ 0x00000480) Error source This register is read/write one
1314                                                                     to clear.                                                  */
1315   __IM  uint32_t  RESERVED10[31];
1316   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable UART                                                */
1317   __IM  uint32_t  RESERVED11;
1318   __IOM UARTE_PSEL_Type PSEL;                   /*!< (@ 0x00000508) Unspecified                                                */
1319   __IM  uint32_t  RESERVED12[3];
1320   __IOM uint32_t  BAUDRATE;                     /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source
1321                                                                     selected.                                                  */
1322   __IM  uint32_t  RESERVED13[3];
1323   __IOM UARTE_RXD_Type RXD;                     /*!< (@ 0x00000534) RXD EasyDMA channel                                        */
1324   __IM  uint32_t  RESERVED14;
1325   __IOM UARTE_TXD_Type TXD;                     /*!< (@ 0x00000544) TXD EasyDMA channel                                        */
1326   __IM  uint32_t  RESERVED15[7];
1327   __IOM uint32_t  CONFIG;                       /*!< (@ 0x0000056C) Configuration of parity and hardware flow control          */
1328 } NRF_UARTE_Type;                               /*!< Size = 1392 (0x570)                                                       */
1329 
1330 
1331 
1332 /* =========================================================================================================================== */
1333 /* ================                                           SPI0                                            ================ */
1334 /* =========================================================================================================================== */
1335 
1336 
1337 /**
1338   * @brief Serial Peripheral Interface 0 (SPI0)
1339   */
1340 
1341 typedef struct {                                /*!< (@ 0x40003000) SPI0 Structure                                             */
1342   __IM  uint32_t  RESERVED[66];
1343   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000108) TXD byte sent and RXD byte received                        */
1344   __IM  uint32_t  RESERVED1[126];
1345   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1346   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1347   __IM  uint32_t  RESERVED2[125];
1348   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable SPI                                                 */
1349   __IM  uint32_t  RESERVED3;
1350   __IOM SPI_PSEL_Type PSEL;                     /*!< (@ 0x00000508) Unspecified                                                */
1351   __IM  uint32_t  RESERVED4;
1352   __IM  uint32_t  RXD;                          /*!< (@ 0x00000518) RXD register                                               */
1353   __IOM uint32_t  TXD;                          /*!< (@ 0x0000051C) TXD register                                               */
1354   __IM  uint32_t  RESERVED5;
1355   __IOM uint32_t  FREQUENCY;                    /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK
1356                                                                     source selected.                                           */
1357   __IM  uint32_t  RESERVED6[11];
1358   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000554) Configuration register                                     */
1359 } NRF_SPI_Type;                                 /*!< Size = 1368 (0x558)                                                       */
1360 
1361 
1362 
1363 /* =========================================================================================================================== */
1364 /* ================                                           SPIM0                                           ================ */
1365 /* =========================================================================================================================== */
1366 
1367 
1368 /**
1369   * @brief Serial Peripheral Interface Master with EasyDMA 0 (SPIM0)
1370   */
1371 
1372 typedef struct {                                /*!< (@ 0x40003000) SPIM0 Structure                                            */
1373   __IM  uint32_t  RESERVED[4];
1374   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000010) Start SPI transaction                                      */
1375   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000014) Stop SPI transaction                                       */
1376   __IM  uint32_t  RESERVED1;
1377   __OM  uint32_t  TASKS_SUSPEND;                /*!< (@ 0x0000001C) Suspend SPI transaction                                    */
1378   __OM  uint32_t  TASKS_RESUME;                 /*!< (@ 0x00000020) Resume SPI transaction                                     */
1379   __IM  uint32_t  RESERVED2[56];
1380   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) SPI transaction has stopped                                */
1381   __IM  uint32_t  RESERVED3[2];
1382   __IOM uint32_t  EVENTS_ENDRX;                 /*!< (@ 0x00000110) End of RXD buffer reached                                  */
1383   __IM  uint32_t  RESERVED4;
1384   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x00000118) End of RXD buffer and TXD buffer reached                   */
1385   __IM  uint32_t  RESERVED5;
1386   __IOM uint32_t  EVENTS_ENDTX;                 /*!< (@ 0x00000120) End of TXD buffer reached                                  */
1387   __IM  uint32_t  RESERVED6[10];
1388   __IOM uint32_t  EVENTS_STARTED;               /*!< (@ 0x0000014C) Transaction started                                        */
1389   __IM  uint32_t  RESERVED7[44];
1390   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1391   __IM  uint32_t  RESERVED8[64];
1392   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1393   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1394   __IM  uint32_t  RESERVED9[61];
1395   __IOM uint32_t  STALLSTAT;                    /*!< (@ 0x00000400) Stall status for EasyDMA RAM accesses. The fields
1396                                                                     in this register are set to STALL by hardware
1397                                                                     whenever a stall occurs and can be cleared
1398                                                                     (set to NOSTALL) by the CPU.                               */
1399   __IM  uint32_t  RESERVED10[63];
1400   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable SPIM                                                */
1401   __IM  uint32_t  RESERVED11;
1402   __IOM SPIM_PSEL_Type PSEL;                    /*!< (@ 0x00000508) Unspecified                                                */
1403   __IM  uint32_t  RESERVED12[3];
1404   __IOM uint32_t  FREQUENCY;                    /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK
1405                                                                     source selected.                                           */
1406   __IM  uint32_t  RESERVED13[3];
1407   __IOM SPIM_RXD_Type RXD;                      /*!< (@ 0x00000534) RXD EasyDMA channel                                        */
1408   __IOM SPIM_TXD_Type TXD;                      /*!< (@ 0x00000544) TXD EasyDMA channel                                        */
1409   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000554) Configuration register                                     */
1410   __IM  uint32_t  RESERVED14[2];
1411   __IOM SPIM_IFTIMING_Type IFTIMING;            /*!< (@ 0x00000560) Unspecified                                                */
1412   __IOM uint32_t  CSNPOL;                       /*!< (@ 0x00000568) Polarity of CSN output                                     */
1413   __IOM uint32_t  PSELDCX;                      /*!< (@ 0x0000056C) Pin select for DCX signal                                  */
1414   __IOM uint32_t  DCXCNT;                       /*!< (@ 0x00000570) DCX configuration                                          */
1415   __IM  uint32_t  RESERVED15[19];
1416   __IOM uint32_t  ORC;                          /*!< (@ 0x000005C0) Byte transmitted after TXD.MAXCNT bytes have
1417                                                                     been transmitted in the case when RXD.MAXCNT
1418                                                                     is greater than TXD.MAXCNT                                 */
1419 } NRF_SPIM_Type;                                /*!< Size = 1476 (0x5c4)                                                       */
1420 
1421 
1422 
1423 /* =========================================================================================================================== */
1424 /* ================                                           SPIS0                                           ================ */
1425 /* =========================================================================================================================== */
1426 
1427 
1428 /**
1429   * @brief SPI Slave 0 (SPIS0)
1430   */
1431 
1432 typedef struct {                                /*!< (@ 0x40003000) SPIS0 Structure                                            */
1433   __IM  uint32_t  RESERVED[9];
1434   __OM  uint32_t  TASKS_ACQUIRE;                /*!< (@ 0x00000024) Acquire SPI semaphore                                      */
1435   __OM  uint32_t  TASKS_RELEASE;                /*!< (@ 0x00000028) Release SPI semaphore, enabling the SPI slave
1436                                                                     to acquire it                                              */
1437   __IM  uint32_t  RESERVED1[54];
1438   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x00000104) Granted transaction completed                              */
1439   __IM  uint32_t  RESERVED2[2];
1440   __IOM uint32_t  EVENTS_ENDRX;                 /*!< (@ 0x00000110) End of RXD buffer reached                                  */
1441   __IM  uint32_t  RESERVED3[5];
1442   __IOM uint32_t  EVENTS_ACQUIRED;              /*!< (@ 0x00000128) Semaphore acquired                                         */
1443   __IM  uint32_t  RESERVED4[53];
1444   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1445   __IM  uint32_t  RESERVED5[64];
1446   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1447   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1448   __IM  uint32_t  RESERVED6[61];
1449   __IM  uint32_t  SEMSTAT;                      /*!< (@ 0x00000400) Semaphore status register                                  */
1450   __IM  uint32_t  RESERVED7[15];
1451   __IOM uint32_t  STATUS;                       /*!< (@ 0x00000440) Status from last transaction                               */
1452   __IM  uint32_t  RESERVED8[47];
1453   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable SPI slave                                           */
1454   __IM  uint32_t  RESERVED9;
1455   __IOM SPIS_PSEL_Type PSEL;                    /*!< (@ 0x00000508) Unspecified                                                */
1456   __IM  uint32_t  RESERVED10[7];
1457   __IOM SPIS_RXD_Type RXD;                      /*!< (@ 0x00000534) Unspecified                                                */
1458   __IOM SPIS_TXD_Type TXD;                      /*!< (@ 0x00000544) Unspecified                                                */
1459   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000554) Configuration register                                     */
1460   __IM  uint32_t  RESERVED11;
1461   __IOM uint32_t  DEF;                          /*!< (@ 0x0000055C) Default character. Character clocked out in case
1462                                                                     of an ignored transaction.                                 */
1463   __IM  uint32_t  RESERVED12[24];
1464   __IOM uint32_t  ORC;                          /*!< (@ 0x000005C0) Over-read character                                        */
1465 } NRF_SPIS_Type;                                /*!< Size = 1476 (0x5c4)                                                       */
1466 
1467 
1468 
1469 /* =========================================================================================================================== */
1470 /* ================                                           TWI0                                            ================ */
1471 /* =========================================================================================================================== */
1472 
1473 
1474 /**
1475   * @brief I2C compatible Two-Wire Interface 0 (TWI0)
1476   */
1477 
1478 typedef struct {                                /*!< (@ 0x40003000) TWI0 Structure                                             */
1479   __OM  uint32_t  TASKS_STARTRX;                /*!< (@ 0x00000000) Start TWI receive sequence                                 */
1480   __IM  uint32_t  RESERVED;
1481   __OM  uint32_t  TASKS_STARTTX;                /*!< (@ 0x00000008) Start TWI transmit sequence                                */
1482   __IM  uint32_t  RESERVED1[2];
1483   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000014) Stop TWI transaction                                       */
1484   __IM  uint32_t  RESERVED2;
1485   __OM  uint32_t  TASKS_SUSPEND;                /*!< (@ 0x0000001C) Suspend TWI transaction                                    */
1486   __OM  uint32_t  TASKS_RESUME;                 /*!< (@ 0x00000020) Resume TWI transaction                                     */
1487   __IM  uint32_t  RESERVED3[56];
1488   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) TWI stopped                                                */
1489   __IOM uint32_t  EVENTS_RXDREADY;              /*!< (@ 0x00000108) TWI RXD byte received                                      */
1490   __IM  uint32_t  RESERVED4[4];
1491   __IOM uint32_t  EVENTS_TXDSENT;               /*!< (@ 0x0000011C) TWI TXD byte sent                                          */
1492   __IM  uint32_t  RESERVED5;
1493   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000124) TWI error                                                  */
1494   __IM  uint32_t  RESERVED6[4];
1495   __IOM uint32_t  EVENTS_BB;                    /*!< (@ 0x00000138) TWI byte boundary, generated before each byte
1496                                                                     that is sent or received                                   */
1497   __IM  uint32_t  RESERVED7[3];
1498   __IOM uint32_t  EVENTS_SUSPENDED;             /*!< (@ 0x00000148) TWI entered the suspended state                            */
1499   __IM  uint32_t  RESERVED8[45];
1500   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1501   __IM  uint32_t  RESERVED9[64];
1502   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1503   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1504   __IM  uint32_t  RESERVED10[110];
1505   __IOM uint32_t  ERRORSRC;                     /*!< (@ 0x000004C4) Error source                                               */
1506   __IM  uint32_t  RESERVED11[14];
1507   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable TWI                                                 */
1508   __IM  uint32_t  RESERVED12;
1509   __IOM TWI_PSEL_Type PSEL;                     /*!< (@ 0x00000508) Unspecified                                                */
1510   __IM  uint32_t  RESERVED13[2];
1511   __IM  uint32_t  RXD;                          /*!< (@ 0x00000518) RXD register                                               */
1512   __IOM uint32_t  TXD;                          /*!< (@ 0x0000051C) TXD register                                               */
1513   __IM  uint32_t  RESERVED14;
1514   __IOM uint32_t  FREQUENCY;                    /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK
1515                                                                     source selected.                                           */
1516   __IM  uint32_t  RESERVED15[24];
1517   __IOM uint32_t  ADDRESS;                      /*!< (@ 0x00000588) Address used in the TWI transfer                           */
1518 } NRF_TWI_Type;                                 /*!< Size = 1420 (0x58c)                                                       */
1519 
1520 
1521 
1522 /* =========================================================================================================================== */
1523 /* ================                                           TWIM0                                           ================ */
1524 /* =========================================================================================================================== */
1525 
1526 
1527 /**
1528   * @brief I2C compatible Two-Wire Master Interface with EasyDMA 0 (TWIM0)
1529   */
1530 
1531 typedef struct {                                /*!< (@ 0x40003000) TWIM0 Structure                                            */
1532   __OM  uint32_t  TASKS_STARTRX;                /*!< (@ 0x00000000) Start TWI receive sequence                                 */
1533   __IM  uint32_t  RESERVED;
1534   __OM  uint32_t  TASKS_STARTTX;                /*!< (@ 0x00000008) Start TWI transmit sequence                                */
1535   __IM  uint32_t  RESERVED1[2];
1536   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000014) Stop TWI transaction. Must be issued while the
1537                                                                     TWI master is not suspended.                               */
1538   __IM  uint32_t  RESERVED2;
1539   __OM  uint32_t  TASKS_SUSPEND;                /*!< (@ 0x0000001C) Suspend TWI transaction                                    */
1540   __OM  uint32_t  TASKS_RESUME;                 /*!< (@ 0x00000020) Resume TWI transaction                                     */
1541   __IM  uint32_t  RESERVED3[56];
1542   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) TWI stopped                                                */
1543   __IM  uint32_t  RESERVED4[7];
1544   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000124) TWI error                                                  */
1545   __IM  uint32_t  RESERVED5[8];
1546   __IOM uint32_t  EVENTS_SUSPENDED;             /*!< (@ 0x00000148) SUSPEND task has been issued, TWI traffic is
1547                                                                     now suspended.                                             */
1548   __IOM uint32_t  EVENTS_RXSTARTED;             /*!< (@ 0x0000014C) Receive sequence started                                   */
1549   __IOM uint32_t  EVENTS_TXSTARTED;             /*!< (@ 0x00000150) Transmit sequence started                                  */
1550   __IM  uint32_t  RESERVED6[2];
1551   __IOM uint32_t  EVENTS_LASTRX;                /*!< (@ 0x0000015C) Byte boundary, starting to receive the last byte           */
1552   __IOM uint32_t  EVENTS_LASTTX;                /*!< (@ 0x00000160) Byte boundary, starting to transmit the last
1553                                                                     byte                                                       */
1554   __IM  uint32_t  RESERVED7[39];
1555   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1556   __IM  uint32_t  RESERVED8[63];
1557   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1558   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1559   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1560   __IM  uint32_t  RESERVED9[110];
1561   __IOM uint32_t  ERRORSRC;                     /*!< (@ 0x000004C4) Error source                                               */
1562   __IM  uint32_t  RESERVED10[14];
1563   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable TWIM                                                */
1564   __IM  uint32_t  RESERVED11;
1565   __IOM TWIM_PSEL_Type PSEL;                    /*!< (@ 0x00000508) Unspecified                                                */
1566   __IM  uint32_t  RESERVED12[5];
1567   __IOM uint32_t  FREQUENCY;                    /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK
1568                                                                     source selected.                                           */
1569   __IM  uint32_t  RESERVED13[3];
1570   __IOM TWIM_RXD_Type RXD;                      /*!< (@ 0x00000534) RXD EasyDMA channel                                        */
1571   __IOM TWIM_TXD_Type TXD;                      /*!< (@ 0x00000544) TXD EasyDMA channel                                        */
1572   __IM  uint32_t  RESERVED14[13];
1573   __IOM uint32_t  ADDRESS;                      /*!< (@ 0x00000588) Address used in the TWI transfer                           */
1574 } NRF_TWIM_Type;                                /*!< Size = 1420 (0x58c)                                                       */
1575 
1576 
1577 
1578 /* =========================================================================================================================== */
1579 /* ================                                           TWIS0                                           ================ */
1580 /* =========================================================================================================================== */
1581 
1582 
1583 /**
1584   * @brief I2C compatible Two-Wire Slave Interface with EasyDMA 0 (TWIS0)
1585   */
1586 
1587 typedef struct {                                /*!< (@ 0x40003000) TWIS0 Structure                                            */
1588   __IM  uint32_t  RESERVED[5];
1589   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000014) Stop TWI transaction                                       */
1590   __IM  uint32_t  RESERVED1;
1591   __OM  uint32_t  TASKS_SUSPEND;                /*!< (@ 0x0000001C) Suspend TWI transaction                                    */
1592   __OM  uint32_t  TASKS_RESUME;                 /*!< (@ 0x00000020) Resume TWI transaction                                     */
1593   __IM  uint32_t  RESERVED2[3];
1594   __OM  uint32_t  TASKS_PREPARERX;              /*!< (@ 0x00000030) Prepare the TWI slave to respond to a write command        */
1595   __OM  uint32_t  TASKS_PREPARETX;              /*!< (@ 0x00000034) Prepare the TWI slave to respond to a read command         */
1596   __IM  uint32_t  RESERVED3[51];
1597   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) TWI stopped                                                */
1598   __IM  uint32_t  RESERVED4[7];
1599   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000124) TWI error                                                  */
1600   __IM  uint32_t  RESERVED5[9];
1601   __IOM uint32_t  EVENTS_RXSTARTED;             /*!< (@ 0x0000014C) Receive sequence started                                   */
1602   __IOM uint32_t  EVENTS_TXSTARTED;             /*!< (@ 0x00000150) Transmit sequence started                                  */
1603   __IM  uint32_t  RESERVED6[4];
1604   __IOM uint32_t  EVENTS_WRITE;                 /*!< (@ 0x00000164) Write command received                                     */
1605   __IOM uint32_t  EVENTS_READ;                  /*!< (@ 0x00000168) Read command received                                      */
1606   __IM  uint32_t  RESERVED7[37];
1607   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1608   __IM  uint32_t  RESERVED8[63];
1609   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1610   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1611   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1612   __IM  uint32_t  RESERVED9[113];
1613   __IOM uint32_t  ERRORSRC;                     /*!< (@ 0x000004D0) Error source                                               */
1614   __IM  uint32_t  MATCH;                        /*!< (@ 0x000004D4) Status register indicating which address had
1615                                                                     a match                                                    */
1616   __IM  uint32_t  RESERVED10[10];
1617   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable TWIS                                                */
1618   __IM  uint32_t  RESERVED11;
1619   __IOM TWIS_PSEL_Type PSEL;                    /*!< (@ 0x00000508) Unspecified                                                */
1620   __IM  uint32_t  RESERVED12[9];
1621   __IOM TWIS_RXD_Type RXD;                      /*!< (@ 0x00000534) RXD EasyDMA channel                                        */
1622   __IOM TWIS_TXD_Type TXD;                      /*!< (@ 0x00000544) TXD EasyDMA channel                                        */
1623   __IM  uint32_t  RESERVED13[13];
1624   __IOM uint32_t  ADDRESS[2];                   /*!< (@ 0x00000588) Description collection: TWI slave address n                */
1625   __IM  uint32_t  RESERVED14;
1626   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000594) Configuration register for the address match
1627                                                                     mechanism                                                  */
1628   __IM  uint32_t  RESERVED15[10];
1629   __IOM uint32_t  ORC;                          /*!< (@ 0x000005C0) Over-read character. Character sent out in case
1630                                                                     of an over-read of the transmit buffer.                    */
1631 } NRF_TWIS_Type;                                /*!< Size = 1476 (0x5c4)                                                       */
1632 
1633 
1634 
1635 /* =========================================================================================================================== */
1636 /* ================                                           NFCT                                            ================ */
1637 /* =========================================================================================================================== */
1638 
1639 
1640 /**
1641   * @brief NFC-A compatible radio (NFCT)
1642   */
1643 
1644 typedef struct {                                /*!< (@ 0x40005000) NFCT Structure                                             */
1645   __OM  uint32_t  TASKS_ACTIVATE;               /*!< (@ 0x00000000) Activate NFCT peripheral for incoming and outgoing
1646                                                                     frames, change state to activated                          */
1647   __OM  uint32_t  TASKS_DISABLE;                /*!< (@ 0x00000004) Disable NFCT peripheral                                    */
1648   __OM  uint32_t  TASKS_SENSE;                  /*!< (@ 0x00000008) Enable NFC sense field mode, change state to
1649                                                                     sense mode                                                 */
1650   __OM  uint32_t  TASKS_STARTTX;                /*!< (@ 0x0000000C) Start transmission of an outgoing frame, change
1651                                                                     state to transmit                                          */
1652   __IM  uint32_t  RESERVED[3];
1653   __OM  uint32_t  TASKS_ENABLERXDATA;           /*!< (@ 0x0000001C) Initializes the EasyDMA for receive.                       */
1654   __IM  uint32_t  RESERVED1;
1655   __OM  uint32_t  TASKS_GOIDLE;                 /*!< (@ 0x00000024) Force state machine to IDLE state                          */
1656   __OM  uint32_t  TASKS_GOSLEEP;                /*!< (@ 0x00000028) Force state machine to SLEEP_A state                       */
1657   __IM  uint32_t  RESERVED2[53];
1658   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000100) The NFCT peripheral is ready to receive and send
1659                                                                     frames                                                     */
1660   __IOM uint32_t  EVENTS_FIELDDETECTED;         /*!< (@ 0x00000104) Remote NFC field detected                                  */
1661   __IOM uint32_t  EVENTS_FIELDLOST;             /*!< (@ 0x00000108) Remote NFC field lost                                      */
1662   __IOM uint32_t  EVENTS_TXFRAMESTART;          /*!< (@ 0x0000010C) Marks the start of the first symbol of a transmitted
1663                                                                     frame                                                      */
1664   __IOM uint32_t  EVENTS_TXFRAMEEND;            /*!< (@ 0x00000110) Marks the end of the last transmitted on-air
1665                                                                     symbol of a frame                                          */
1666   __IOM uint32_t  EVENTS_RXFRAMESTART;          /*!< (@ 0x00000114) Marks the end of the first symbol of a received
1667                                                                     frame                                                      */
1668   __IOM uint32_t  EVENTS_RXFRAMEEND;            /*!< (@ 0x00000118) Received data has been checked (CRC, parity)
1669                                                                     and transferred to RAM, and EasyDMA has
1670                                                                     ended accessing the RX buffer                              */
1671   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x0000011C) NFC error reported. The ERRORSTATUS register
1672                                                                     contains details on the source of the error.               */
1673   __IM  uint32_t  RESERVED3[2];
1674   __IOM uint32_t  EVENTS_RXERROR;               /*!< (@ 0x00000128) NFC RX frame error reported. The FRAMESTATUS.RX
1675                                                                     register contains details on the source
1676                                                                     of the error.                                              */
1677   __IOM uint32_t  EVENTS_ENDRX;                 /*!< (@ 0x0000012C) RX buffer (as defined by PACKETPTR and MAXLEN)
1678                                                                     in Data RAM full.                                          */
1679   __IOM uint32_t  EVENTS_ENDTX;                 /*!< (@ 0x00000130) Transmission of data in RAM has ended, and EasyDMA
1680                                                                     has ended accessing the TX buffer                          */
1681   __IM  uint32_t  RESERVED4;
1682   __IOM uint32_t  EVENTS_AUTOCOLRESSTARTED;     /*!< (@ 0x00000138) Auto collision resolution process has started              */
1683   __IM  uint32_t  RESERVED5[3];
1684   __IOM uint32_t  EVENTS_COLLISION;             /*!< (@ 0x00000148) NFC auto collision resolution error reported.              */
1685   __IOM uint32_t  EVENTS_SELECTED;              /*!< (@ 0x0000014C) NFC auto collision resolution successfully completed       */
1686   __IOM uint32_t  EVENTS_STARTED;               /*!< (@ 0x00000150) EasyDMA is ready to receive or send frames.                */
1687   __IM  uint32_t  RESERVED6[43];
1688   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1689   __IM  uint32_t  RESERVED7[63];
1690   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1691   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1692   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1693   __IM  uint32_t  RESERVED8[62];
1694   __IOM uint32_t  ERRORSTATUS;                  /*!< (@ 0x00000404) NFC Error Status register                                  */
1695   __IM  uint32_t  RESERVED9;
1696   __IOM NFCT_FRAMESTATUS_Type FRAMESTATUS;      /*!< (@ 0x0000040C) Unspecified                                                */
1697   __IM  uint32_t  NFCTAGSTATE;                  /*!< (@ 0x00000410) NfcTag state register                                      */
1698   __IM  uint32_t  RESERVED10[3];
1699   __IM  uint32_t  SLEEPSTATE;                   /*!< (@ 0x00000420) Sleep state during automatic collision resolution          */
1700   __IM  uint32_t  RESERVED11[6];
1701   __IM  uint32_t  FIELDPRESENT;                 /*!< (@ 0x0000043C) Indicates the presence or not of a valid field             */
1702   __IM  uint32_t  RESERVED12[49];
1703   __IOM uint32_t  FRAMEDELAYMIN;                /*!< (@ 0x00000504) Minimum frame delay                                        */
1704   __IOM uint32_t  FRAMEDELAYMAX;                /*!< (@ 0x00000508) Maximum frame delay                                        */
1705   __IOM uint32_t  FRAMEDELAYMODE;               /*!< (@ 0x0000050C) Configuration register for the Frame Delay Timer           */
1706   __IOM uint32_t  PACKETPTR;                    /*!< (@ 0x00000510) Packet pointer for TXD and RXD data storage in
1707                                                                     Data RAM                                                   */
1708   __IOM uint32_t  MAXLEN;                       /*!< (@ 0x00000514) Size of the RAM buffer allocated to TXD and RXD
1709                                                                     data storage each                                          */
1710   __IOM NFCT_TXD_Type TXD;                      /*!< (@ 0x00000518) Unspecified                                                */
1711   __IOM NFCT_RXD_Type RXD;                      /*!< (@ 0x00000520) Unspecified                                                */
1712   __IM  uint32_t  RESERVED13[26];
1713   __IOM uint32_t  NFCID1_LAST;                  /*!< (@ 0x00000590) Last NFCID1 part (4, 7 or 10 bytes ID)                     */
1714   __IOM uint32_t  NFCID1_2ND_LAST;              /*!< (@ 0x00000594) Second last NFCID1 part (7 or 10 bytes ID)                 */
1715   __IOM uint32_t  NFCID1_3RD_LAST;              /*!< (@ 0x00000598) Third last NFCID1 part (10 bytes ID)                       */
1716   __IOM uint32_t  AUTOCOLRESCONFIG;             /*!< (@ 0x0000059C) Controls the auto collision resolution function.
1717                                                                     This setting must be done before the NFCT
1718                                                                     peripheral is activated.                                   */
1719   __IOM uint32_t  SENSRES;                      /*!< (@ 0x000005A0) NFC-A SENS_RES auto-response settings                      */
1720   __IOM uint32_t  SELRES;                       /*!< (@ 0x000005A4) NFC-A SEL_RES auto-response settings                       */
1721 } NRF_NFCT_Type;                                /*!< Size = 1448 (0x5a8)                                                       */
1722 
1723 
1724 
1725 /* =========================================================================================================================== */
1726 /* ================                                          GPIOTE                                           ================ */
1727 /* =========================================================================================================================== */
1728 
1729 
1730 /**
1731   * @brief GPIO Tasks and Events (GPIOTE)
1732   */
1733 
1734 typedef struct {                                /*!< (@ 0x40006000) GPIOTE Structure                                           */
1735   __OM  uint32_t  TASKS_OUT[8];                 /*!< (@ 0x00000000) Description collection: Task for writing to pin
1736                                                                     specified in CONFIG[n].PSEL. Action on pin
1737                                                                     is configured in CONFIG[n].POLARITY.                       */
1738   __IM  uint32_t  RESERVED[4];
1739   __OM  uint32_t  TASKS_SET[8];                 /*!< (@ 0x00000030) Description collection: Task for writing to pin
1740                                                                     specified in CONFIG[n].PSEL. Action on pin
1741                                                                     is to set it high.                                         */
1742   __IM  uint32_t  RESERVED1[4];
1743   __OM  uint32_t  TASKS_CLR[8];                 /*!< (@ 0x00000060) Description collection: Task for writing to pin
1744                                                                     specified in CONFIG[n].PSEL. Action on pin
1745                                                                     is to set it low.                                          */
1746   __IM  uint32_t  RESERVED2[32];
1747   __IOM uint32_t  EVENTS_IN[8];                 /*!< (@ 0x00000100) Description collection: Event generated from
1748                                                                     pin specified in CONFIG[n].PSEL                            */
1749   __IM  uint32_t  RESERVED3[23];
1750   __IOM uint32_t  EVENTS_PORT;                  /*!< (@ 0x0000017C) Event generated from multiple input GPIO pins
1751                                                                     with SENSE mechanism enabled                               */
1752   __IM  uint32_t  RESERVED4[97];
1753   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1754   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1755   __IM  uint32_t  RESERVED5[129];
1756   __IOM uint32_t  CONFIG[8];                    /*!< (@ 0x00000510) Description collection: Configuration for OUT[n],
1757                                                                     SET[n], and CLR[n] tasks and IN[n] event                   */
1758 } NRF_GPIOTE_Type;                              /*!< Size = 1328 (0x530)                                                       */
1759 
1760 
1761 
1762 /* =========================================================================================================================== */
1763 /* ================                                           SAADC                                           ================ */
1764 /* =========================================================================================================================== */
1765 
1766 
1767 /**
1768   * @brief Successive approximation register (SAR) analog-to-digital converter (SAADC)
1769   */
1770 
1771 typedef struct {                                /*!< (@ 0x40007000) SAADC Structure                                            */
1772   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Starts the SAADC and prepares the result buffer
1773                                                                     in RAM                                                     */
1774   __OM  uint32_t  TASKS_SAMPLE;                 /*!< (@ 0x00000004) Takes one SAADC sample                                     */
1775   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000008) Stops the SAADC and terminates all on-going conversions    */
1776   __OM  uint32_t  TASKS_CALIBRATEOFFSET;        /*!< (@ 0x0000000C) Starts offset auto-calibration                             */
1777   __IM  uint32_t  RESERVED[60];
1778   __IOM uint32_t  EVENTS_STARTED;               /*!< (@ 0x00000100) The SAADC has started                                      */
1779   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x00000104) The SAADC has filled up the result buffer                  */
1780   __IOM uint32_t  EVENTS_DONE;                  /*!< (@ 0x00000108) A conversion task has been completed. Depending
1781                                                                     on the configuration, multiple conversions
1782                                                                     might be needed for a result to be transferred
1783                                                                     to RAM.                                                    */
1784   __IOM uint32_t  EVENTS_RESULTDONE;            /*!< (@ 0x0000010C) Result ready for transfer to RAM                           */
1785   __IOM uint32_t  EVENTS_CALIBRATEDONE;         /*!< (@ 0x00000110) Calibration is complete                                    */
1786   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000114) The SAADC has stopped                                      */
1787   __IOM SAADC_EVENTS_CH_Type EVENTS_CH[8];      /*!< (@ 0x00000118) Peripheral events.                                         */
1788   __IM  uint32_t  RESERVED1[106];
1789   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
1790   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1791   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1792   __IM  uint32_t  RESERVED2[61];
1793   __IM  uint32_t  STATUS;                       /*!< (@ 0x00000400) Status                                                     */
1794   __IM  uint32_t  RESERVED3[63];
1795   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable or disable SAADC                                    */
1796   __IM  uint32_t  RESERVED4[3];
1797   __IOM SAADC_CH_Type CH[8];                    /*!< (@ 0x00000510) Unspecified                                                */
1798   __IM  uint32_t  RESERVED5[24];
1799   __IOM uint32_t  RESOLUTION;                   /*!< (@ 0x000005F0) Resolution configuration                                   */
1800   __IOM uint32_t  OVERSAMPLE;                   /*!< (@ 0x000005F4) Oversampling configuration. The RESOLUTION is
1801                                                                     applied before averaging, thus for high
1802                                                                     OVERSAMPLE a higher RESOLUTION should be
1803                                                                     used.                                                      */
1804   __IOM uint32_t  SAMPLERATE;                   /*!< (@ 0x000005F8) Controls normal or continuous sample rate                  */
1805   __IM  uint32_t  RESERVED6[12];
1806   __IOM SAADC_RESULT_Type RESULT;               /*!< (@ 0x0000062C) RESULT EasyDMA channel                                     */
1807 } NRF_SAADC_Type;                               /*!< Size = 1592 (0x638)                                                       */
1808 
1809 
1810 
1811 /* =========================================================================================================================== */
1812 /* ================                                          TIMER0                                           ================ */
1813 /* =========================================================================================================================== */
1814 
1815 
1816 /**
1817   * @brief Timer/Counter 0 (TIMER0)
1818   */
1819 
1820 typedef struct {                                /*!< (@ 0x40008000) TIMER0 Structure                                           */
1821   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start Timer                                                */
1822   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stop Timer                                                 */
1823   __OM  uint32_t  TASKS_COUNT;                  /*!< (@ 0x00000008) Increment Timer (Counter mode only)                        */
1824   __OM  uint32_t  TASKS_CLEAR;                  /*!< (@ 0x0000000C) Clear time                                                 */
1825   __OM  uint32_t  TASKS_SHUTDOWN;               /*!< (@ 0x00000010) Deprecated register - Shut down timer                      */
1826   __IM  uint32_t  RESERVED[11];
1827   __OM  uint32_t  TASKS_CAPTURE[6];             /*!< (@ 0x00000040) Description collection: Capture Timer value to
1828                                                                     CC[n] register                                             */
1829   __IM  uint32_t  RESERVED1[58];
1830   __IOM uint32_t  EVENTS_COMPARE[6];            /*!< (@ 0x00000140) Description collection: Compare event on CC[n]
1831                                                                     match                                                      */
1832   __IM  uint32_t  RESERVED2[42];
1833   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1834   __IM  uint32_t  RESERVED3[64];
1835   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1836   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1837   __IM  uint32_t  RESERVED4[126];
1838   __IOM uint32_t  MODE;                         /*!< (@ 0x00000504) Timer mode selection                                       */
1839   __IOM uint32_t  BITMODE;                      /*!< (@ 0x00000508) Configure the number of bits used by the TIMER             */
1840   __IM  uint32_t  RESERVED5;
1841   __IOM uint32_t  PRESCALER;                    /*!< (@ 0x00000510) Timer prescaler register                                   */
1842   __IM  uint32_t  RESERVED6[11];
1843   __IOM uint32_t  CC[6];                        /*!< (@ 0x00000540) Description collection: Capture/Compare register
1844                                                                     n                                                          */
1845 } NRF_TIMER_Type;                               /*!< Size = 1368 (0x558)                                                       */
1846 
1847 
1848 
1849 /* =========================================================================================================================== */
1850 /* ================                                           RTC0                                            ================ */
1851 /* =========================================================================================================================== */
1852 
1853 
1854 /**
1855   * @brief Real time counter 0 (RTC0)
1856   */
1857 
1858 typedef struct {                                /*!< (@ 0x4000B000) RTC0 Structure                                             */
1859   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start RTC COUNTER                                          */
1860   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stop RTC COUNTER                                           */
1861   __OM  uint32_t  TASKS_CLEAR;                  /*!< (@ 0x00000008) Clear RTC COUNTER                                          */
1862   __OM  uint32_t  TASKS_TRIGOVRFLW;             /*!< (@ 0x0000000C) Set COUNTER to 0xFFFFF0                                    */
1863   __IM  uint32_t  RESERVED[60];
1864   __IOM uint32_t  EVENTS_TICK;                  /*!< (@ 0x00000100) Event on COUNTER increment                                 */
1865   __IOM uint32_t  EVENTS_OVRFLW;                /*!< (@ 0x00000104) Event on COUNTER overflow                                  */
1866   __IM  uint32_t  RESERVED1[14];
1867   __IOM uint32_t  EVENTS_COMPARE[4];            /*!< (@ 0x00000140) Description collection: Compare event on CC[n]
1868                                                                     match                                                      */
1869   __IM  uint32_t  RESERVED2[109];
1870   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1871   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1872   __IM  uint32_t  RESERVED3[13];
1873   __IOM uint32_t  EVTEN;                        /*!< (@ 0x00000340) Enable or disable event routing                            */
1874   __IOM uint32_t  EVTENSET;                     /*!< (@ 0x00000344) Enable event routing                                       */
1875   __IOM uint32_t  EVTENCLR;                     /*!< (@ 0x00000348) Disable event routing                                      */
1876   __IM  uint32_t  RESERVED4[110];
1877   __IM  uint32_t  COUNTER;                      /*!< (@ 0x00000504) Current COUNTER value                                      */
1878   __IOM uint32_t  PRESCALER;                    /*!< (@ 0x00000508) 12 bit prescaler for COUNTER frequency (32768/(PRESCALER+1)).
1879                                                                     Must be written when RTC is stopped.                       */
1880   __IM  uint32_t  RESERVED5[13];
1881   __IOM uint32_t  CC[4];                        /*!< (@ 0x00000540) Description collection: Compare register n                 */
1882 } NRF_RTC_Type;                                 /*!< Size = 1360 (0x550)                                                       */
1883 
1884 
1885 
1886 /* =========================================================================================================================== */
1887 /* ================                                           TEMP                                            ================ */
1888 /* =========================================================================================================================== */
1889 
1890 
1891 /**
1892   * @brief Temperature Sensor (TEMP)
1893   */
1894 
1895 typedef struct {                                /*!< (@ 0x4000C000) TEMP Structure                                             */
1896   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start temperature measurement                              */
1897   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stop temperature measurement                               */
1898   __IM  uint32_t  RESERVED[62];
1899   __IOM uint32_t  EVENTS_DATARDY;               /*!< (@ 0x00000100) Temperature measurement complete, data ready               */
1900   __IM  uint32_t  RESERVED1[128];
1901   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1902   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1903   __IM  uint32_t  RESERVED2[127];
1904   __IM  int32_t   TEMP;                         /*!< (@ 0x00000508) Temperature in degC (0.25deg steps)                        */
1905   __IM  uint32_t  RESERVED3[5];
1906   __IOM uint32_t  A0;                           /*!< (@ 0x00000520) Slope of first piecewise linear function                   */
1907   __IOM uint32_t  A1;                           /*!< (@ 0x00000524) Slope of second piecewise linear function                  */
1908   __IOM uint32_t  A2;                           /*!< (@ 0x00000528) Slope of third piecewise linear function                   */
1909   __IOM uint32_t  A3;                           /*!< (@ 0x0000052C) Slope of fourth piecewise linear function                  */
1910   __IOM uint32_t  A4;                           /*!< (@ 0x00000530) Slope of fifth piecewise linear function                   */
1911   __IOM uint32_t  A5;                           /*!< (@ 0x00000534) Slope of sixth piecewise linear function                   */
1912   __IM  uint32_t  RESERVED4[2];
1913   __IOM uint32_t  B0;                           /*!< (@ 0x00000540) y-intercept of first piecewise linear function             */
1914   __IOM uint32_t  B1;                           /*!< (@ 0x00000544) y-intercept of second piecewise linear function            */
1915   __IOM uint32_t  B2;                           /*!< (@ 0x00000548) y-intercept of third piecewise linear function             */
1916   __IOM uint32_t  B3;                           /*!< (@ 0x0000054C) y-intercept of fourth piecewise linear function            */
1917   __IOM uint32_t  B4;                           /*!< (@ 0x00000550) y-intercept of fifth piecewise linear function             */
1918   __IOM uint32_t  B5;                           /*!< (@ 0x00000554) y-intercept of sixth piecewise linear function             */
1919   __IM  uint32_t  RESERVED5[2];
1920   __IOM uint32_t  T0;                           /*!< (@ 0x00000560) End point of first piecewise linear function               */
1921   __IOM uint32_t  T1;                           /*!< (@ 0x00000564) End point of second piecewise linear function              */
1922   __IOM uint32_t  T2;                           /*!< (@ 0x00000568) End point of third piecewise linear function               */
1923   __IOM uint32_t  T3;                           /*!< (@ 0x0000056C) End point of fourth piecewise linear function              */
1924   __IOM uint32_t  T4;                           /*!< (@ 0x00000570) End point of fifth piecewise linear function               */
1925 } NRF_TEMP_Type;                                /*!< Size = 1396 (0x574)                                                       */
1926 
1927 
1928 
1929 /* =========================================================================================================================== */
1930 /* ================                                            RNG                                            ================ */
1931 /* =========================================================================================================================== */
1932 
1933 
1934 /**
1935   * @brief Random Number Generator (RNG)
1936   */
1937 
1938 typedef struct {                                /*!< (@ 0x4000D000) RNG Structure                                              */
1939   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Task starting the random number generator                  */
1940   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Task stopping the random number generator                  */
1941   __IM  uint32_t  RESERVED[62];
1942   __IOM uint32_t  EVENTS_VALRDY;                /*!< (@ 0x00000100) Event being generated for every new random number
1943                                                                     written to the VALUE register                              */
1944   __IM  uint32_t  RESERVED1[63];
1945   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
1946   __IM  uint32_t  RESERVED2[64];
1947   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1948   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1949   __IM  uint32_t  RESERVED3[126];
1950   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000504) Configuration register                                     */
1951   __IM  uint32_t  VALUE;                        /*!< (@ 0x00000508) Output random number                                       */
1952 } NRF_RNG_Type;                                 /*!< Size = 1292 (0x50c)                                                       */
1953 
1954 
1955 
1956 /* =========================================================================================================================== */
1957 /* ================                                            ECB                                            ================ */
1958 /* =========================================================================================================================== */
1959 
1960 
1961 /**
1962   * @brief AES ECB Mode Encryption (ECB)
1963   */
1964 
1965 typedef struct {                                /*!< (@ 0x4000E000) ECB Structure                                              */
1966   __OM  uint32_t  TASKS_STARTECB;               /*!< (@ 0x00000000) Start ECB block encrypt                                    */
1967   __OM  uint32_t  TASKS_STOPECB;                /*!< (@ 0x00000004) Abort a possible executing ECB operation                   */
1968   __IM  uint32_t  RESERVED[62];
1969   __IOM uint32_t  EVENTS_ENDECB;                /*!< (@ 0x00000100) ECB block encrypt complete                                 */
1970   __IOM uint32_t  EVENTS_ERRORECB;              /*!< (@ 0x00000104) ECB block encrypt aborted because of a STOPECB
1971                                                                     task or due to an error                                    */
1972   __IM  uint32_t  RESERVED1[127];
1973   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
1974   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
1975   __IM  uint32_t  RESERVED2[126];
1976   __IOM uint32_t  ECBDATAPTR;                   /*!< (@ 0x00000504) ECB block encrypt memory pointers                          */
1977 } NRF_ECB_Type;                                 /*!< Size = 1288 (0x508)                                                       */
1978 
1979 
1980 
1981 /* =========================================================================================================================== */
1982 /* ================                                            AAR                                            ================ */
1983 /* =========================================================================================================================== */
1984 
1985 
1986 /**
1987   * @brief Accelerated Address Resolver (AAR)
1988   */
1989 
1990 typedef struct {                                /*!< (@ 0x4000F000) AAR Structure                                              */
1991   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start resolving addresses based on IRKs specified
1992                                                                     in the IRK data structure                                  */
1993   __IM  uint32_t  RESERVED;
1994   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000008) Stop resolving addresses                                   */
1995   __IM  uint32_t  RESERVED1[61];
1996   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x00000100) Address resolution procedure complete                      */
1997   __IOM uint32_t  EVENTS_RESOLVED;              /*!< (@ 0x00000104) Address resolved                                           */
1998   __IOM uint32_t  EVENTS_NOTRESOLVED;           /*!< (@ 0x00000108) Address not resolved                                       */
1999   __IM  uint32_t  RESERVED2[126];
2000   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2001   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2002   __IM  uint32_t  RESERVED3[61];
2003   __IM  uint32_t  STATUS;                       /*!< (@ 0x00000400) Resolution status                                          */
2004   __IM  uint32_t  RESERVED4[63];
2005   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable AAR                                                 */
2006   __IOM uint32_t  NIRK;                         /*!< (@ 0x00000504) Number of IRKs                                             */
2007   __IOM uint32_t  IRKPTR;                       /*!< (@ 0x00000508) Pointer to IRK data structure                              */
2008   __IM  uint32_t  RESERVED5;
2009   __IOM uint32_t  ADDRPTR;                      /*!< (@ 0x00000510) Pointer to the resolvable address                          */
2010   __IOM uint32_t  SCRATCHPTR;                   /*!< (@ 0x00000514) Pointer to data area used for temporary storage            */
2011 } NRF_AAR_Type;                                 /*!< Size = 1304 (0x518)                                                       */
2012 
2013 
2014 
2015 /* =========================================================================================================================== */
2016 /* ================                                            CCM                                            ================ */
2017 /* =========================================================================================================================== */
2018 
2019 
2020 /**
2021   * @brief AES CCM mode encryption (CCM)
2022   */
2023 
2024 typedef struct {                                /*!< (@ 0x4000F000) CCM Structure                                              */
2025   __OM  uint32_t  TASKS_KSGEN;                  /*!< (@ 0x00000000) Start generation of keystream. This operation
2026                                                                     will stop by itself when completed.                        */
2027   __OM  uint32_t  TASKS_CRYPT;                  /*!< (@ 0x00000004) Start encryption/decryption. This operation will
2028                                                                     stop by itself when completed.                             */
2029   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000008) Stop encryption/decryption                                 */
2030   __OM  uint32_t  TASKS_RATEOVERRIDE;           /*!< (@ 0x0000000C) Override DATARATE setting in MODE register with
2031                                                                     the contents of the RATEOVERRIDE register
2032                                                                     for any ongoing encryption/decryption                      */
2033   __IM  uint32_t  RESERVED[60];
2034   __IOM uint32_t  EVENTS_ENDKSGEN;              /*!< (@ 0x00000100) Keystream generation complete                              */
2035   __IOM uint32_t  EVENTS_ENDCRYPT;              /*!< (@ 0x00000104) Encrypt/decrypt complete                                   */
2036   __IOM uint32_t  EVENTS_ERROR;                 /*!< (@ 0x00000108) Deprecated register - CCM error event                      */
2037   __IM  uint32_t  RESERVED1[61];
2038   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
2039   __IM  uint32_t  RESERVED2[64];
2040   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2041   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2042   __IM  uint32_t  RESERVED3[61];
2043   __IM  uint32_t  MICSTATUS;                    /*!< (@ 0x00000400) MIC check result                                           */
2044   __IM  uint32_t  RESERVED4[63];
2045   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable                                                     */
2046   __IOM uint32_t  MODE;                         /*!< (@ 0x00000504) Operation mode                                             */
2047   __IOM uint32_t  CNFPTR;                       /*!< (@ 0x00000508) Pointer to data structure holding the AES key
2048                                                                     and the NONCE vector                                       */
2049   __IOM uint32_t  INPTR;                        /*!< (@ 0x0000050C) Input pointer                                              */
2050   __IOM uint32_t  OUTPTR;                       /*!< (@ 0x00000510) Output pointer                                             */
2051   __IOM uint32_t  SCRATCHPTR;                   /*!< (@ 0x00000514) Pointer to data area used for temporary storage            */
2052   __IOM uint32_t  MAXPACKETSIZE;                /*!< (@ 0x00000518) Length of keystream generated when MODE.LENGTH
2053                                                                     = Extended                                                 */
2054   __IOM uint32_t  RATEOVERRIDE;                 /*!< (@ 0x0000051C) Data rate override setting.                                */
2055 } NRF_CCM_Type;                                 /*!< Size = 1312 (0x520)                                                       */
2056 
2057 
2058 
2059 /* =========================================================================================================================== */
2060 /* ================                                            WDT                                            ================ */
2061 /* =========================================================================================================================== */
2062 
2063 
2064 /**
2065   * @brief Watchdog Timer (WDT)
2066   */
2067 
2068 typedef struct {                                /*!< (@ 0x40010000) WDT Structure                                              */
2069   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start the watchdog                                         */
2070   __IM  uint32_t  RESERVED[63];
2071   __IOM uint32_t  EVENTS_TIMEOUT;               /*!< (@ 0x00000100) Watchdog timeout                                           */
2072   __IM  uint32_t  RESERVED1[128];
2073   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2074   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2075   __IM  uint32_t  RESERVED2[61];
2076   __IM  uint32_t  RUNSTATUS;                    /*!< (@ 0x00000400) Run status                                                 */
2077   __IM  uint32_t  REQSTATUS;                    /*!< (@ 0x00000404) Request status                                             */
2078   __IM  uint32_t  RESERVED3[63];
2079   __IOM uint32_t  CRV;                          /*!< (@ 0x00000504) Counter reload value                                       */
2080   __IOM uint32_t  RREN;                         /*!< (@ 0x00000508) Enable register for reload request registers               */
2081   __IOM uint32_t  CONFIG;                       /*!< (@ 0x0000050C) Configuration register                                     */
2082   __IM  uint32_t  RESERVED4[60];
2083   __OM  uint32_t  RR[8];                        /*!< (@ 0x00000600) Description collection: Reload request n                   */
2084 } NRF_WDT_Type;                                 /*!< Size = 1568 (0x620)                                                       */
2085 
2086 
2087 
2088 /* =========================================================================================================================== */
2089 /* ================                                           QDEC                                            ================ */
2090 /* =========================================================================================================================== */
2091 
2092 
2093 /**
2094   * @brief Quadrature Decoder (QDEC)
2095   */
2096 
2097 typedef struct {                                /*!< (@ 0x40012000) QDEC Structure                                             */
2098   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Task starting the quadrature decoder                       */
2099   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Task stopping the quadrature decoder                       */
2100   __OM  uint32_t  TASKS_READCLRACC;             /*!< (@ 0x00000008) Read and clear ACC and ACCDBL                              */
2101   __OM  uint32_t  TASKS_RDCLRACC;               /*!< (@ 0x0000000C) Read and clear ACC                                         */
2102   __OM  uint32_t  TASKS_RDCLRDBL;               /*!< (@ 0x00000010) Read and clear ACCDBL                                      */
2103   __IM  uint32_t  RESERVED[59];
2104   __IOM uint32_t  EVENTS_SAMPLERDY;             /*!< (@ 0x00000100) Event being generated for every new sample value
2105                                                                     written to the SAMPLE register                             */
2106   __IOM uint32_t  EVENTS_REPORTRDY;             /*!< (@ 0x00000104) Non-null report ready                                      */
2107   __IOM uint32_t  EVENTS_ACCOF;                 /*!< (@ 0x00000108) ACC or ACCDBL register overflow                            */
2108   __IOM uint32_t  EVENTS_DBLRDY;                /*!< (@ 0x0000010C) Double displacement(s) detected                            */
2109   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000110) QDEC has been stopped                                      */
2110   __IM  uint32_t  RESERVED1[59];
2111   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
2112   __IM  uint32_t  RESERVED2[64];
2113   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2114   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2115   __IM  uint32_t  RESERVED3[125];
2116   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable the quadrature decoder                              */
2117   __IOM uint32_t  LEDPOL;                       /*!< (@ 0x00000504) LED output pin polarity                                    */
2118   __IOM uint32_t  SAMPLEPER;                    /*!< (@ 0x00000508) Sample period                                              */
2119   __IM  int32_t   SAMPLE;                       /*!< (@ 0x0000050C) Motion sample value                                        */
2120   __IOM uint32_t  REPORTPER;                    /*!< (@ 0x00000510) Number of samples to be taken before REPORTRDY
2121                                                                     and DBLRDY events can be generated                         */
2122   __IM  int32_t   ACC;                          /*!< (@ 0x00000514) Register accumulating the valid transitions                */
2123   __IM  int32_t   ACCREAD;                      /*!< (@ 0x00000518) Snapshot of the ACC register, updated by the
2124                                                                     READCLRACC or RDCLRACC task                                */
2125   __IOM QDEC_PSEL_Type PSEL;                    /*!< (@ 0x0000051C) Unspecified                                                */
2126   __IOM uint32_t  DBFEN;                        /*!< (@ 0x00000528) Enable input debounce filters                              */
2127   __IM  uint32_t  RESERVED4[5];
2128   __IOM uint32_t  LEDPRE;                       /*!< (@ 0x00000540) Time period the LED is switched ON prior to sampling       */
2129   __IM  uint32_t  ACCDBL;                       /*!< (@ 0x00000544) Register accumulating the number of detected
2130                                                                     double transitions                                         */
2131   __IM  uint32_t  ACCDBLREAD;                   /*!< (@ 0x00000548) Snapshot of the ACCDBL, updated by the READCLRACC
2132                                                                     or RDCLRDBL task                                           */
2133 } NRF_QDEC_Type;                                /*!< Size = 1356 (0x54c)                                                       */
2134 
2135 
2136 
2137 /* =========================================================================================================================== */
2138 /* ================                                           COMP                                            ================ */
2139 /* =========================================================================================================================== */
2140 
2141 
2142 /**
2143   * @brief Comparator (COMP)
2144   */
2145 
2146 typedef struct {                                /*!< (@ 0x40013000) COMP Structure                                             */
2147   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start comparator                                           */
2148   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stop comparator                                            */
2149   __OM  uint32_t  TASKS_SAMPLE;                 /*!< (@ 0x00000008) Sample comparator value                                    */
2150   __IM  uint32_t  RESERVED[61];
2151   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000100) COMP is ready and output is valid                          */
2152   __IOM uint32_t  EVENTS_DOWN;                  /*!< (@ 0x00000104) Downward crossing                                          */
2153   __IOM uint32_t  EVENTS_UP;                    /*!< (@ 0x00000108) Upward crossing                                            */
2154   __IOM uint32_t  EVENTS_CROSS;                 /*!< (@ 0x0000010C) Downward or upward crossing                                */
2155   __IM  uint32_t  RESERVED1[60];
2156   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
2157   __IM  uint32_t  RESERVED2[63];
2158   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2159   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2160   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2161   __IM  uint32_t  RESERVED3[61];
2162   __IM  uint32_t  RESULT;                       /*!< (@ 0x00000400) Compare result                                             */
2163   __IM  uint32_t  RESERVED4[63];
2164   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) COMP enable                                                */
2165   __IOM uint32_t  PSEL;                         /*!< (@ 0x00000504) Pin select                                                 */
2166   __IOM uint32_t  REFSEL;                       /*!< (@ 0x00000508) Reference source select for single-ended mode              */
2167   __IOM uint32_t  EXTREFSEL;                    /*!< (@ 0x0000050C) External reference select                                  */
2168   __IM  uint32_t  RESERVED5[8];
2169   __IOM uint32_t  TH;                           /*!< (@ 0x00000530) Threshold configuration for hysteresis unit                */
2170   __IOM uint32_t  MODE;                         /*!< (@ 0x00000534) Mode configuration                                         */
2171   __IOM uint32_t  HYST;                         /*!< (@ 0x00000538) Comparator hysteresis enable                               */
2172 } NRF_COMP_Type;                                /*!< Size = 1340 (0x53c)                                                       */
2173 
2174 
2175 
2176 /* =========================================================================================================================== */
2177 /* ================                                          LPCOMP                                           ================ */
2178 /* =========================================================================================================================== */
2179 
2180 
2181 /**
2182   * @brief Low-power comparator (LPCOMP)
2183   */
2184 
2185 typedef struct {                                /*!< (@ 0x40013000) LPCOMP Structure                                           */
2186   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start comparator                                           */
2187   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stop comparator                                            */
2188   __OM  uint32_t  TASKS_SAMPLE;                 /*!< (@ 0x00000008) Sample comparator value                                    */
2189   __IM  uint32_t  RESERVED[61];
2190   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000100) LPCOMP is ready and output is valid                        */
2191   __IOM uint32_t  EVENTS_DOWN;                  /*!< (@ 0x00000104) Downward crossing                                          */
2192   __IOM uint32_t  EVENTS_UP;                    /*!< (@ 0x00000108) Upward crossing                                            */
2193   __IOM uint32_t  EVENTS_CROSS;                 /*!< (@ 0x0000010C) Downward or upward crossing                                */
2194   __IM  uint32_t  RESERVED1[60];
2195   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
2196   __IM  uint32_t  RESERVED2[64];
2197   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2198   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2199   __IM  uint32_t  RESERVED3[61];
2200   __IM  uint32_t  RESULT;                       /*!< (@ 0x00000400) Compare result                                             */
2201   __IM  uint32_t  RESERVED4[63];
2202   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable LPCOMP                                              */
2203   __IOM uint32_t  PSEL;                         /*!< (@ 0x00000504) Input pin select                                           */
2204   __IOM uint32_t  REFSEL;                       /*!< (@ 0x00000508) Reference select                                           */
2205   __IOM uint32_t  EXTREFSEL;                    /*!< (@ 0x0000050C) External reference select                                  */
2206   __IM  uint32_t  RESERVED5[4];
2207   __IOM uint32_t  ANADETECT;                    /*!< (@ 0x00000520) Analog detect configuration                                */
2208   __IM  uint32_t  RESERVED6[5];
2209   __IOM uint32_t  HYST;                         /*!< (@ 0x00000538) Comparator hysteresis enable                               */
2210 } NRF_LPCOMP_Type;                              /*!< Size = 1340 (0x53c)                                                       */
2211 
2212 
2213 
2214 /* =========================================================================================================================== */
2215 /* ================                                           EGU0                                            ================ */
2216 /* =========================================================================================================================== */
2217 
2218 
2219 /**
2220   * @brief Event generator unit 0 (EGU0)
2221   */
2222 
2223 typedef struct {                                /*!< (@ 0x40014000) EGU0 Structure                                             */
2224   __OM  uint32_t  TASKS_TRIGGER[16];            /*!< (@ 0x00000000) Description collection: Trigger n for triggering
2225                                                                     the corresponding TRIGGERED[n] event                       */
2226   __IM  uint32_t  RESERVED[48];
2227   __IOM uint32_t  EVENTS_TRIGGERED[16];         /*!< (@ 0x00000100) Description collection: Event number n generated
2228                                                                     by triggering the corresponding TRIGGER[n]
2229                                                                     task                                                       */
2230   __IM  uint32_t  RESERVED1[112];
2231   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2232   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2233   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2234 } NRF_EGU_Type;                                 /*!< Size = 780 (0x30c)                                                        */
2235 
2236 
2237 
2238 /* =========================================================================================================================== */
2239 /* ================                                           SWI0                                            ================ */
2240 /* =========================================================================================================================== */
2241 
2242 
2243 /**
2244   * @brief Software interrupt 0 (SWI0)
2245   */
2246 
2247 typedef struct {                                /*!< (@ 0x40014000) SWI0 Structure                                             */
2248   __IM  uint32_t  UNUSED;                       /*!< (@ 0x00000000) Unused.                                                    */
2249 } NRF_SWI_Type;                                 /*!< Size = 4 (0x4)                                                            */
2250 
2251 
2252 
2253 /* =========================================================================================================================== */
2254 /* ================                                           PWM0                                            ================ */
2255 /* =========================================================================================================================== */
2256 
2257 
2258 /**
2259   * @brief Pulse width modulation unit 0 (PWM0)
2260   */
2261 
2262 typedef struct {                                /*!< (@ 0x4001C000) PWM0 Structure                                             */
2263   __IM  uint32_t  RESERVED;
2264   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stops PWM pulse generation on all channels at
2265                                                                     the end of current PWM period, and stops
2266                                                                     sequence playback                                          */
2267   __OM  uint32_t  TASKS_SEQSTART[2];            /*!< (@ 0x00000008) Description collection: Loads the first PWM value
2268                                                                     on all enabled channels from sequence n,
2269                                                                     and starts playing that sequence at the
2270                                                                     rate defined in SEQ[n]REFRESH and/or DECODER.MODE.
2271                                                                     Causes PWM generation to start if not running.             */
2272   __OM  uint32_t  TASKS_NEXTSTEP;               /*!< (@ 0x00000010) Steps by one value in the current sequence on
2273                                                                     all enabled channels if DECODER.MODE=NextStep.
2274                                                                     Does not cause PWM generation to start if
2275                                                                     not running.                                               */
2276   __IM  uint32_t  RESERVED1[60];
2277   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) Response to STOP task, emitted when PWM pulses
2278                                                                     are no longer generated                                    */
2279   __IOM uint32_t  EVENTS_SEQSTARTED[2];         /*!< (@ 0x00000108) Description collection: First PWM period started
2280                                                                     on sequence n                                              */
2281   __IOM uint32_t  EVENTS_SEQEND[2];             /*!< (@ 0x00000110) Description collection: Emitted at end of every
2282                                                                     sequence n, when last value from RAM has
2283                                                                     been applied to wave counter                               */
2284   __IOM uint32_t  EVENTS_PWMPERIODEND;          /*!< (@ 0x00000118) Emitted at the end of each PWM period                      */
2285   __IOM uint32_t  EVENTS_LOOPSDONE;             /*!< (@ 0x0000011C) Concatenated sequences have been played the amount
2286                                                                     of times defined in LOOP.CNT                               */
2287   __IM  uint32_t  RESERVED2[56];
2288   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
2289   __IM  uint32_t  RESERVED3[63];
2290   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2291   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2292   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2293   __IM  uint32_t  RESERVED4[125];
2294   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) PWM module enable register                                 */
2295   __IOM uint32_t  MODE;                         /*!< (@ 0x00000504) Selects operating mode of the wave counter                 */
2296   __IOM uint32_t  COUNTERTOP;                   /*!< (@ 0x00000508) Value up to which the pulse generator counter
2297                                                                     counts                                                     */
2298   __IOM uint32_t  PRESCALER;                    /*!< (@ 0x0000050C) Configuration for PWM_CLK                                  */
2299   __IOM uint32_t  DECODER;                      /*!< (@ 0x00000510) Configuration of the decoder                               */
2300   __IOM uint32_t  LOOP;                         /*!< (@ 0x00000514) Number of playbacks of a loop                              */
2301   __IM  uint32_t  RESERVED5[2];
2302   __IOM PWM_SEQ_Type SEQ[2];                    /*!< (@ 0x00000520) Unspecified                                                */
2303   __IOM PWM_PSEL_Type PSEL;                     /*!< (@ 0x00000560) Unspecified                                                */
2304 } NRF_PWM_Type;                                 /*!< Size = 1392 (0x570)                                                       */
2305 
2306 
2307 
2308 /* =========================================================================================================================== */
2309 /* ================                                            PDM                                            ================ */
2310 /* =========================================================================================================================== */
2311 
2312 
2313 /**
2314   * @brief Pulse Density Modulation (Digital Microphone) Interface (PDM)
2315   */
2316 
2317 typedef struct {                                /*!< (@ 0x4001D000) PDM Structure                                              */
2318   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Starts continuous PDM transfer                             */
2319   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stops PDM transfer                                         */
2320   __IM  uint32_t  RESERVED[62];
2321   __IOM uint32_t  EVENTS_STARTED;               /*!< (@ 0x00000100) PDM transfer has started                                   */
2322   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000104) PDM transfer has finished                                  */
2323   __IOM uint32_t  EVENTS_END;                   /*!< (@ 0x00000108) The PDM has written the last sample specified
2324                                                                     by SAMPLE.MAXCNT (or the last sample after
2325                                                                     a STOP task has been received) to Data RAM                 */
2326   __IM  uint32_t  RESERVED1[125];
2327   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2328   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2329   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2330   __IM  uint32_t  RESERVED2[125];
2331   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) PDM module enable register                                 */
2332   __IOM uint32_t  PDMCLKCTRL;                   /*!< (@ 0x00000504) PDM clock generator control                                */
2333   __IOM uint32_t  MODE;                         /*!< (@ 0x00000508) Defines the routing of the connected PDM microphones'
2334                                                                     signals                                                    */
2335   __IM  uint32_t  RESERVED3[3];
2336   __IOM uint32_t  GAINL;                        /*!< (@ 0x00000518) Left output gain adjustment                                */
2337   __IOM uint32_t  GAINR;                        /*!< (@ 0x0000051C) Right output gain adjustment                               */
2338   __IOM uint32_t  RATIO;                        /*!< (@ 0x00000520) Selects the ratio between PDM_CLK and output
2339                                                                     sample rate. Change PDMCLKCTRL accordingly.                */
2340   __IM  uint32_t  RESERVED4[7];
2341   __IOM PDM_PSEL_Type PSEL;                     /*!< (@ 0x00000540) Unspecified                                                */
2342   __IM  uint32_t  RESERVED5[6];
2343   __IOM PDM_SAMPLE_Type SAMPLE;                 /*!< (@ 0x00000560) Unspecified                                                */
2344 } NRF_PDM_Type;                                 /*!< Size = 1384 (0x568)                                                       */
2345 
2346 
2347 
2348 /* =========================================================================================================================== */
2349 /* ================                                            ACL                                            ================ */
2350 /* =========================================================================================================================== */
2351 
2352 
2353 /**
2354   * @brief Access control lists (ACL)
2355   */
2356 
2357 typedef struct {                                /*!< (@ 0x4001E000) ACL Structure                                              */
2358   __IM  uint32_t  RESERVED[512];
2359   __IOM ACL_ACL_Type ACL[8];                    /*!< (@ 0x00000800) Unspecified                                                */
2360 } NRF_ACL_Type;                                 /*!< Size = 2176 (0x880)                                                       */
2361 
2362 
2363 
2364 /* =========================================================================================================================== */
2365 /* ================                                           NVMC                                            ================ */
2366 /* =========================================================================================================================== */
2367 
2368 
2369 /**
2370   * @brief Non Volatile Memory Controller (NVMC)
2371   */
2372 
2373 typedef struct {                                /*!< (@ 0x4001E000) NVMC Structure                                             */
2374   __IM  uint32_t  RESERVED[256];
2375   __IM  uint32_t  READY;                        /*!< (@ 0x00000400) Ready flag                                                 */
2376   __IM  uint32_t  RESERVED1;
2377   __IM  uint32_t  READYNEXT;                    /*!< (@ 0x00000408) Ready flag                                                 */
2378   __IM  uint32_t  RESERVED2[62];
2379   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000504) Configuration register                                     */
2380 
2381   union {
2382     __OM  uint32_t ERASEPAGE;                   /*!< (@ 0x00000508) Register for erasing a page in code area                   */
2383     __OM  uint32_t ERASEPCR1;                   /*!< (@ 0x00000508) Deprecated register - Register for erasing a
2384                                                                     page in code area, equivalent to ERASEPAGE                 */
2385   };
2386   __OM  uint32_t  ERASEALL;                     /*!< (@ 0x0000050C) Register for erasing all non-volatile user memory          */
2387   __OM  uint32_t  ERASEPCR0;                    /*!< (@ 0x00000510) Deprecated register - Register for erasing a
2388                                                                     page in code area, equivalent to ERASEPAGE                 */
2389   __OM  uint32_t  ERASEUICR;                    /*!< (@ 0x00000514) Register for erasing user information configuration
2390                                                                     registers                                                  */
2391   __OM  uint32_t  ERASEPAGEPARTIAL;             /*!< (@ 0x00000518) Register for partial erase of a page in code
2392                                                                     area                                                       */
2393   __IOM uint32_t  ERASEPAGEPARTIALCFG;          /*!< (@ 0x0000051C) Register for partial erase configuration                   */
2394   __IM  uint32_t  RESERVED3[8];
2395   __IOM uint32_t  ICACHECNF;                    /*!< (@ 0x00000540) I-code cache configuration register                        */
2396   __IM  uint32_t  RESERVED4;
2397   __IOM uint32_t  IHIT;                         /*!< (@ 0x00000548) I-code cache hit counter                                   */
2398   __IOM uint32_t  IMISS;                        /*!< (@ 0x0000054C) I-code cache miss counter                                  */
2399 } NRF_NVMC_Type;                                /*!< Size = 1360 (0x550)                                                       */
2400 
2401 
2402 
2403 /* =========================================================================================================================== */
2404 /* ================                                            PPI                                            ================ */
2405 /* =========================================================================================================================== */
2406 
2407 
2408 /**
2409   * @brief Programmable Peripheral Interconnect (PPI)
2410   */
2411 
2412 typedef struct {                                /*!< (@ 0x4001F000) PPI Structure                                              */
2413   __OM  PPI_TASKS_CHG_Type TASKS_CHG[6];        /*!< (@ 0x00000000) Channel group tasks                                        */
2414   __IM  uint32_t  RESERVED[308];
2415   __IOM uint32_t  CHEN;                         /*!< (@ 0x00000500) Channel enable register                                    */
2416   __IOM uint32_t  CHENSET;                      /*!< (@ 0x00000504) Channel enable set register                                */
2417   __IOM uint32_t  CHENCLR;                      /*!< (@ 0x00000508) Channel enable clear register                              */
2418   __IM  uint32_t  RESERVED1;
2419   __IOM PPI_CH_Type CH[20];                     /*!< (@ 0x00000510) PPI Channel                                                */
2420   __IM  uint32_t  RESERVED2[148];
2421   __IOM uint32_t  CHG[6];                       /*!< (@ 0x00000800) Description collection: Channel group n                    */
2422   __IM  uint32_t  RESERVED3[62];
2423   __IOM PPI_FORK_Type FORK[32];                 /*!< (@ 0x00000910) Fork                                                       */
2424 } NRF_PPI_Type;                                 /*!< Size = 2448 (0x990)                                                       */
2425 
2426 
2427 
2428 /* =========================================================================================================================== */
2429 /* ================                                            MWU                                            ================ */
2430 /* =========================================================================================================================== */
2431 
2432 
2433 /**
2434   * @brief Memory Watch Unit (MWU)
2435   */
2436 
2437 typedef struct {                                /*!< (@ 0x40020000) MWU Structure                                              */
2438   __IM  uint32_t  RESERVED[64];
2439   __IOM MWU_EVENTS_REGION_Type EVENTS_REGION[4];/*!< (@ 0x00000100) Peripheral events.                                         */
2440   __IM  uint32_t  RESERVED1[16];
2441   __IOM MWU_EVENTS_PREGION_Type EVENTS_PREGION[2];/*!< (@ 0x00000160) Peripheral events.                                       */
2442   __IM  uint32_t  RESERVED2[100];
2443   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2444   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2445   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2446   __IM  uint32_t  RESERVED3[5];
2447   __IOM uint32_t  NMIEN;                        /*!< (@ 0x00000320) Enable or disable interrupt                                */
2448   __IOM uint32_t  NMIENSET;                     /*!< (@ 0x00000324) Enable interrupt                                           */
2449   __IOM uint32_t  NMIENCLR;                     /*!< (@ 0x00000328) Disable interrupt                                          */
2450   __IM  uint32_t  RESERVED4[53];
2451   __IOM MWU_PERREGION_Type PERREGION[2];        /*!< (@ 0x00000400) Unspecified                                                */
2452   __IM  uint32_t  RESERVED5[64];
2453   __IOM uint32_t  REGIONEN;                     /*!< (@ 0x00000510) Enable/disable regions watch                               */
2454   __IOM uint32_t  REGIONENSET;                  /*!< (@ 0x00000514) Enable regions watch                                       */
2455   __IOM uint32_t  REGIONENCLR;                  /*!< (@ 0x00000518) Disable regions watch                                      */
2456   __IM  uint32_t  RESERVED6[57];
2457   __IOM MWU_REGION_Type REGION[4];              /*!< (@ 0x00000600) Unspecified                                                */
2458   __IM  uint32_t  RESERVED7[32];
2459   __IOM MWU_PREGION_Type PREGION[2];            /*!< (@ 0x000006C0) Unspecified                                                */
2460 } NRF_MWU_Type;                                 /*!< Size = 1760 (0x6e0)                                                       */
2461 
2462 
2463 
2464 /* =========================================================================================================================== */
2465 /* ================                                            I2S                                            ================ */
2466 /* =========================================================================================================================== */
2467 
2468 
2469 /**
2470   * @brief Inter-IC Sound (I2S)
2471   */
2472 
2473 typedef struct {                                /*!< (@ 0x40025000) I2S Structure                                              */
2474   __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Starts continuous I2S transfer. Also starts MCK
2475                                                                     generator when this is enabled.                            */
2476   __OM  uint32_t  TASKS_STOP;                   /*!< (@ 0x00000004) Stops I2S transfer. Also stops MCK generator.
2477                                                                     Triggering this task will cause the STOPPED
2478                                                                     event to be generated.                                     */
2479   __IM  uint32_t  RESERVED[63];
2480   __IOM uint32_t  EVENTS_RXPTRUPD;              /*!< (@ 0x00000104) The RXD.PTR register has been copied to internal
2481                                                                     double-buffers. When the I2S module is started
2482                                                                     and RX is enabled, this event will be generated
2483                                                                     for every RXTXD.MAXCNT words that are received
2484                                                                     on the SDIN pin.                                           */
2485   __IOM uint32_t  EVENTS_STOPPED;               /*!< (@ 0x00000108) I2S transfer stopped.                                      */
2486   __IM  uint32_t  RESERVED1[2];
2487   __IOM uint32_t  EVENTS_TXPTRUPD;              /*!< (@ 0x00000114) The TDX.PTR register has been copied to internal
2488                                                                     double-buffers. When the I2S module is started
2489                                                                     and TX is enabled, this event will be generated
2490                                                                     for every RXTXD.MAXCNT words that are sent
2491                                                                     on the SDOUT pin.                                          */
2492   __IM  uint32_t  RESERVED2[122];
2493   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2494   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2495   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2496   __IM  uint32_t  RESERVED3[125];
2497   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable I2S module.                                         */
2498   __IOM I2S_CONFIG_Type CONFIG;                 /*!< (@ 0x00000504) Unspecified                                                */
2499   __IM  uint32_t  RESERVED4[3];
2500   __IOM I2S_RXD_Type RXD;                       /*!< (@ 0x00000538) Unspecified                                                */
2501   __IM  uint32_t  RESERVED5;
2502   __IOM I2S_TXD_Type TXD;                       /*!< (@ 0x00000540) Unspecified                                                */
2503   __IM  uint32_t  RESERVED6[3];
2504   __IOM I2S_RXTXD_Type RXTXD;                   /*!< (@ 0x00000550) Unspecified                                                */
2505   __IM  uint32_t  RESERVED7[3];
2506   __IOM I2S_PSEL_Type PSEL;                     /*!< (@ 0x00000560) Unspecified                                                */
2507 } NRF_I2S_Type;                                 /*!< Size = 1396 (0x574)                                                       */
2508 
2509 
2510 
2511 /* =========================================================================================================================== */
2512 /* ================                                            FPU                                            ================ */
2513 /* =========================================================================================================================== */
2514 
2515 
2516 /**
2517   * @brief FPU (FPU)
2518   */
2519 
2520 typedef struct {                                /*!< (@ 0x40026000) FPU Structure                                              */
2521   __IM  uint32_t  UNUSED;                       /*!< (@ 0x00000000) Unused.                                                    */
2522 } NRF_FPU_Type;                                 /*!< Size = 4 (0x4)                                                            */
2523 
2524 
2525 
2526 /* =========================================================================================================================== */
2527 /* ================                                           USBD                                            ================ */
2528 /* =========================================================================================================================== */
2529 
2530 
2531 /**
2532   * @brief Universal serial bus device (USBD)
2533   */
2534 
2535 typedef struct {                                /*!< (@ 0x40027000) USBD Structure                                             */
2536   __IM  uint32_t  RESERVED;
2537   __OM  uint32_t  TASKS_STARTEPIN[8];           /*!< (@ 0x00000004) Description collection: Captures the EPIN[n].PTR
2538                                                                     and EPIN[n].MAXCNT registers values, and
2539                                                                     enables endpoint IN n to respond to traffic
2540                                                                     from host                                                  */
2541   __OM  uint32_t  TASKS_STARTISOIN;             /*!< (@ 0x00000024) Captures the ISOIN.PTR and ISOIN.MAXCNT registers
2542                                                                     values, and enables sending data on ISO
2543                                                                     endpoint                                                   */
2544   __OM  uint32_t  TASKS_STARTEPOUT[8];          /*!< (@ 0x00000028) Description collection: Captures the EPOUT[n].PTR
2545                                                                     and EPOUT[n].MAXCNT registers values, and
2546                                                                     enables endpoint n to respond to traffic
2547                                                                     from host                                                  */
2548   __OM  uint32_t  TASKS_STARTISOOUT;            /*!< (@ 0x00000048) Captures the ISOOUT.PTR and ISOOUT.MAXCNT registers
2549                                                                     values, and enables receiving of data on
2550                                                                     ISO endpoint                                               */
2551   __OM  uint32_t  TASKS_EP0RCVOUT;              /*!< (@ 0x0000004C) Allows OUT data stage on control endpoint 0                */
2552   __OM  uint32_t  TASKS_EP0STATUS;              /*!< (@ 0x00000050) Allows status stage on control endpoint 0                  */
2553   __OM  uint32_t  TASKS_EP0STALL;               /*!< (@ 0x00000054) Stalls data and status stage on control endpoint
2554                                                                     0                                                          */
2555   __OM  uint32_t  TASKS_DPDMDRIVE;              /*!< (@ 0x00000058) Forces D+ and D- lines into the state defined
2556                                                                     in the DPDMVALUE register                                  */
2557   __OM  uint32_t  TASKS_DPDMNODRIVE;            /*!< (@ 0x0000005C) Stops forcing D+ and D- lines into any state
2558                                                                     (USB engine takes control)                                 */
2559   __IM  uint32_t  RESERVED1[40];
2560   __IOM uint32_t  EVENTS_USBRESET;              /*!< (@ 0x00000100) Signals that a USB reset condition has been detected
2561                                                                     on USB lines                                               */
2562   __IOM uint32_t  EVENTS_STARTED;               /*!< (@ 0x00000104) Confirms that the EPIN[n].PTR and EPIN[n].MAXCNT,
2563                                                                     or EPOUT[n].PTR and EPOUT[n].MAXCNT registers
2564                                                                     have been captured on all endpoints reported
2565                                                                     in the EPSTATUS register                                   */
2566   __IOM uint32_t  EVENTS_ENDEPIN[8];            /*!< (@ 0x00000108) Description collection: The whole EPIN[n] buffer
2567                                                                     has been consumed. The buffer can be accessed
2568                                                                     safely by software.                                        */
2569   __IOM uint32_t  EVENTS_EP0DATADONE;           /*!< (@ 0x00000128) An acknowledged data transfer has taken place
2570                                                                     on the control endpoint                                    */
2571   __IOM uint32_t  EVENTS_ENDISOIN;              /*!< (@ 0x0000012C) The whole ISOIN buffer has been consumed. The
2572                                                                     buffer can be accessed safely by software.                 */
2573   __IOM uint32_t  EVENTS_ENDEPOUT[8];           /*!< (@ 0x00000130) Description collection: The whole EPOUT[n] buffer
2574                                                                     has been consumed. The buffer can be accessed
2575                                                                     safely by software.                                        */
2576   __IOM uint32_t  EVENTS_ENDISOOUT;             /*!< (@ 0x00000150) The whole ISOOUT buffer has been consumed. The
2577                                                                     buffer can be accessed safely by software.                 */
2578   __IOM uint32_t  EVENTS_SOF;                   /*!< (@ 0x00000154) Signals that a SOF (start of frame) condition
2579                                                                     has been detected on USB lines                             */
2580   __IOM uint32_t  EVENTS_USBEVENT;              /*!< (@ 0x00000158) An event or an error not covered by specific
2581                                                                     events has occurred. Check EVENTCAUSE register
2582                                                                     to find the cause.                                         */
2583   __IOM uint32_t  EVENTS_EP0SETUP;              /*!< (@ 0x0000015C) A valid SETUP token has been received (and acknowledged)
2584                                                                     on the control endpoint                                    */
2585   __IOM uint32_t  EVENTS_EPDATA;                /*!< (@ 0x00000160) A data transfer has occurred on a data endpoint,
2586                                                                     indicated by the EPDATASTATUS register                     */
2587   __IM  uint32_t  RESERVED2[39];
2588   __IOM uint32_t  SHORTS;                       /*!< (@ 0x00000200) Shortcuts between local events and tasks                   */
2589   __IM  uint32_t  RESERVED3[63];
2590   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2591   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2592   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2593   __IM  uint32_t  RESERVED4[61];
2594   __IOM uint32_t  EVENTCAUSE;                   /*!< (@ 0x00000400) Details on what caused the USBEVENT event                  */
2595   __IM  uint32_t  RESERVED5[7];
2596   __IOM USBD_HALTED_Type HALTED;                /*!< (@ 0x00000420) Unspecified                                                */
2597   __IM  uint32_t  RESERVED6;
2598   __IOM uint32_t  EPSTATUS;                     /*!< (@ 0x00000468) Provides information on which endpoint's EasyDMA
2599                                                                     registers have been captured                               */
2600   __IOM uint32_t  EPDATASTATUS;                 /*!< (@ 0x0000046C) Provides information on which endpoint(s) an
2601                                                                     acknowledged data transfer has occurred
2602                                                                     (EPDATA event)                                             */
2603   __IM  uint32_t  USBADDR;                      /*!< (@ 0x00000470) Device USB address                                         */
2604   __IM  uint32_t  RESERVED7[3];
2605   __IM  uint32_t  BMREQUESTTYPE;                /*!< (@ 0x00000480) SETUP data, byte 0, bmRequestType                          */
2606   __IM  uint32_t  BREQUEST;                     /*!< (@ 0x00000484) SETUP data, byte 1, bRequest                               */
2607   __IM  uint32_t  WVALUEL;                      /*!< (@ 0x00000488) SETUP data, byte 2, LSB of wValue                          */
2608   __IM  uint32_t  WVALUEH;                      /*!< (@ 0x0000048C) SETUP data, byte 3, MSB of wValue                          */
2609   __IM  uint32_t  WINDEXL;                      /*!< (@ 0x00000490) SETUP data, byte 4, LSB of wIndex                          */
2610   __IM  uint32_t  WINDEXH;                      /*!< (@ 0x00000494) SETUP data, byte 5, MSB of wIndex                          */
2611   __IM  uint32_t  WLENGTHL;                     /*!< (@ 0x00000498) SETUP data, byte 6, LSB of wLength                         */
2612   __IM  uint32_t  WLENGTHH;                     /*!< (@ 0x0000049C) SETUP data, byte 7, MSB of wLength                         */
2613   __IOM USBD_SIZE_Type SIZE;                    /*!< (@ 0x000004A0) Unspecified                                                */
2614   __IM  uint32_t  RESERVED8[15];
2615   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable USB                                                 */
2616   __IOM uint32_t  USBPULLUP;                    /*!< (@ 0x00000504) Control of the USB pull-up                                 */
2617   __IOM uint32_t  DPDMVALUE;                    /*!< (@ 0x00000508) State D+ and D- lines will be forced into by
2618                                                                     the DPDMDRIVE task. The DPDMNODRIVE task
2619                                                                     reverts the control of the lines to MAC
2620                                                                     IP (no forcing).                                           */
2621   __IOM uint32_t  DTOGGLE;                      /*!< (@ 0x0000050C) Data toggle control and status                             */
2622   __IOM uint32_t  EPINEN;                       /*!< (@ 0x00000510) Endpoint IN enable                                         */
2623   __IOM uint32_t  EPOUTEN;                      /*!< (@ 0x00000514) Endpoint OUT enable                                        */
2624   __OM  uint32_t  EPSTALL;                      /*!< (@ 0x00000518) STALL endpoints                                            */
2625   __IOM uint32_t  ISOSPLIT;                     /*!< (@ 0x0000051C) Controls the split of ISO buffers                          */
2626   __IM  uint32_t  FRAMECNTR;                    /*!< (@ 0x00000520) Returns the current value of the start of frame
2627                                                                     counter                                                    */
2628   __IM  uint32_t  RESERVED9[2];
2629   __IOM uint32_t  LOWPOWER;                     /*!< (@ 0x0000052C) Controls USBD peripheral low power mode during
2630                                                                     USB suspend                                                */
2631   __IOM uint32_t  ISOINCONFIG;                  /*!< (@ 0x00000530) Controls the response of the ISO IN endpoint
2632                                                                     to an IN token when no data is ready to
2633                                                                     be sent                                                    */
2634   __IM  uint32_t  RESERVED10[51];
2635   __IOM USBD_EPIN_Type EPIN[8];                 /*!< (@ 0x00000600) Unspecified                                                */
2636   __IOM USBD_ISOIN_Type ISOIN;                  /*!< (@ 0x000006A0) Unspecified                                                */
2637   __IM  uint32_t  RESERVED11[21];
2638   __IOM USBD_EPOUT_Type EPOUT[8];               /*!< (@ 0x00000700) Unspecified                                                */
2639   __IOM USBD_ISOOUT_Type ISOOUT;                /*!< (@ 0x000007A0) Unspecified                                                */
2640 } NRF_USBD_Type;                                /*!< Size = 1964 (0x7ac)                                                       */
2641 
2642 
2643 
2644 /* =========================================================================================================================== */
2645 /* ================                                           QSPI                                            ================ */
2646 /* =========================================================================================================================== */
2647 
2648 
2649 /**
2650   * @brief External flash interface (QSPI)
2651   */
2652 
2653 typedef struct {                                /*!< (@ 0x40029000) QSPI Structure                                             */
2654   __OM  uint32_t  TASKS_ACTIVATE;               /*!< (@ 0x00000000) Activate QSPI interface                                    */
2655   __OM  uint32_t  TASKS_READSTART;              /*!< (@ 0x00000004) Start transfer from external flash memory to
2656                                                                     internal RAM                                               */
2657   __OM  uint32_t  TASKS_WRITESTART;             /*!< (@ 0x00000008) Start transfer from internal RAM to external
2658                                                                     flash memory                                               */
2659   __OM  uint32_t  TASKS_ERASESTART;             /*!< (@ 0x0000000C) Start external flash memory erase operation                */
2660   __OM  uint32_t  TASKS_DEACTIVATE;             /*!< (@ 0x00000010) Deactivate QSPI interface                                  */
2661   __IM  uint32_t  RESERVED[59];
2662   __IOM uint32_t  EVENTS_READY;                 /*!< (@ 0x00000100) QSPI peripheral is ready. This event will be
2663                                                                     generated as a response to any QSPI task.                  */
2664   __IM  uint32_t  RESERVED1[127];
2665   __IOM uint32_t  INTEN;                        /*!< (@ 0x00000300) Enable or disable interrupt                                */
2666   __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
2667   __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
2668   __IM  uint32_t  RESERVED2[125];
2669   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable QSPI peripheral and acquire the pins selected
2670                                                                     in PSELn registers                                         */
2671   __IOM QSPI_READ_Type READ;                    /*!< (@ 0x00000504) Unspecified                                                */
2672   __IOM QSPI_WRITE_Type WRITE;                  /*!< (@ 0x00000510) Unspecified                                                */
2673   __IOM QSPI_ERASE_Type ERASE;                  /*!< (@ 0x0000051C) Unspecified                                                */
2674   __IOM QSPI_PSEL_Type PSEL;                    /*!< (@ 0x00000524) Unspecified                                                */
2675   __IOM uint32_t  XIPOFFSET;                    /*!< (@ 0x00000540) Address offset into the external memory for Execute
2676                                                                     in Place operation.                                        */
2677   __IOM uint32_t  IFCONFIG0;                    /*!< (@ 0x00000544) Interface configuration.                                   */
2678   __IM  uint32_t  RESERVED3[46];
2679   __IOM uint32_t  IFCONFIG1;                    /*!< (@ 0x00000600) Interface configuration.                                   */
2680   __IM  uint32_t  STATUS;                       /*!< (@ 0x00000604) Status register.                                           */
2681   __IM  uint32_t  RESERVED4[3];
2682   __IOM uint32_t  DPMDUR;                       /*!< (@ 0x00000614) Set the duration required to enter/exit deep
2683                                                                     power-down mode (DPM).                                     */
2684   __IM  uint32_t  RESERVED5[3];
2685   __IOM uint32_t  ADDRCONF;                     /*!< (@ 0x00000624) Extended address configuration.                            */
2686   __IM  uint32_t  RESERVED6[3];
2687   __IOM uint32_t  CINSTRCONF;                   /*!< (@ 0x00000634) Custom instruction configuration register.                 */
2688   __IOM uint32_t  CINSTRDAT0;                   /*!< (@ 0x00000638) Custom instruction data register 0.                        */
2689   __IOM uint32_t  CINSTRDAT1;                   /*!< (@ 0x0000063C) Custom instruction data register 1.                        */
2690   __IOM uint32_t  IFTIMING;                     /*!< (@ 0x00000640) SPI interface timing.                                      */
2691 } NRF_QSPI_Type;                                /*!< Size = 1604 (0x644)                                                       */
2692 
2693 
2694 
2695 /* =========================================================================================================================== */
2696 /* ================                                        CC_HOST_RGF                                        ================ */
2697 /* =========================================================================================================================== */
2698 
2699 
2700 /**
2701   * @brief CRYPTOCELL HOST_RGF interface (CC_HOST_RGF)
2702   */
2703 
2704 typedef struct {                                /*!< (@ 0x5002A000) CC_HOST_RGF Structure                                      */
2705   __IM  uint32_t  RESERVED[1678];
2706   __IOM uint32_t  HOST_CRYPTOKEY_SEL;           /*!< (@ 0x00001A38) AES hardware key select                                    */
2707   __IM  uint32_t  RESERVED1[4];
2708   __IOM uint32_t  HOST_IOT_KPRTL_LOCK;          /*!< (@ 0x00001A4C) This write-once register is the K_PRTL lock register.
2709                                                                     When this register is set, K_PRTL cannot
2710                                                                     be used and a zeroed key will be used instead.
2711                                                                     The value of this register is saved in the
2712                                                                     CRYPTOCELL AO power domain.                                */
2713   __IOM uint32_t  HOST_IOT_KDR0;                /*!< (@ 0x00001A50) This register holds bits 31:0 of K_DR. The value
2714                                                                     of this register is saved in the CRYPTOCELL
2715                                                                     AO power domain. Reading from this address
2716                                                                     returns the K_DR valid status indicating
2717                                                                     if K_DR is successfully retained.                          */
2718   __OM  uint32_t  HOST_IOT_KDR1;                /*!< (@ 0x00001A54) This register holds bits 63:32 of K_DR. The value
2719                                                                     of this register is saved in the CRYPTOCELL
2720                                                                     AO power domain.                                           */
2721   __OM  uint32_t  HOST_IOT_KDR2;                /*!< (@ 0x00001A58) This register holds bits 95:64 of K_DR. The value
2722                                                                     of this register is saved in the CRYPTOCELL
2723                                                                     AO power domain.                                           */
2724   __OM  uint32_t  HOST_IOT_KDR3;                /*!< (@ 0x00001A5C) This register holds bits 127:96 of K_DR. The
2725                                                                     value of this register is saved in the CRYPTOCELL
2726                                                                     AO power domain.                                           */
2727   __IOM uint32_t  HOST_IOT_LCS;                 /*!< (@ 0x00001A60) Controls lifecycle state (LCS) for CRYPTOCELL
2728                                                                     subsystem                                                  */
2729 } NRF_CC_HOST_RGF_Type;                         /*!< Size = 6756 (0x1a64)                                                      */
2730 
2731 
2732 
2733 /* =========================================================================================================================== */
2734 /* ================                                        CRYPTOCELL                                         ================ */
2735 /* =========================================================================================================================== */
2736 
2737 
2738 /**
2739   * @brief ARM TrustZone CryptoCell register interface (CRYPTOCELL)
2740   */
2741 
2742 typedef struct {                                /*!< (@ 0x5002A000) CRYPTOCELL Structure                                       */
2743   __IM  uint32_t  RESERVED[320];
2744   __IOM uint32_t  ENABLE;                       /*!< (@ 0x00000500) Enable CRYPTOCELL subsystem                                */
2745 } NRF_CRYPTOCELL_Type;                          /*!< Size = 1284 (0x504)                                                       */
2746 
2747 
2748 /** @} */ /* End of group Device_Peripheral_peripherals */
2749 
2750 
2751 /* =========================================================================================================================== */
2752 /* ================                          Device Specific Peripheral Address Map                           ================ */
2753 /* =========================================================================================================================== */
2754 
2755 
2756 /** @addtogroup Device_Peripheral_peripheralAddr
2757   * @{
2758   */
2759 
2760 #define NRF_FICR_BASE               0x10000000UL
2761 #define NRF_UICR_BASE               0x10001000UL
2762 #define NRF_APPROTECT_BASE          0x40000000UL
2763 #define NRF_CLOCK_BASE              0x40000000UL
2764 #define NRF_POWER_BASE              0x40000000UL
2765 #define NRF_P0_BASE                 0x50000000UL
2766 #define NRF_P1_BASE                 0x50000300UL
2767 #define NRF_RADIO_BASE              0x40001000UL
2768 #define NRF_UART0_BASE              0x40002000UL
2769 #define NRF_UARTE0_BASE             0x40002000UL
2770 #define NRF_SPI0_BASE               0x40003000UL
2771 #define NRF_SPIM0_BASE              0x40003000UL
2772 #define NRF_SPIS0_BASE              0x40003000UL
2773 #define NRF_TWI0_BASE               0x40003000UL
2774 #define NRF_TWIM0_BASE              0x40003000UL
2775 #define NRF_TWIS0_BASE              0x40003000UL
2776 #define NRF_SPI1_BASE               0x40004000UL
2777 #define NRF_SPIM1_BASE              0x40004000UL
2778 #define NRF_SPIS1_BASE              0x40004000UL
2779 #define NRF_TWI1_BASE               0x40004000UL
2780 #define NRF_TWIM1_BASE              0x40004000UL
2781 #define NRF_TWIS1_BASE              0x40004000UL
2782 #define NRF_NFCT_BASE               0x40005000UL
2783 #define NRF_GPIOTE_BASE             0x40006000UL
2784 #define NRF_SAADC_BASE              0x40007000UL
2785 #define NRF_TIMER0_BASE             0x40008000UL
2786 #define NRF_TIMER1_BASE             0x40009000UL
2787 #define NRF_TIMER2_BASE             0x4000A000UL
2788 #define NRF_RTC0_BASE               0x4000B000UL
2789 #define NRF_TEMP_BASE               0x4000C000UL
2790 #define NRF_RNG_BASE                0x4000D000UL
2791 #define NRF_ECB_BASE                0x4000E000UL
2792 #define NRF_AAR_BASE                0x4000F000UL
2793 #define NRF_CCM_BASE                0x4000F000UL
2794 #define NRF_WDT_BASE                0x40010000UL
2795 #define NRF_RTC1_BASE               0x40011000UL
2796 #define NRF_QDEC_BASE               0x40012000UL
2797 #define NRF_COMP_BASE               0x40013000UL
2798 #define NRF_LPCOMP_BASE             0x40013000UL
2799 #define NRF_EGU0_BASE               0x40014000UL
2800 #define NRF_SWI0_BASE               0x40014000UL
2801 #define NRF_EGU1_BASE               0x40015000UL
2802 #define NRF_SWI1_BASE               0x40015000UL
2803 #define NRF_EGU2_BASE               0x40016000UL
2804 #define NRF_SWI2_BASE               0x40016000UL
2805 #define NRF_EGU3_BASE               0x40017000UL
2806 #define NRF_SWI3_BASE               0x40017000UL
2807 #define NRF_EGU4_BASE               0x40018000UL
2808 #define NRF_SWI4_BASE               0x40018000UL
2809 #define NRF_EGU5_BASE               0x40019000UL
2810 #define NRF_SWI5_BASE               0x40019000UL
2811 #define NRF_TIMER3_BASE             0x4001A000UL
2812 #define NRF_TIMER4_BASE             0x4001B000UL
2813 #define NRF_PWM0_BASE               0x4001C000UL
2814 #define NRF_PDM_BASE                0x4001D000UL
2815 #define NRF_ACL_BASE                0x4001E000UL
2816 #define NRF_NVMC_BASE               0x4001E000UL
2817 #define NRF_PPI_BASE                0x4001F000UL
2818 #define NRF_MWU_BASE                0x40020000UL
2819 #define NRF_PWM1_BASE               0x40021000UL
2820 #define NRF_PWM2_BASE               0x40022000UL
2821 #define NRF_SPI2_BASE               0x40023000UL
2822 #define NRF_SPIM2_BASE              0x40023000UL
2823 #define NRF_SPIS2_BASE              0x40023000UL
2824 #define NRF_RTC2_BASE               0x40024000UL
2825 #define NRF_I2S_BASE                0x40025000UL
2826 #define NRF_FPU_BASE                0x40026000UL
2827 #define NRF_USBD_BASE               0x40027000UL
2828 #define NRF_UARTE1_BASE             0x40028000UL
2829 #define NRF_QSPI_BASE               0x40029000UL
2830 #define NRF_CC_HOST_RGF_BASE        0x5002A000UL
2831 #define NRF_CRYPTOCELL_BASE         0x5002A000UL
2832 #define NRF_PWM3_BASE               0x4002D000UL
2833 #define NRF_SPIM3_BASE              0x4002F000UL
2834 
2835 /** @} */ /* End of group Device_Peripheral_peripheralAddr */
2836 
2837 
2838 /* =========================================================================================================================== */
2839 /* ================                                  Peripheral declaration                                   ================ */
2840 /* =========================================================================================================================== */
2841 
2842 
2843 /** @addtogroup Device_Peripheral_declaration
2844   * @{
2845   */
2846 
2847 #define NRF_FICR                    ((NRF_FICR_Type*)          NRF_FICR_BASE)
2848 #define NRF_UICR                    ((NRF_UICR_Type*)          NRF_UICR_BASE)
2849 #define NRF_APPROTECT               ((NRF_APPROTECT_Type*)     NRF_APPROTECT_BASE)
2850 #define NRF_CLOCK                   ((NRF_CLOCK_Type*)         NRF_CLOCK_BASE)
2851 #define NRF_POWER                   ((NRF_POWER_Type*)         NRF_POWER_BASE)
2852 #define NRF_P0                      ((NRF_GPIO_Type*)          NRF_P0_BASE)
2853 #define NRF_P1                      ((NRF_GPIO_Type*)          NRF_P1_BASE)
2854 #define NRF_RADIO                   ((NRF_RADIO_Type*)         NRF_RADIO_BASE)
2855 #define NRF_UART0                   ((NRF_UART_Type*)          NRF_UART0_BASE)
2856 #define NRF_UARTE0                  ((NRF_UARTE_Type*)         NRF_UARTE0_BASE)
2857 #define NRF_SPI0                    ((NRF_SPI_Type*)           NRF_SPI0_BASE)
2858 #define NRF_SPIM0                   ((NRF_SPIM_Type*)          NRF_SPIM0_BASE)
2859 #define NRF_SPIS0                   ((NRF_SPIS_Type*)          NRF_SPIS0_BASE)
2860 #define NRF_TWI0                    ((NRF_TWI_Type*)           NRF_TWI0_BASE)
2861 #define NRF_TWIM0                   ((NRF_TWIM_Type*)          NRF_TWIM0_BASE)
2862 #define NRF_TWIS0                   ((NRF_TWIS_Type*)          NRF_TWIS0_BASE)
2863 #define NRF_SPI1                    ((NRF_SPI_Type*)           NRF_SPI1_BASE)
2864 #define NRF_SPIM1                   ((NRF_SPIM_Type*)          NRF_SPIM1_BASE)
2865 #define NRF_SPIS1                   ((NRF_SPIS_Type*)          NRF_SPIS1_BASE)
2866 #define NRF_TWI1                    ((NRF_TWI_Type*)           NRF_TWI1_BASE)
2867 #define NRF_TWIM1                   ((NRF_TWIM_Type*)          NRF_TWIM1_BASE)
2868 #define NRF_TWIS1                   ((NRF_TWIS_Type*)          NRF_TWIS1_BASE)
2869 #define NRF_NFCT                    ((NRF_NFCT_Type*)          NRF_NFCT_BASE)
2870 #define NRF_GPIOTE                  ((NRF_GPIOTE_Type*)        NRF_GPIOTE_BASE)
2871 #define NRF_SAADC                   ((NRF_SAADC_Type*)         NRF_SAADC_BASE)
2872 #define NRF_TIMER0                  ((NRF_TIMER_Type*)         NRF_TIMER0_BASE)
2873 #define NRF_TIMER1                  ((NRF_TIMER_Type*)         NRF_TIMER1_BASE)
2874 #define NRF_TIMER2                  ((NRF_TIMER_Type*)         NRF_TIMER2_BASE)
2875 #define NRF_RTC0                    ((NRF_RTC_Type*)           NRF_RTC0_BASE)
2876 #define NRF_TEMP                    ((NRF_TEMP_Type*)          NRF_TEMP_BASE)
2877 #define NRF_RNG                     ((NRF_RNG_Type*)           NRF_RNG_BASE)
2878 #define NRF_ECB                     ((NRF_ECB_Type*)           NRF_ECB_BASE)
2879 #define NRF_AAR                     ((NRF_AAR_Type*)           NRF_AAR_BASE)
2880 #define NRF_CCM                     ((NRF_CCM_Type*)           NRF_CCM_BASE)
2881 #define NRF_WDT                     ((NRF_WDT_Type*)           NRF_WDT_BASE)
2882 #define NRF_RTC1                    ((NRF_RTC_Type*)           NRF_RTC1_BASE)
2883 #define NRF_QDEC                    ((NRF_QDEC_Type*)          NRF_QDEC_BASE)
2884 #define NRF_COMP                    ((NRF_COMP_Type*)          NRF_COMP_BASE)
2885 #define NRF_LPCOMP                  ((NRF_LPCOMP_Type*)        NRF_LPCOMP_BASE)
2886 #define NRF_EGU0                    ((NRF_EGU_Type*)           NRF_EGU0_BASE)
2887 #define NRF_SWI0                    ((NRF_SWI_Type*)           NRF_SWI0_BASE)
2888 #define NRF_EGU1                    ((NRF_EGU_Type*)           NRF_EGU1_BASE)
2889 #define NRF_SWI1                    ((NRF_SWI_Type*)           NRF_SWI1_BASE)
2890 #define NRF_EGU2                    ((NRF_EGU_Type*)           NRF_EGU2_BASE)
2891 #define NRF_SWI2                    ((NRF_SWI_Type*)           NRF_SWI2_BASE)
2892 #define NRF_EGU3                    ((NRF_EGU_Type*)           NRF_EGU3_BASE)
2893 #define NRF_SWI3                    ((NRF_SWI_Type*)           NRF_SWI3_BASE)
2894 #define NRF_EGU4                    ((NRF_EGU_Type*)           NRF_EGU4_BASE)
2895 #define NRF_SWI4                    ((NRF_SWI_Type*)           NRF_SWI4_BASE)
2896 #define NRF_EGU5                    ((NRF_EGU_Type*)           NRF_EGU5_BASE)
2897 #define NRF_SWI5                    ((NRF_SWI_Type*)           NRF_SWI5_BASE)
2898 #define NRF_TIMER3                  ((NRF_TIMER_Type*)         NRF_TIMER3_BASE)
2899 #define NRF_TIMER4                  ((NRF_TIMER_Type*)         NRF_TIMER4_BASE)
2900 #define NRF_PWM0                    ((NRF_PWM_Type*)           NRF_PWM0_BASE)
2901 #define NRF_PDM                     ((NRF_PDM_Type*)           NRF_PDM_BASE)
2902 #define NRF_ACL                     ((NRF_ACL_Type*)           NRF_ACL_BASE)
2903 #define NRF_NVMC                    ((NRF_NVMC_Type*)          NRF_NVMC_BASE)
2904 #define NRF_PPI                     ((NRF_PPI_Type*)           NRF_PPI_BASE)
2905 #define NRF_MWU                     ((NRF_MWU_Type*)           NRF_MWU_BASE)
2906 #define NRF_PWM1                    ((NRF_PWM_Type*)           NRF_PWM1_BASE)
2907 #define NRF_PWM2                    ((NRF_PWM_Type*)           NRF_PWM2_BASE)
2908 #define NRF_SPI2                    ((NRF_SPI_Type*)           NRF_SPI2_BASE)
2909 #define NRF_SPIM2                   ((NRF_SPIM_Type*)          NRF_SPIM2_BASE)
2910 #define NRF_SPIS2                   ((NRF_SPIS_Type*)          NRF_SPIS2_BASE)
2911 #define NRF_RTC2                    ((NRF_RTC_Type*)           NRF_RTC2_BASE)
2912 #define NRF_I2S                     ((NRF_I2S_Type*)           NRF_I2S_BASE)
2913 #define NRF_FPU                     ((NRF_FPU_Type*)           NRF_FPU_BASE)
2914 #define NRF_USBD                    ((NRF_USBD_Type*)          NRF_USBD_BASE)
2915 #define NRF_UARTE1                  ((NRF_UARTE_Type*)         NRF_UARTE1_BASE)
2916 #define NRF_QSPI                    ((NRF_QSPI_Type*)          NRF_QSPI_BASE)
2917 #define NRF_CC_HOST_RGF             ((NRF_CC_HOST_RGF_Type*)   NRF_CC_HOST_RGF_BASE)
2918 #define NRF_CRYPTOCELL              ((NRF_CRYPTOCELL_Type*)    NRF_CRYPTOCELL_BASE)
2919 #define NRF_PWM3                    ((NRF_PWM_Type*)           NRF_PWM3_BASE)
2920 #define NRF_SPIM3                   ((NRF_SPIM_Type*)          NRF_SPIM3_BASE)
2921 
2922 /** @} */ /* End of group Device_Peripheral_declaration */
2923 
2924 
2925 /* =========================================  End of section using anonymous unions  ========================================= */
2926 #if defined (__CC_ARM)
2927   #pragma pop
2928 #elif defined (__ICCARM__)
2929   /* leave anonymous unions enabled */
2930 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
2931   #pragma clang diagnostic pop
2932 #elif defined (__GNUC__)
2933   /* anonymous unions are enabled by default */
2934 #elif defined (__TMS470__)
2935   /* anonymous unions are enabled by default */
2936 #elif defined (__TASKING__)
2937   #pragma warning restore
2938 #elif defined (__CSMC__)
2939   /* anonymous unions are enabled by default */
2940 #endif
2941 
2942 
2943 #ifdef __cplusplus
2944 }
2945 #endif
2946 
2947 #endif /* NRF52840_H */
2948 
2949 
2950 /** @} */ /* End of group nrf52840 */
2951 
2952 /** @} */ /* End of group Nordic Semiconductor */
2953