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