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