nrf52811.h 156 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089
  1. /*
  2. * Copyright (c) 2010 - 2018, Nordic Semiconductor ASA
  3. *
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without modification,
  7. * are permitted provided that the following conditions are met:
  8. *
  9. * 1. Redistributions of source code must retain the above copyright notice, this
  10. * list of conditions and the following disclaimer.
  11. *
  12. * 2. Redistributions in binary form, except as embedded into a Nordic
  13. * Semiconductor ASA integrated circuit in a product or a software update for
  14. * such product, must reproduce the above copyright notice, this list of
  15. * conditions and the following disclaimer in the documentation and/or other
  16. * materials provided with the distribution.
  17. *
  18. * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
  19. * contributors may be used to endorse or promote products derived from this
  20. * software without specific prior written permission.
  21. *
  22. * 4. This software, with or without modification, must only be used with a
  23. * Nordic Semiconductor ASA integrated circuit.
  24. *
  25. * 5. Any software provided in binary form under this license must not be reverse
  26. * engineered, decompiled, modified and/or disassembled.
  27. *
  28. * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
  29. * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  30. * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
  31. * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
  32. * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  33. * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
  34. * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  35. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  36. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  37. * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  38. *
  39. * @file nrf52811.h
  40. * @brief CMSIS HeaderFile
  41. * @version 1
  42. * @date 08. February 2019
  43. * @note Generated by SVDConv V3.3.18 on Friday, 08.02.2019 16:48:12
  44. * from File 'nrf52811.svd',
  45. * last modified on Friday, 08.02.2019 15:48:07
  46. */
  47. /** @addtogroup Nordic Semiconductor
  48. * @{
  49. */
  50. /** @addtogroup nrf52811
  51. * @{
  52. */
  53. #ifndef NRF52811_H
  54. #define NRF52811_H
  55. #ifdef __cplusplus
  56. extern "C" {
  57. #endif
  58. /** @addtogroup Configuration_of_CMSIS
  59. * @{
  60. */
  61. /* =========================================================================================================================== */
  62. /* ================ Interrupt Number Definition ================ */
  63. /* =========================================================================================================================== */
  64. typedef enum {
  65. /* ======================================= ARM Cortex-M4 Specific Interrupt Numbers ======================================== */
  66. Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */
  67. NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */
  68. HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */
  69. MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation
  70. and No Match */
  71. BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory
  72. related Fault */
  73. UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */
  74. SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */
  75. DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */
  76. PendSV_IRQn = -2, /*!< -2 Pendable request for system service */
  77. SysTick_IRQn = -1, /*!< -1 System Tick Timer */
  78. /* ========================================== nrf52811 Specific Interrupt Numbers ========================================== */
  79. POWER_CLOCK_IRQn = 0, /*!< 0 POWER_CLOCK */
  80. RADIO_IRQn = 1, /*!< 1 RADIO */
  81. UARTE0_UART0_IRQn = 2, /*!< 2 UARTE0_UART0 */
  82. TWIM0_TWIS0_TWI0_SPIM1_SPIS1_SPI1_IRQn= 3, /*!< 3 TWIM0_TWIS0_TWI0_SPIM1_SPIS1_SPI1 */
  83. SPIM0_SPIS0_SPI0_IRQn = 4, /*!< 4 SPIM0_SPIS0_SPI0 */
  84. GPIOTE_IRQn = 6, /*!< 6 GPIOTE */
  85. SAADC_IRQn = 7, /*!< 7 SAADC */
  86. TIMER0_IRQn = 8, /*!< 8 TIMER0 */
  87. TIMER1_IRQn = 9, /*!< 9 TIMER1 */
  88. TIMER2_IRQn = 10, /*!< 10 TIMER2 */
  89. RTC0_IRQn = 11, /*!< 11 RTC0 */
  90. TEMP_IRQn = 12, /*!< 12 TEMP */
  91. RNG_IRQn = 13, /*!< 13 RNG */
  92. ECB_IRQn = 14, /*!< 14 ECB */
  93. CCM_AAR_IRQn = 15, /*!< 15 CCM_AAR */
  94. WDT_IRQn = 16, /*!< 16 WDT */
  95. RTC1_IRQn = 17, /*!< 17 RTC1 */
  96. QDEC_IRQn = 18, /*!< 18 QDEC */
  97. COMP_IRQn = 19, /*!< 19 COMP */
  98. SWI0_EGU0_IRQn = 20, /*!< 20 SWI0_EGU0 */
  99. SWI1_EGU1_IRQn = 21, /*!< 21 SWI1_EGU1 */
  100. SWI2_IRQn = 22, /*!< 22 SWI2 */
  101. SWI3_IRQn = 23, /*!< 23 SWI3 */
  102. SWI4_IRQn = 24, /*!< 24 SWI4 */
  103. SWI5_IRQn = 25, /*!< 25 SWI5 */
  104. PWM0_IRQn = 28, /*!< 28 PWM0 */
  105. PDM_IRQn = 29 /*!< 29 PDM */
  106. } IRQn_Type;
  107. /* =========================================================================================================================== */
  108. /* ================ Processor and Core Peripheral Section ================ */
  109. /* =========================================================================================================================== */
  110. /* =========================== Configuration of the ARM Cortex-M4 Processor and Core Peripherals =========================== */
  111. #define __CM4_REV 0x0001U /*!< CM4 Core Revision */
  112. #define __DSP_PRESENT 0 /*!< DSP present or not */
  113. #define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */
  114. #define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */
  115. #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */
  116. #define __MPU_PRESENT 1 /*!< MPU present or not */
  117. #define __FPU_PRESENT 0 /*!< FPU present or not */
  118. /** @} */ /* End of group Configuration_of_CMSIS */
  119. #include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */
  120. #include "system_nrf52811.h" /*!< nrf52811 System */
  121. #ifndef __IM /*!< Fallback for older CMSIS versions */
  122. #define __IM __I
  123. #endif
  124. #ifndef __OM /*!< Fallback for older CMSIS versions */
  125. #define __OM __O
  126. #endif
  127. #ifndef __IOM /*!< Fallback for older CMSIS versions */
  128. #define __IOM __IO
  129. #endif
  130. /* ======================================== Start of section using anonymous unions ======================================== */
  131. #if defined (__CC_ARM)
  132. #pragma push
  133. #pragma anon_unions
  134. #elif defined (__ICCARM__)
  135. #pragma language=extended
  136. #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
  137. #pragma clang diagnostic push
  138. #pragma clang diagnostic ignored "-Wc11-extensions"
  139. #pragma clang diagnostic ignored "-Wreserved-id-macro"
  140. #pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
  141. #pragma clang diagnostic ignored "-Wnested-anon-types"
  142. #elif defined (__GNUC__)
  143. /* anonymous unions are enabled by default */
  144. #elif defined (__TMS470__)
  145. /* anonymous unions are enabled by default */
  146. #elif defined (__TASKING__)
  147. #pragma warning 586
  148. #elif defined (__CSMC__)
  149. /* anonymous unions are enabled by default */
  150. #else
  151. #warning Not supported compiler type
  152. #endif
  153. /* =========================================================================================================================== */
  154. /* ================ Device Specific Cluster Section ================ */
  155. /* =========================================================================================================================== */
  156. /** @addtogroup Device_Peripheral_clusters
  157. * @{
  158. */
  159. /**
  160. * @brief FICR_INFO [INFO] (Device info)
  161. */
  162. typedef struct {
  163. __IM uint32_t PART; /*!< (@ 0x00000000) Part code */
  164. __IM uint32_t VARIANT; /*!< (@ 0x00000004) Part variant, hardware version and production
  165. configuration */
  166. __IM uint32_t PACKAGE; /*!< (@ 0x00000008) Package option */
  167. __IM uint32_t RAM; /*!< (@ 0x0000000C) RAM variant */
  168. __IM uint32_t FLASH; /*!< (@ 0x00000010) Flash variant */
  169. } FICR_INFO_Type; /*!< Size = 20 (0x14) */
  170. /**
  171. * @brief FICR_TEMP [TEMP] (Registers storing factory TEMP module linearization coefficients)
  172. */
  173. typedef struct {
  174. __IM uint32_t A0; /*!< (@ 0x00000000) Slope definition A0 */
  175. __IM uint32_t A1; /*!< (@ 0x00000004) Slope definition A1 */
  176. __IM uint32_t A2; /*!< (@ 0x00000008) Slope definition A2 */
  177. __IM uint32_t A3; /*!< (@ 0x0000000C) Slope definition A3 */
  178. __IM uint32_t A4; /*!< (@ 0x00000010) Slope definition A4 */
  179. __IM uint32_t A5; /*!< (@ 0x00000014) Slope definition A5 */
  180. __IM uint32_t B0; /*!< (@ 0x00000018) Y-intercept B0 */
  181. __IM uint32_t B1; /*!< (@ 0x0000001C) Y-intercept B1 */
  182. __IM uint32_t B2; /*!< (@ 0x00000020) Y-intercept B2 */
  183. __IM uint32_t B3; /*!< (@ 0x00000024) Y-intercept B3 */
  184. __IM uint32_t B4; /*!< (@ 0x00000028) Y-intercept B4 */
  185. __IM uint32_t B5; /*!< (@ 0x0000002C) Y-intercept B5 */
  186. __IM uint32_t T0; /*!< (@ 0x00000030) Segment end T0 */
  187. __IM uint32_t T1; /*!< (@ 0x00000034) Segment end T1 */
  188. __IM uint32_t T2; /*!< (@ 0x00000038) Segment end T2 */
  189. __IM uint32_t T3; /*!< (@ 0x0000003C) Segment end T3 */
  190. __IM uint32_t T4; /*!< (@ 0x00000040) Segment end T4 */
  191. } FICR_TEMP_Type; /*!< Size = 68 (0x44) */
  192. /**
  193. * @brief POWER_RAM [RAM] (Unspecified)
  194. */
  195. typedef struct {
  196. __IOM uint32_t POWER; /*!< (@ 0x00000000) Description cluster: RAMn power control register.
  197. The RAM size will vary depending on product
  198. variant, and the RAMn register will only
  199. be present if the corresponding RAM AHB
  200. slave is present on the device. */
  201. __OM uint32_t POWERSET; /*!< (@ 0x00000004) Description cluster: RAMn power control set register */
  202. __OM uint32_t POWERCLR; /*!< (@ 0x00000008) Description cluster: RAMn power control clear
  203. register */
  204. __IM uint32_t RESERVED;
  205. } POWER_RAM_Type; /*!< Size = 16 (0x10) */
  206. /**
  207. * @brief RADIO_PSEL [PSEL] (Unspecified)
  208. */
  209. typedef struct {
  210. __IOM uint32_t DFEGPIO[8]; /*!< (@ 0x00000000) Description collection: Pin select for DFE pin
  211. n */
  212. } RADIO_PSEL_Type; /*!< Size = 32 (0x20) */
  213. /**
  214. * @brief RADIO_DFEPACKET [DFEPACKET] (DFE packet EasyDMA channel)
  215. */
  216. typedef struct {
  217. __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
  218. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of buffer words to transfer */
  219. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of samples transferred in the last transaction */
  220. } RADIO_DFEPACKET_Type; /*!< Size = 12 (0xc) */
  221. /**
  222. * @brief UART_PSEL [PSEL] (Unspecified)
  223. */
  224. typedef struct {
  225. __IOM uint32_t RTS; /*!< (@ 0x00000000) Pin select for RTS */
  226. __IOM uint32_t TXD; /*!< (@ 0x00000004) Pin select for TXD */
  227. __IOM uint32_t CTS; /*!< (@ 0x00000008) Pin select for CTS */
  228. __IOM uint32_t RXD; /*!< (@ 0x0000000C) Pin select for RXD */
  229. } UART_PSEL_Type; /*!< Size = 16 (0x10) */
  230. /**
  231. * @brief UARTE_PSEL [PSEL] (Unspecified)
  232. */
  233. typedef struct {
  234. __IOM uint32_t RTS; /*!< (@ 0x00000000) Pin select for RTS signal */
  235. __IOM uint32_t TXD; /*!< (@ 0x00000004) Pin select for TXD signal */
  236. __IOM uint32_t CTS; /*!< (@ 0x00000008) Pin select for CTS signal */
  237. __IOM uint32_t RXD; /*!< (@ 0x0000000C) Pin select for RXD signal */
  238. } UARTE_PSEL_Type; /*!< Size = 16 (0x10) */
  239. /**
  240. * @brief UARTE_RXD [RXD] (RXD EasyDMA channel)
  241. */
  242. typedef struct {
  243. __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
  244. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */
  245. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
  246. } UARTE_RXD_Type; /*!< Size = 12 (0xc) */
  247. /**
  248. * @brief UARTE_TXD [TXD] (TXD EasyDMA channel)
  249. */
  250. typedef struct {
  251. __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
  252. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */
  253. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
  254. } UARTE_TXD_Type; /*!< Size = 12 (0xc) */
  255. /**
  256. * @brief SPI_PSEL [PSEL] (Unspecified)
  257. */
  258. typedef struct {
  259. __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */
  260. __IOM uint32_t MOSI; /*!< (@ 0x00000004) Pin select for MOSI signal */
  261. __IOM uint32_t MISO; /*!< (@ 0x00000008) Pin select for MISO signal */
  262. } SPI_PSEL_Type; /*!< Size = 12 (0xc) */
  263. /**
  264. * @brief SPIM_PSEL [PSEL] (Unspecified)
  265. */
  266. typedef struct {
  267. __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */
  268. __IOM uint32_t MOSI; /*!< (@ 0x00000004) Pin select for MOSI signal */
  269. __IOM uint32_t MISO; /*!< (@ 0x00000008) Pin select for MISO signal */
  270. } SPIM_PSEL_Type; /*!< Size = 12 (0xc) */
  271. /**
  272. * @brief SPIM_RXD [RXD] (RXD EasyDMA channel)
  273. */
  274. typedef struct {
  275. __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
  276. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */
  277. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
  278. __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
  279. } SPIM_RXD_Type; /*!< Size = 16 (0x10) */
  280. /**
  281. * @brief SPIM_TXD [TXD] (TXD EasyDMA channel)
  282. */
  283. typedef struct {
  284. __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
  285. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */
  286. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
  287. __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
  288. } SPIM_TXD_Type; /*!< Size = 16 (0x10) */
  289. /**
  290. * @brief SPIS_PSEL [PSEL] (Unspecified)
  291. */
  292. typedef struct {
  293. __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */
  294. __IOM uint32_t MISO; /*!< (@ 0x00000004) Pin select for MISO signal */
  295. __IOM uint32_t MOSI; /*!< (@ 0x00000008) Pin select for MOSI signal */
  296. __IOM uint32_t CSN; /*!< (@ 0x0000000C) Pin select for CSN signal */
  297. } SPIS_PSEL_Type; /*!< Size = 16 (0x10) */
  298. /**
  299. * @brief SPIS_RXD [RXD] (Unspecified)
  300. */
  301. typedef struct {
  302. __IOM uint32_t PTR; /*!< (@ 0x00000000) RXD data pointer */
  303. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */
  304. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes received in last granted transaction */
  305. __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
  306. } SPIS_RXD_Type; /*!< Size = 16 (0x10) */
  307. /**
  308. * @brief SPIS_TXD [TXD] (Unspecified)
  309. */
  310. typedef struct {
  311. __IOM uint32_t PTR; /*!< (@ 0x00000000) TXD data pointer */
  312. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */
  313. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transmitted in last granted transaction */
  314. __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
  315. } SPIS_TXD_Type; /*!< Size = 16 (0x10) */
  316. /**
  317. * @brief TWI_PSEL [PSEL] (Unspecified)
  318. */
  319. typedef struct {
  320. __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL */
  321. __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA */
  322. } TWI_PSEL_Type; /*!< Size = 8 (0x8) */
  323. /**
  324. * @brief TWIM_PSEL [PSEL] (Unspecified)
  325. */
  326. typedef struct {
  327. __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL signal */
  328. __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA signal */
  329. } TWIM_PSEL_Type; /*!< Size = 8 (0x8) */
  330. /**
  331. * @brief TWIM_RXD [RXD] (RXD EasyDMA channel)
  332. */
  333. typedef struct {
  334. __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
  335. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */
  336. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
  337. __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
  338. } TWIM_RXD_Type; /*!< Size = 16 (0x10) */
  339. /**
  340. * @brief TWIM_TXD [TXD] (TXD EasyDMA channel)
  341. */
  342. typedef struct {
  343. __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
  344. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */
  345. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
  346. __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
  347. } TWIM_TXD_Type; /*!< Size = 16 (0x10) */
  348. /**
  349. * @brief TWIS_PSEL [PSEL] (Unspecified)
  350. */
  351. typedef struct {
  352. __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL signal */
  353. __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA signal */
  354. } TWIS_PSEL_Type; /*!< Size = 8 (0x8) */
  355. /**
  356. * @brief TWIS_RXD [RXD] (RXD EasyDMA channel)
  357. */
  358. typedef struct {
  359. __IOM uint32_t PTR; /*!< (@ 0x00000000) RXD Data pointer */
  360. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in RXD buffer */
  361. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last RXD transaction */
  362. __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
  363. } TWIS_RXD_Type; /*!< Size = 16 (0x10) */
  364. /**
  365. * @brief TWIS_TXD [TXD] (TXD EasyDMA channel)
  366. */
  367. typedef struct {
  368. __IOM uint32_t PTR; /*!< (@ 0x00000000) TXD Data pointer */
  369. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in TXD buffer */
  370. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last TXD transaction */
  371. __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
  372. } TWIS_TXD_Type; /*!< Size = 16 (0x10) */
  373. /**
  374. * @brief SAADC_EVENTS_CH [EVENTS_CH] (Peripheral events.)
  375. */
  376. typedef struct {
  377. __IOM uint32_t LIMITH; /*!< (@ 0x00000000) Description cluster: Last results is equal or
  378. above CH[n].LIMIT.HIGH */
  379. __IOM uint32_t LIMITL; /*!< (@ 0x00000004) Description cluster: Last results is equal or
  380. below CH[n].LIMIT.LOW */
  381. } SAADC_EVENTS_CH_Type; /*!< Size = 8 (0x8) */
  382. /**
  383. * @brief SAADC_CH [CH] (Unspecified)
  384. */
  385. typedef struct {
  386. __IOM uint32_t PSELP; /*!< (@ 0x00000000) Description cluster: Input positive pin selection
  387. for CH[n] */
  388. __IOM uint32_t PSELN; /*!< (@ 0x00000004) Description cluster: Input negative pin selection
  389. for CH[n] */
  390. __IOM uint32_t CONFIG; /*!< (@ 0x00000008) Description cluster: Input configuration for
  391. CH[n] */
  392. __IOM uint32_t LIMIT; /*!< (@ 0x0000000C) Description cluster: High/low limits for event
  393. monitoring a channel */
  394. } SAADC_CH_Type; /*!< Size = 16 (0x10) */
  395. /**
  396. * @brief SAADC_RESULT [RESULT] (RESULT EasyDMA channel)
  397. */
  398. typedef struct {
  399. __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
  400. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of buffer words to transfer */
  401. __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of buffer words transferred since last
  402. START */
  403. } SAADC_RESULT_Type; /*!< Size = 12 (0xc) */
  404. /**
  405. * @brief QDEC_PSEL [PSEL] (Unspecified)
  406. */
  407. typedef struct {
  408. __IOM uint32_t LED; /*!< (@ 0x00000000) Pin select for LED signal */
  409. __IOM uint32_t A; /*!< (@ 0x00000004) Pin select for A signal */
  410. __IOM uint32_t B; /*!< (@ 0x00000008) Pin select for B signal */
  411. } QDEC_PSEL_Type; /*!< Size = 12 (0xc) */
  412. /**
  413. * @brief PWM_SEQ [SEQ] (Unspecified)
  414. */
  415. typedef struct {
  416. __IOM uint32_t PTR; /*!< (@ 0x00000000) Description cluster: Beginning address in RAM
  417. of this sequence */
  418. __IOM uint32_t CNT; /*!< (@ 0x00000004) Description cluster: Number of values (duty cycles)
  419. in this sequence */
  420. __IOM uint32_t REFRESH; /*!< (@ 0x00000008) Description cluster: Number of additional PWM
  421. periods between samples loaded into compare
  422. register */
  423. __IOM uint32_t ENDDELAY; /*!< (@ 0x0000000C) Description cluster: Time added after the sequence */
  424. __IM uint32_t RESERVED[4];
  425. } PWM_SEQ_Type; /*!< Size = 32 (0x20) */
  426. /**
  427. * @brief PWM_PSEL [PSEL] (Unspecified)
  428. */
  429. typedef struct {
  430. __IOM uint32_t OUT[4]; /*!< (@ 0x00000000) Description collection: Output pin select for
  431. PWM channel n */
  432. } PWM_PSEL_Type; /*!< Size = 16 (0x10) */
  433. /**
  434. * @brief PDM_PSEL [PSEL] (Unspecified)
  435. */
  436. typedef struct {
  437. __IOM uint32_t CLK; /*!< (@ 0x00000000) Pin number configuration for PDM CLK signal */
  438. __IOM uint32_t DIN; /*!< (@ 0x00000004) Pin number configuration for PDM DIN signal */
  439. } PDM_PSEL_Type; /*!< Size = 8 (0x8) */
  440. /**
  441. * @brief PDM_SAMPLE [SAMPLE] (Unspecified)
  442. */
  443. typedef struct {
  444. __IOM uint32_t PTR; /*!< (@ 0x00000000) RAM address pointer to write samples to with
  445. EasyDMA */
  446. __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Number of samples to allocate memory for in EasyDMA
  447. mode */
  448. } PDM_SAMPLE_Type; /*!< Size = 8 (0x8) */
  449. /**
  450. * @brief PPI_TASKS_CHG [TASKS_CHG] (Channel group tasks)
  451. */
  452. typedef struct {
  453. __OM uint32_t EN; /*!< (@ 0x00000000) Description cluster: Enable channel group n */
  454. __OM uint32_t DIS; /*!< (@ 0x00000004) Description cluster: Disable channel group n */
  455. } PPI_TASKS_CHG_Type; /*!< Size = 8 (0x8) */
  456. /**
  457. * @brief PPI_CH [CH] (PPI Channel)
  458. */
  459. typedef struct {
  460. __IOM uint32_t EEP; /*!< (@ 0x00000000) Description cluster: Channel n event end-point */
  461. __IOM uint32_t TEP; /*!< (@ 0x00000004) Description cluster: Channel n task end-point */
  462. } PPI_CH_Type; /*!< Size = 8 (0x8) */
  463. /**
  464. * @brief PPI_FORK [FORK] (Fork)
  465. */
  466. typedef struct {
  467. __IOM uint32_t TEP; /*!< (@ 0x00000000) Description cluster: Channel n task end-point */
  468. } PPI_FORK_Type; /*!< Size = 4 (0x4) */
  469. /** @} */ /* End of group Device_Peripheral_clusters */
  470. /* =========================================================================================================================== */
  471. /* ================ Device Specific Peripheral Section ================ */
  472. /* =========================================================================================================================== */
  473. /** @addtogroup Device_Peripheral_peripherals
  474. * @{
  475. */
  476. /* =========================================================================================================================== */
  477. /* ================ FICR ================ */
  478. /* =========================================================================================================================== */
  479. /**
  480. * @brief Factory information configuration registers (FICR)
  481. */
  482. typedef struct { /*!< (@ 0x10000000) FICR Structure */
  483. __IM uint32_t RESERVED[4];
  484. __IM uint32_t CODEPAGESIZE; /*!< (@ 0x00000010) Code memory page size */
  485. __IM uint32_t CODESIZE; /*!< (@ 0x00000014) Code memory size */
  486. __IM uint32_t RESERVED1[18];
  487. __IM uint32_t DEVICEID[2]; /*!< (@ 0x00000060) Description collection: Device identifier */
  488. __IM uint32_t RESERVED2[6];
  489. __IM uint32_t ER[4]; /*!< (@ 0x00000080) Description collection: Encryption root, word
  490. n */
  491. __IM uint32_t IR[4]; /*!< (@ 0x00000090) Description collection: Identity root, word n */
  492. __IM uint32_t DEVICEADDRTYPE; /*!< (@ 0x000000A0) Device address type */
  493. __IM uint32_t DEVICEADDR[2]; /*!< (@ 0x000000A4) Description collection: Device address n */
  494. __IM uint32_t RESERVED3[21];
  495. __IM FICR_INFO_Type INFO; /*!< (@ 0x00000100) Device info */
  496. __IM uint32_t RESERVED4[188];
  497. __IM FICR_TEMP_Type TEMP; /*!< (@ 0x00000404) Registers storing factory TEMP module linearization
  498. coefficients */
  499. } NRF_FICR_Type; /*!< Size = 1096 (0x448) */
  500. /* =========================================================================================================================== */
  501. /* ================ UICR ================ */
  502. /* =========================================================================================================================== */
  503. /**
  504. * @brief User information configuration registers (UICR)
  505. */
  506. typedef struct { /*!< (@ 0x10001000) UICR Structure */
  507. __IM uint32_t RESERVED[5];
  508. __IOM uint32_t NRFFW[15]; /*!< (@ 0x00000014) Description collection: Reserved for Nordic firmware
  509. design */
  510. __IOM uint32_t NRFHW[12]; /*!< (@ 0x00000050) Description collection: Reserved for Nordic hardware
  511. design */
  512. __IOM uint32_t CUSTOMER[32]; /*!< (@ 0x00000080) Description collection: Reserved for customer */
  513. __IM uint32_t RESERVED1[64];
  514. __IOM uint32_t PSELRESET[2]; /*!< (@ 0x00000200) Description collection: Mapping of the nRESET
  515. function (see POWER chapter for details) */
  516. __IOM uint32_t APPROTECT; /*!< (@ 0x00000208) Access port protection */
  517. } NRF_UICR_Type; /*!< Size = 524 (0x20c) */
  518. /* =========================================================================================================================== */
  519. /* ================ BPROT ================ */
  520. /* =========================================================================================================================== */
  521. /**
  522. * @brief Block Protect (BPROT)
  523. */
  524. typedef struct { /*!< (@ 0x40000000) BPROT Structure */
  525. __IM uint32_t RESERVED[384];
  526. __IOM uint32_t CONFIG0; /*!< (@ 0x00000600) Block protect configuration register 0 */
  527. __IOM uint32_t CONFIG1; /*!< (@ 0x00000604) Block protect configuration register 1 */
  528. __IOM uint32_t DISABLEINDEBUG; /*!< (@ 0x00000608) Disable protection mechanism in debug mode */
  529. } NRF_BPROT_Type; /*!< Size = 1548 (0x60c) */
  530. /* =========================================================================================================================== */
  531. /* ================ CLOCK ================ */
  532. /* =========================================================================================================================== */
  533. /**
  534. * @brief Clock control (CLOCK)
  535. */
  536. typedef struct { /*!< (@ 0x40000000) CLOCK Structure */
  537. __OM uint32_t TASKS_HFCLKSTART; /*!< (@ 0x00000000) Start HFCLK crystal oscillator */
  538. __OM uint32_t TASKS_HFCLKSTOP; /*!< (@ 0x00000004) Stop HFCLK crystal oscillator */
  539. __OM uint32_t TASKS_LFCLKSTART; /*!< (@ 0x00000008) Start LFCLK source */
  540. __OM uint32_t TASKS_LFCLKSTOP; /*!< (@ 0x0000000C) Stop LFCLK source */
  541. __OM uint32_t TASKS_CAL; /*!< (@ 0x00000010) Start calibration of LFRC oscillator */
  542. __OM uint32_t TASKS_CTSTART; /*!< (@ 0x00000014) Start calibration timer */
  543. __OM uint32_t TASKS_CTSTOP; /*!< (@ 0x00000018) Stop calibration timer */
  544. __IM uint32_t RESERVED[57];
  545. __IOM uint32_t EVENTS_HFCLKSTARTED; /*!< (@ 0x00000100) HFCLK oscillator started */
  546. __IOM uint32_t EVENTS_LFCLKSTARTED; /*!< (@ 0x00000104) LFCLK started */
  547. __IM uint32_t RESERVED1;
  548. __IOM uint32_t EVENTS_DONE; /*!< (@ 0x0000010C) Calibration of LFCLK RC oscillator complete event */
  549. __IOM uint32_t EVENTS_CTTO; /*!< (@ 0x00000110) Calibration timer timeout */
  550. __IM uint32_t RESERVED2[124];
  551. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  552. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  553. __IM uint32_t RESERVED3[63];
  554. __IM uint32_t HFCLKRUN; /*!< (@ 0x00000408) Status indicating that HFCLKSTART task has been
  555. triggered */
  556. __IM uint32_t HFCLKSTAT; /*!< (@ 0x0000040C) HFCLK status */
  557. __IM uint32_t RESERVED4;
  558. __IM uint32_t LFCLKRUN; /*!< (@ 0x00000414) Status indicating that LFCLKSTART task has been
  559. triggered */
  560. __IM uint32_t LFCLKSTAT; /*!< (@ 0x00000418) LFCLK status */
  561. __IM uint32_t LFCLKSRCCOPY; /*!< (@ 0x0000041C) Copy of LFCLKSRC register, set when LFCLKSTART
  562. task was triggered */
  563. __IM uint32_t RESERVED5[62];
  564. __IOM uint32_t LFCLKSRC; /*!< (@ 0x00000518) Clock source for the LFCLK */
  565. __IM uint32_t RESERVED6[7];
  566. __IOM uint32_t CTIV; /*!< (@ 0x00000538) Calibration timer interval */
  567. } NRF_CLOCK_Type; /*!< Size = 1340 (0x53c) */
  568. /* =========================================================================================================================== */
  569. /* ================ POWER ================ */
  570. /* =========================================================================================================================== */
  571. /**
  572. * @brief Power control (POWER)
  573. */
  574. typedef struct { /*!< (@ 0x40000000) POWER Structure */
  575. __IM uint32_t RESERVED[30];
  576. __OM uint32_t TASKS_CONSTLAT; /*!< (@ 0x00000078) Enable Constant Latency mode */
  577. __OM uint32_t TASKS_LOWPWR; /*!< (@ 0x0000007C) Enable Low-power mode (variable latency) */
  578. __IM uint32_t RESERVED1[34];
  579. __IOM uint32_t EVENTS_POFWARN; /*!< (@ 0x00000108) Power failure warning */
  580. __IM uint32_t RESERVED2[2];
  581. __IOM uint32_t EVENTS_SLEEPENTER; /*!< (@ 0x00000114) CPU entered WFI/WFE sleep */
  582. __IOM uint32_t EVENTS_SLEEPEXIT; /*!< (@ 0x00000118) CPU exited WFI/WFE sleep */
  583. __IM uint32_t RESERVED3[122];
  584. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  585. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  586. __IM uint32_t RESERVED4[61];
  587. __IOM uint32_t RESETREAS; /*!< (@ 0x00000400) Reset reason */
  588. __IM uint32_t RESERVED5[63];
  589. __OM uint32_t SYSTEMOFF; /*!< (@ 0x00000500) System OFF register */
  590. __IM uint32_t RESERVED6[3];
  591. __IOM uint32_t POFCON; /*!< (@ 0x00000510) Power failure comparator configuration */
  592. __IM uint32_t RESERVED7[2];
  593. __IOM uint32_t GPREGRET; /*!< (@ 0x0000051C) General purpose retention register */
  594. __IOM uint32_t GPREGRET2; /*!< (@ 0x00000520) General purpose retention register */
  595. __IM uint32_t RESERVED8[21];
  596. __IOM uint32_t DCDCEN; /*!< (@ 0x00000578) DC/DC enable register */
  597. __IM uint32_t RESERVED9[225];
  598. __IOM POWER_RAM_Type RAM[8]; /*!< (@ 0x00000900) Unspecified */
  599. } NRF_POWER_Type; /*!< Size = 2432 (0x980) */
  600. /* =========================================================================================================================== */
  601. /* ================ P0 ================ */
  602. /* =========================================================================================================================== */
  603. /**
  604. * @brief GPIO Port (P0)
  605. */
  606. typedef struct { /*!< (@ 0x50000000) P0 Structure */
  607. __IM uint32_t RESERVED[321];
  608. __IOM uint32_t OUT; /*!< (@ 0x00000504) Write GPIO port */
  609. __IOM uint32_t OUTSET; /*!< (@ 0x00000508) Set individual bits in GPIO port */
  610. __IOM uint32_t OUTCLR; /*!< (@ 0x0000050C) Clear individual bits in GPIO port */
  611. __IM uint32_t IN; /*!< (@ 0x00000510) Read GPIO port */
  612. __IOM uint32_t DIR; /*!< (@ 0x00000514) Direction of GPIO pins */
  613. __IOM uint32_t DIRSET; /*!< (@ 0x00000518) DIR set register */
  614. __IOM uint32_t DIRCLR; /*!< (@ 0x0000051C) DIR clear register */
  615. __IOM uint32_t LATCH; /*!< (@ 0x00000520) Latch register indicating what GPIO pins that
  616. have met the criteria set in the PIN_CNF[n].SENSE
  617. registers */
  618. __IOM uint32_t DETECTMODE; /*!< (@ 0x00000524) Select between default DETECT signal behaviour
  619. and LDETECT mode */
  620. __IM uint32_t RESERVED1[118];
  621. __IOM uint32_t PIN_CNF[32]; /*!< (@ 0x00000700) Description collection: Configuration of GPIO
  622. pins */
  623. } NRF_GPIO_Type; /*!< Size = 1920 (0x780) */
  624. /* =========================================================================================================================== */
  625. /* ================ RADIO ================ */
  626. /* =========================================================================================================================== */
  627. /**
  628. * @brief 2.4 GHz radio (RADIO)
  629. */
  630. typedef struct { /*!< (@ 0x40001000) RADIO Structure */
  631. __OM uint32_t TASKS_TXEN; /*!< (@ 0x00000000) Enable RADIO in TX mode */
  632. __OM uint32_t TASKS_RXEN; /*!< (@ 0x00000004) Enable RADIO in RX mode */
  633. __OM uint32_t TASKS_START; /*!< (@ 0x00000008) Start RADIO */
  634. __OM uint32_t TASKS_STOP; /*!< (@ 0x0000000C) Stop RADIO */
  635. __OM uint32_t TASKS_DISABLE; /*!< (@ 0x00000010) Disable RADIO */
  636. __OM uint32_t TASKS_RSSISTART; /*!< (@ 0x00000014) Start the RSSI and take one single sample of
  637. the receive signal strength */
  638. __OM uint32_t TASKS_RSSISTOP; /*!< (@ 0x00000018) Stop the RSSI measurement */
  639. __OM uint32_t TASKS_BCSTART; /*!< (@ 0x0000001C) Start the bit counter */
  640. __OM uint32_t TASKS_BCSTOP; /*!< (@ 0x00000020) Stop the bit counter */
  641. __OM uint32_t TASKS_EDSTART; /*!< (@ 0x00000024) Start the energy detect measurement used in IEEE
  642. 802.15.4 mode */
  643. __OM uint32_t TASKS_EDSTOP; /*!< (@ 0x00000028) Stop the energy detect measurement */
  644. __OM uint32_t TASKS_CCASTART; /*!< (@ 0x0000002C) Start the clear channel assessment used in IEEE
  645. 802.15.4 mode */
  646. __OM uint32_t TASKS_CCASTOP; /*!< (@ 0x00000030) Stop the clear channel assessment */
  647. __IM uint32_t RESERVED[51];
  648. __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) RADIO has ramped up and is ready to be started */
  649. __IOM uint32_t EVENTS_ADDRESS; /*!< (@ 0x00000104) Address sent or received */
  650. __IOM uint32_t EVENTS_PAYLOAD; /*!< (@ 0x00000108) Packet payload sent or received */
  651. __IOM uint32_t EVENTS_END; /*!< (@ 0x0000010C) Packet sent or received */
  652. __IOM uint32_t EVENTS_DISABLED; /*!< (@ 0x00000110) RADIO has been disabled */
  653. __IOM uint32_t EVENTS_DEVMATCH; /*!< (@ 0x00000114) A device address match occurred on the last received
  654. packet */
  655. __IOM uint32_t EVENTS_DEVMISS; /*!< (@ 0x00000118) No device address match occurred on the last
  656. received packet */
  657. __IOM uint32_t EVENTS_RSSIEND; /*!< (@ 0x0000011C) Sampling of receive signal strength complete */
  658. __IM uint32_t RESERVED1[2];
  659. __IOM uint32_t EVENTS_BCMATCH; /*!< (@ 0x00000128) Bit counter reached bit count value */
  660. __IM uint32_t RESERVED2;
  661. __IOM uint32_t EVENTS_CRCOK; /*!< (@ 0x00000130) Packet received with CRC ok */
  662. __IOM uint32_t EVENTS_CRCERROR; /*!< (@ 0x00000134) Packet received with CRC error */
  663. __IOM uint32_t EVENTS_FRAMESTART; /*!< (@ 0x00000138) IEEE 802.15.4 length field received */
  664. __IOM uint32_t EVENTS_EDEND; /*!< (@ 0x0000013C) Sampling of energy detection complete. A new
  665. ED sample is ready for readout from the
  666. RADIO.EDSAMPLE register. */
  667. __IOM uint32_t EVENTS_EDSTOPPED; /*!< (@ 0x00000140) The sampling of energy detection has stopped */
  668. __IOM uint32_t EVENTS_CCAIDLE; /*!< (@ 0x00000144) Wireless medium in idle - clear to send */
  669. __IOM uint32_t EVENTS_CCABUSY; /*!< (@ 0x00000148) Wireless medium busy - do not send */
  670. __IOM uint32_t EVENTS_CCASTOPPED; /*!< (@ 0x0000014C) The CCA has stopped */
  671. __IOM uint32_t EVENTS_RATEBOOST; /*!< (@ 0x00000150) Ble_LR CI field received, receive mode is changed
  672. from Ble_LR125Kbit to Ble_LR500Kbit. */
  673. __IOM uint32_t EVENTS_TXREADY; /*!< (@ 0x00000154) RADIO has ramped up and is ready to be started
  674. TX path */
  675. __IOM uint32_t EVENTS_RXREADY; /*!< (@ 0x00000158) RADIO has ramped up and is ready to be started
  676. RX path */
  677. __IOM uint32_t EVENTS_MHRMATCH; /*!< (@ 0x0000015C) MAC header match found */
  678. __IM uint32_t RESERVED3[3];
  679. __IOM uint32_t EVENTS_PHYEND; /*!< (@ 0x0000016C) Generated in Ble_LR125Kbit, Ble_LR500Kbit and
  680. Ieee802154_250Kbit modes when last bit is
  681. sent on air. */
  682. __IOM uint32_t EVENTS_CTEPRESENT; /*!< (@ 0x00000170) CTE is present (early warning right after receiving
  683. CTEInfo byte) */
  684. __IM uint32_t RESERVED4[35];
  685. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  686. __IM uint32_t RESERVED5[64];
  687. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  688. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  689. __IM uint32_t RESERVED6[61];
  690. __IM uint32_t CRCSTATUS; /*!< (@ 0x00000400) CRC status */
  691. __IM uint32_t RESERVED7;
  692. __IM uint32_t RXMATCH; /*!< (@ 0x00000408) Received address */
  693. __IM uint32_t RXCRC; /*!< (@ 0x0000040C) CRC field of previously received packet */
  694. __IM uint32_t DAI; /*!< (@ 0x00000410) Device address match index */
  695. __IM uint32_t PDUSTAT; /*!< (@ 0x00000414) Payload status */
  696. __IM uint32_t RESERVED8[13];
  697. __IM uint32_t CTESTATUS; /*!< (@ 0x0000044C) CTEInfo parsed from received packet */
  698. __IM uint32_t RESERVED9[2];
  699. __IM uint32_t DFESTATUS; /*!< (@ 0x00000458) DFE status information */
  700. __IM uint32_t RESERVED10[42];
  701. __IOM uint32_t PACKETPTR; /*!< (@ 0x00000504) Packet pointer */
  702. __IOM uint32_t FREQUENCY; /*!< (@ 0x00000508) Frequency */
  703. __IOM uint32_t TXPOWER; /*!< (@ 0x0000050C) Output power */
  704. __IOM uint32_t MODE; /*!< (@ 0x00000510) Data rate and modulation */
  705. __IOM uint32_t PCNF0; /*!< (@ 0x00000514) Packet configuration register 0 */
  706. __IOM uint32_t PCNF1; /*!< (@ 0x00000518) Packet configuration register 1 */
  707. __IOM uint32_t BASE0; /*!< (@ 0x0000051C) Base address 0 */
  708. __IOM uint32_t BASE1; /*!< (@ 0x00000520) Base address 1 */
  709. __IOM uint32_t PREFIX0; /*!< (@ 0x00000524) Prefixes bytes for logical addresses 0-3 */
  710. __IOM uint32_t PREFIX1; /*!< (@ 0x00000528) Prefixes bytes for logical addresses 4-7 */
  711. __IOM uint32_t TXADDRESS; /*!< (@ 0x0000052C) Transmit address select */
  712. __IOM uint32_t RXADDRESSES; /*!< (@ 0x00000530) Receive address select */
  713. __IOM uint32_t CRCCNF; /*!< (@ 0x00000534) CRC configuration */
  714. __IOM uint32_t CRCPOLY; /*!< (@ 0x00000538) CRC polynomial */
  715. __IOM uint32_t CRCINIT; /*!< (@ 0x0000053C) CRC initial value */
  716. __IM uint32_t RESERVED11;
  717. __IOM uint32_t TIFS; /*!< (@ 0x00000544) Interframe spacing in us */
  718. __IM uint32_t RSSISAMPLE; /*!< (@ 0x00000548) RSSI sample */
  719. __IM uint32_t RESERVED12;
  720. __IM uint32_t STATE; /*!< (@ 0x00000550) Current radio state */
  721. __IOM uint32_t DATAWHITEIV; /*!< (@ 0x00000554) Data whitening initial value */
  722. __IM uint32_t RESERVED13[2];
  723. __IOM uint32_t BCC; /*!< (@ 0x00000560) Bit counter compare */
  724. __IM uint32_t RESERVED14[39];
  725. __IOM uint32_t DAB[8]; /*!< (@ 0x00000600) Description collection: Device address base segment
  726. n */
  727. __IOM uint32_t DAP[8]; /*!< (@ 0x00000620) Description collection: Device address prefix
  728. n */
  729. __IOM uint32_t DACNF; /*!< (@ 0x00000640) Device address match configuration */
  730. __IOM uint32_t MHRMATCHCONF; /*!< (@ 0x00000644) Search pattern configuration */
  731. __IOM uint32_t MHRMATCHMAS; /*!< (@ 0x00000648) Pattern mask */
  732. __IM uint32_t RESERVED15;
  733. __IOM uint32_t MODECNF0; /*!< (@ 0x00000650) Radio mode configuration register 0 */
  734. __IM uint32_t RESERVED16[3];
  735. __IOM uint32_t SFD; /*!< (@ 0x00000660) IEEE 802.15.4 start of frame delimiter */
  736. __IOM uint32_t EDCNT; /*!< (@ 0x00000664) IEEE 802.15.4 energy detect loop count */
  737. __IOM uint32_t EDSAMPLE; /*!< (@ 0x00000668) IEEE 802.15.4 energy detect level */
  738. __IOM uint32_t CCACTRL; /*!< (@ 0x0000066C) IEEE 802.15.4 clear channel assessment control */
  739. __IM uint32_t RESERVED17[164];
  740. __IOM uint32_t DFEMODE; /*!< (@ 0x00000900) Whether to use Angle-of-Arrival (AOA) or Angle-of-Departure
  741. (AOD) */
  742. __IOM uint32_t CTEINLINECONF; /*!< (@ 0x00000904) Configuration for CTE inline mode */
  743. __IM uint32_t RESERVED18[2];
  744. __IOM uint32_t DFECTRL1; /*!< (@ 0x00000910) Various configuration for Direction finding */
  745. __IOM uint32_t DFECTRL2; /*!< (@ 0x00000914) Start offset for Direction finding */
  746. __IM uint32_t RESERVED19[4];
  747. __IOM uint32_t SWITCHPATTERN; /*!< (@ 0x00000928) GPIO patterns to be used for each antenna */
  748. __IOM uint32_t CLEARPATTERN; /*!< (@ 0x0000092C) Clear the GPIO pattern array for antenna control */
  749. __IOM RADIO_PSEL_Type PSEL; /*!< (@ 0x00000930) Unspecified */
  750. __IOM RADIO_DFEPACKET_Type DFEPACKET; /*!< (@ 0x00000950) DFE packet EasyDMA channel */
  751. __IM uint32_t RESERVED20[424];
  752. __IOM uint32_t POWER; /*!< (@ 0x00000FFC) Peripheral power control */
  753. } NRF_RADIO_Type; /*!< Size = 4096 (0x1000) */
  754. /* =========================================================================================================================== */
  755. /* ================ UART0 ================ */
  756. /* =========================================================================================================================== */
  757. /**
  758. * @brief Universal Asynchronous Receiver/Transmitter (UART0)
  759. */
  760. typedef struct { /*!< (@ 0x40002000) UART0 Structure */
  761. __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start UART receiver */
  762. __OM uint32_t TASKS_STOPRX; /*!< (@ 0x00000004) Stop UART receiver */
  763. __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start UART transmitter */
  764. __OM uint32_t TASKS_STOPTX; /*!< (@ 0x0000000C) Stop UART transmitter */
  765. __IM uint32_t RESERVED[3];
  766. __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend UART */
  767. __IM uint32_t RESERVED1[56];
  768. __IOM uint32_t EVENTS_CTS; /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send. */
  769. __IOM uint32_t EVENTS_NCTS; /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send. */
  770. __IOM uint32_t EVENTS_RXDRDY; /*!< (@ 0x00000108) Data received in RXD */
  771. __IM uint32_t RESERVED2[4];
  772. __IOM uint32_t EVENTS_TXDRDY; /*!< (@ 0x0000011C) Data sent from TXD */
  773. __IM uint32_t RESERVED3;
  774. __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) Error detected */
  775. __IM uint32_t RESERVED4[7];
  776. __IOM uint32_t EVENTS_RXTO; /*!< (@ 0x00000144) Receiver timeout */
  777. __IM uint32_t RESERVED5[46];
  778. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  779. __IM uint32_t RESERVED6[64];
  780. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  781. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  782. __IM uint32_t RESERVED7[93];
  783. __IOM uint32_t ERRORSRC; /*!< (@ 0x00000480) Error source */
  784. __IM uint32_t RESERVED8[31];
  785. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable UART */
  786. __IM uint32_t RESERVED9;
  787. __IOM UART_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
  788. __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */
  789. __OM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */
  790. __IM uint32_t RESERVED10;
  791. __IOM uint32_t BAUDRATE; /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source
  792. selected. */
  793. __IM uint32_t RESERVED11[17];
  794. __IOM uint32_t CONFIG; /*!< (@ 0x0000056C) Configuration of parity and hardware flow control */
  795. } NRF_UART_Type; /*!< Size = 1392 (0x570) */
  796. /* =========================================================================================================================== */
  797. /* ================ UARTE0 ================ */
  798. /* =========================================================================================================================== */
  799. /**
  800. * @brief UART with EasyDMA (UARTE0)
  801. */
  802. typedef struct { /*!< (@ 0x40002000) UARTE0 Structure */
  803. __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start UART receiver */
  804. __OM uint32_t TASKS_STOPRX; /*!< (@ 0x00000004) Stop UART receiver */
  805. __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start UART transmitter */
  806. __OM uint32_t TASKS_STOPTX; /*!< (@ 0x0000000C) Stop UART transmitter */
  807. __IM uint32_t RESERVED[7];
  808. __OM uint32_t TASKS_FLUSHRX; /*!< (@ 0x0000002C) Flush RX FIFO into RX buffer */
  809. __IM uint32_t RESERVED1[52];
  810. __IOM uint32_t EVENTS_CTS; /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send. */
  811. __IOM uint32_t EVENTS_NCTS; /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send. */
  812. __IOM uint32_t EVENTS_RXDRDY; /*!< (@ 0x00000108) Data received in RXD (but potentially not yet
  813. transferred to Data RAM) */
  814. __IM uint32_t RESERVED2;
  815. __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) Receive buffer is filled up */
  816. __IM uint32_t RESERVED3[2];
  817. __IOM uint32_t EVENTS_TXDRDY; /*!< (@ 0x0000011C) Data sent from TXD */
  818. __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000120) Last TX byte transmitted */
  819. __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) Error detected */
  820. __IM uint32_t RESERVED4[7];
  821. __IOM uint32_t EVENTS_RXTO; /*!< (@ 0x00000144) Receiver timeout */
  822. __IM uint32_t RESERVED5;
  823. __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) UART receiver has started */
  824. __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) UART transmitter has started */
  825. __IM uint32_t RESERVED6;
  826. __IOM uint32_t EVENTS_TXSTOPPED; /*!< (@ 0x00000158) Transmitter stopped */
  827. __IM uint32_t RESERVED7[41];
  828. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  829. __IM uint32_t RESERVED8[63];
  830. __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
  831. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  832. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  833. __IM uint32_t RESERVED9[93];
  834. __IOM uint32_t ERRORSRC; /*!< (@ 0x00000480) Error source Note : this register is read / write
  835. one to clear. */
  836. __IM uint32_t RESERVED10[31];
  837. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable UART */
  838. __IM uint32_t RESERVED11;
  839. __IOM UARTE_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
  840. __IM uint32_t RESERVED12[3];
  841. __IOM uint32_t BAUDRATE; /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source
  842. selected. */
  843. __IM uint32_t RESERVED13[3];
  844. __IOM UARTE_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */
  845. __IM uint32_t RESERVED14;
  846. __IOM UARTE_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */
  847. __IM uint32_t RESERVED15[7];
  848. __IOM uint32_t CONFIG; /*!< (@ 0x0000056C) Configuration of parity and hardware flow control */
  849. } NRF_UARTE_Type; /*!< Size = 1392 (0x570) */
  850. /* =========================================================================================================================== */
  851. /* ================ SPI1 ================ */
  852. /* =========================================================================================================================== */
  853. /**
  854. * @brief Serial Peripheral Interface 0 (SPI1)
  855. */
  856. typedef struct { /*!< (@ 0x40003000) SPI1 Structure */
  857. __IM uint32_t RESERVED[66];
  858. __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000108) TXD byte sent and RXD byte received */
  859. __IM uint32_t RESERVED1[126];
  860. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  861. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  862. __IM uint32_t RESERVED2[125];
  863. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPI */
  864. __IM uint32_t RESERVED3;
  865. __IOM SPI_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
  866. __IM uint32_t RESERVED4;
  867. __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */
  868. __IOM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */
  869. __IM uint32_t RESERVED5;
  870. __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK
  871. source selected. */
  872. __IM uint32_t RESERVED6[11];
  873. __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */
  874. } NRF_SPI_Type; /*!< Size = 1368 (0x558) */
  875. /* =========================================================================================================================== */
  876. /* ================ SPIM1 ================ */
  877. /* =========================================================================================================================== */
  878. /**
  879. * @brief Serial Peripheral Interface Master with EasyDMA 0 (SPIM1)
  880. */
  881. typedef struct { /*!< (@ 0x40003000) SPIM1 Structure */
  882. __IM uint32_t RESERVED[4];
  883. __OM uint32_t TASKS_START; /*!< (@ 0x00000010) Start SPI transaction */
  884. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop SPI transaction */
  885. __IM uint32_t RESERVED1;
  886. __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend SPI transaction */
  887. __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume SPI transaction */
  888. __IM uint32_t RESERVED2[56];
  889. __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) SPI transaction has stopped */
  890. __IM uint32_t RESERVED3[2];
  891. __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) End of RXD buffer reached */
  892. __IM uint32_t RESERVED4;
  893. __IOM uint32_t EVENTS_END; /*!< (@ 0x00000118) End of RXD buffer and TXD buffer reached */
  894. __IM uint32_t RESERVED5;
  895. __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000120) End of TXD buffer reached */
  896. __IM uint32_t RESERVED6[10];
  897. __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x0000014C) Transaction started */
  898. __IM uint32_t RESERVED7[44];
  899. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  900. __IM uint32_t RESERVED8[64];
  901. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  902. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  903. __IM uint32_t RESERVED9[125];
  904. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPIM */
  905. __IM uint32_t RESERVED10;
  906. __IOM SPIM_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
  907. __IM uint32_t RESERVED11[4];
  908. __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK
  909. source selected. */
  910. __IM uint32_t RESERVED12[3];
  911. __IOM SPIM_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */
  912. __IOM SPIM_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */
  913. __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */
  914. __IM uint32_t RESERVED13[26];
  915. __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character. Character clocked out in
  916. case and over-read of the TXD buffer. */
  917. } NRF_SPIM_Type; /*!< Size = 1476 (0x5c4) */
  918. /* =========================================================================================================================== */
  919. /* ================ SPIS1 ================ */
  920. /* =========================================================================================================================== */
  921. /**
  922. * @brief SPI Slave 0 (SPIS1)
  923. */
  924. typedef struct { /*!< (@ 0x40003000) SPIS1 Structure */
  925. __IM uint32_t RESERVED[9];
  926. __OM uint32_t TASKS_ACQUIRE; /*!< (@ 0x00000024) Acquire SPI semaphore */
  927. __OM uint32_t TASKS_RELEASE; /*!< (@ 0x00000028) Release SPI semaphore, enabling the SPI slave
  928. to acquire it */
  929. __IM uint32_t RESERVED1[54];
  930. __IOM uint32_t EVENTS_END; /*!< (@ 0x00000104) Granted transaction completed */
  931. __IM uint32_t RESERVED2[2];
  932. __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) End of RXD buffer reached */
  933. __IM uint32_t RESERVED3[5];
  934. __IOM uint32_t EVENTS_ACQUIRED; /*!< (@ 0x00000128) Semaphore acquired */
  935. __IM uint32_t RESERVED4[53];
  936. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  937. __IM uint32_t RESERVED5[64];
  938. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  939. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  940. __IM uint32_t RESERVED6[61];
  941. __IM uint32_t SEMSTAT; /*!< (@ 0x00000400) Semaphore status register */
  942. __IM uint32_t RESERVED7[15];
  943. __IOM uint32_t STATUS; /*!< (@ 0x00000440) Status from last transaction */
  944. __IM uint32_t RESERVED8[47];
  945. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPI slave */
  946. __IM uint32_t RESERVED9;
  947. __IOM SPIS_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
  948. __IM uint32_t RESERVED10[7];
  949. __IOM SPIS_RXD_Type RXD; /*!< (@ 0x00000534) Unspecified */
  950. __IOM SPIS_TXD_Type TXD; /*!< (@ 0x00000544) Unspecified */
  951. __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */
  952. __IM uint32_t RESERVED11;
  953. __IOM uint32_t DEF; /*!< (@ 0x0000055C) Default character. Character clocked out in case
  954. of an ignored transaction. */
  955. __IM uint32_t RESERVED12[24];
  956. __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character */
  957. } NRF_SPIS_Type; /*!< Size = 1476 (0x5c4) */
  958. /* =========================================================================================================================== */
  959. /* ================ TWI0 ================ */
  960. /* =========================================================================================================================== */
  961. /**
  962. * @brief I2C compatible Two-Wire Interface (TWI0)
  963. */
  964. typedef struct { /*!< (@ 0x40003000) TWI0 Structure */
  965. __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start TWI receive sequence */
  966. __IM uint32_t RESERVED;
  967. __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start TWI transmit sequence */
  968. __IM uint32_t RESERVED1[2];
  969. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction */
  970. __IM uint32_t RESERVED2;
  971. __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */
  972. __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */
  973. __IM uint32_t RESERVED3[56];
  974. __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */
  975. __IOM uint32_t EVENTS_RXDREADY; /*!< (@ 0x00000108) TWI RXD byte received */
  976. __IM uint32_t RESERVED4[4];
  977. __IOM uint32_t EVENTS_TXDSENT; /*!< (@ 0x0000011C) TWI TXD byte sent */
  978. __IM uint32_t RESERVED5;
  979. __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */
  980. __IM uint32_t RESERVED6[4];
  981. __IOM uint32_t EVENTS_BB; /*!< (@ 0x00000138) TWI byte boundary, generated before each byte
  982. that is sent or received */
  983. __IM uint32_t RESERVED7[3];
  984. __IOM uint32_t EVENTS_SUSPENDED; /*!< (@ 0x00000148) TWI entered the suspended state */
  985. __IM uint32_t RESERVED8[45];
  986. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  987. __IM uint32_t RESERVED9[64];
  988. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  989. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  990. __IM uint32_t RESERVED10[110];
  991. __IOM uint32_t ERRORSRC; /*!< (@ 0x000004C4) Error source */
  992. __IM uint32_t RESERVED11[14];
  993. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWI */
  994. __IM uint32_t RESERVED12;
  995. __IOM TWI_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
  996. __IM uint32_t RESERVED13[2];
  997. __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */
  998. __IOM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */
  999. __IM uint32_t RESERVED14;
  1000. __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK
  1001. source selected. */
  1002. __IM uint32_t RESERVED15[24];
  1003. __IOM uint32_t ADDRESS; /*!< (@ 0x00000588) Address used in the TWI transfer */
  1004. } NRF_TWI_Type; /*!< Size = 1420 (0x58c) */
  1005. /* =========================================================================================================================== */
  1006. /* ================ TWIM0 ================ */
  1007. /* =========================================================================================================================== */
  1008. /**
  1009. * @brief I2C compatible Two-Wire Master Interface with EasyDMA (TWIM0)
  1010. */
  1011. typedef struct { /*!< (@ 0x40003000) TWIM0 Structure */
  1012. __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start TWI receive sequence */
  1013. __IM uint32_t RESERVED;
  1014. __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start TWI transmit sequence */
  1015. __IM uint32_t RESERVED1[2];
  1016. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction. Must be issued while the
  1017. TWI master is not suspended. */
  1018. __IM uint32_t RESERVED2;
  1019. __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */
  1020. __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */
  1021. __IM uint32_t RESERVED3[56];
  1022. __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */
  1023. __IM uint32_t RESERVED4[7];
  1024. __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */
  1025. __IM uint32_t RESERVED5[8];
  1026. __IOM uint32_t EVENTS_SUSPENDED; /*!< (@ 0x00000148) Last byte has been sent out after the SUSPEND
  1027. task has been issued, TWI traffic is now
  1028. suspended. */
  1029. __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) Receive sequence started */
  1030. __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) Transmit sequence started */
  1031. __IM uint32_t RESERVED6[2];
  1032. __IOM uint32_t EVENTS_LASTRX; /*!< (@ 0x0000015C) Byte boundary, starting to receive the last byte */
  1033. __IOM uint32_t EVENTS_LASTTX; /*!< (@ 0x00000160) Byte boundary, starting to transmit the last
  1034. byte */
  1035. __IM uint32_t RESERVED7[39];
  1036. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  1037. __IM uint32_t RESERVED8[63];
  1038. __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
  1039. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1040. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1041. __IM uint32_t RESERVED9[110];
  1042. __IOM uint32_t ERRORSRC; /*!< (@ 0x000004C4) Error source */
  1043. __IM uint32_t RESERVED10[14];
  1044. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWIM */
  1045. __IM uint32_t RESERVED11;
  1046. __IOM TWIM_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
  1047. __IM uint32_t RESERVED12[5];
  1048. __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK
  1049. source selected. */
  1050. __IM uint32_t RESERVED13[3];
  1051. __IOM TWIM_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */
  1052. __IOM TWIM_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */
  1053. __IM uint32_t RESERVED14[13];
  1054. __IOM uint32_t ADDRESS; /*!< (@ 0x00000588) Address used in the TWI transfer */
  1055. } NRF_TWIM_Type; /*!< Size = 1420 (0x58c) */
  1056. /* =========================================================================================================================== */
  1057. /* ================ TWIS0 ================ */
  1058. /* =========================================================================================================================== */
  1059. /**
  1060. * @brief I2C compatible Two-Wire Slave Interface with EasyDMA (TWIS0)
  1061. */
  1062. typedef struct { /*!< (@ 0x40003000) TWIS0 Structure */
  1063. __IM uint32_t RESERVED[5];
  1064. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction */
  1065. __IM uint32_t RESERVED1;
  1066. __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */
  1067. __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */
  1068. __IM uint32_t RESERVED2[3];
  1069. __OM uint32_t TASKS_PREPARERX; /*!< (@ 0x00000030) Prepare the TWI slave to respond to a write command */
  1070. __OM uint32_t TASKS_PREPARETX; /*!< (@ 0x00000034) Prepare the TWI slave to respond to a read command */
  1071. __IM uint32_t RESERVED3[51];
  1072. __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */
  1073. __IM uint32_t RESERVED4[7];
  1074. __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */
  1075. __IM uint32_t RESERVED5[9];
  1076. __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) Receive sequence started */
  1077. __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) Transmit sequence started */
  1078. __IM uint32_t RESERVED6[4];
  1079. __IOM uint32_t EVENTS_WRITE; /*!< (@ 0x00000164) Write command received */
  1080. __IOM uint32_t EVENTS_READ; /*!< (@ 0x00000168) Read command received */
  1081. __IM uint32_t RESERVED7[37];
  1082. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  1083. __IM uint32_t RESERVED8[63];
  1084. __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
  1085. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1086. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1087. __IM uint32_t RESERVED9[113];
  1088. __IOM uint32_t ERRORSRC; /*!< (@ 0x000004D0) Error source */
  1089. __IM uint32_t MATCH; /*!< (@ 0x000004D4) Status register indicating which address had
  1090. a match */
  1091. __IM uint32_t RESERVED10[10];
  1092. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWIS */
  1093. __IM uint32_t RESERVED11;
  1094. __IOM TWIS_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
  1095. __IM uint32_t RESERVED12[9];
  1096. __IOM TWIS_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */
  1097. __IOM TWIS_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */
  1098. __IM uint32_t RESERVED13[13];
  1099. __IOM uint32_t ADDRESS[2]; /*!< (@ 0x00000588) Description collection: TWI slave address n */
  1100. __IM uint32_t RESERVED14;
  1101. __IOM uint32_t CONFIG; /*!< (@ 0x00000594) Configuration register for the address match
  1102. mechanism */
  1103. __IM uint32_t RESERVED15[10];
  1104. __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character. Character sent out in case
  1105. of an over-read of the transmit buffer. */
  1106. } NRF_TWIS_Type; /*!< Size = 1476 (0x5c4) */
  1107. /* =========================================================================================================================== */
  1108. /* ================ GPIOTE ================ */
  1109. /* =========================================================================================================================== */
  1110. /**
  1111. * @brief GPIO Tasks and Events (GPIOTE)
  1112. */
  1113. typedef struct { /*!< (@ 0x40006000) GPIOTE Structure */
  1114. __OM uint32_t TASKS_OUT[8]; /*!< (@ 0x00000000) Description collection: Task for writing to pin
  1115. specified in CONFIG[n].PSEL. Action on pin
  1116. is configured in CONFIG[n].POLARITY. */
  1117. __IM uint32_t RESERVED[4];
  1118. __OM uint32_t TASKS_SET[8]; /*!< (@ 0x00000030) Description collection: Task for writing to pin
  1119. specified in CONFIG[n].PSEL. Action on pin
  1120. is to set it high. */
  1121. __IM uint32_t RESERVED1[4];
  1122. __OM uint32_t TASKS_CLR[8]; /*!< (@ 0x00000060) Description collection: Task for writing to pin
  1123. specified in CONFIG[n].PSEL. Action on pin
  1124. is to set it low. */
  1125. __IM uint32_t RESERVED2[32];
  1126. __IOM uint32_t EVENTS_IN[8]; /*!< (@ 0x00000100) Description collection: Event generated from
  1127. pin specified in CONFIG[n].PSEL */
  1128. __IM uint32_t RESERVED3[23];
  1129. __IOM uint32_t EVENTS_PORT; /*!< (@ 0x0000017C) Event generated from multiple input GPIO pins
  1130. with SENSE mechanism enabled */
  1131. __IM uint32_t RESERVED4[97];
  1132. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1133. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1134. __IM uint32_t RESERVED5[129];
  1135. __IOM uint32_t CONFIG[8]; /*!< (@ 0x00000510) Description collection: Configuration for OUT[n],
  1136. SET[n] and CLR[n] tasks and IN[n] event */
  1137. } NRF_GPIOTE_Type; /*!< Size = 1328 (0x530) */
  1138. /* =========================================================================================================================== */
  1139. /* ================ SAADC ================ */
  1140. /* =========================================================================================================================== */
  1141. /**
  1142. * @brief Analog to Digital Converter (SAADC)
  1143. */
  1144. typedef struct { /*!< (@ 0x40007000) SAADC Structure */
  1145. __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start the ADC and prepare the result buffer in
  1146. RAM */
  1147. __OM uint32_t TASKS_SAMPLE; /*!< (@ 0x00000004) Take one ADC sample, if scan is enabled all channels
  1148. are sampled */
  1149. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop the ADC and terminate any on-going conversion */
  1150. __OM uint32_t TASKS_CALIBRATEOFFSET; /*!< (@ 0x0000000C) Starts offset auto-calibration */
  1151. __IM uint32_t RESERVED[60];
  1152. __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000100) The ADC has started */
  1153. __IOM uint32_t EVENTS_END; /*!< (@ 0x00000104) The ADC has filled up the Result buffer */
  1154. __IOM uint32_t EVENTS_DONE; /*!< (@ 0x00000108) A conversion task has been completed. Depending
  1155. on the mode, multiple conversions might
  1156. be needed for a result to be transferred
  1157. to RAM. */
  1158. __IOM uint32_t EVENTS_RESULTDONE; /*!< (@ 0x0000010C) A result is ready to get transferred to RAM. */
  1159. __IOM uint32_t EVENTS_CALIBRATEDONE; /*!< (@ 0x00000110) Calibration is complete */
  1160. __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000114) The ADC has stopped */
  1161. __IOM SAADC_EVENTS_CH_Type EVENTS_CH[8]; /*!< (@ 0x00000118) Peripheral events. */
  1162. __IM uint32_t RESERVED1[106];
  1163. __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
  1164. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1165. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1166. __IM uint32_t RESERVED2[61];
  1167. __IM uint32_t STATUS; /*!< (@ 0x00000400) Status */
  1168. __IM uint32_t RESERVED3[63];
  1169. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable or disable ADC */
  1170. __IM uint32_t RESERVED4[3];
  1171. __IOM SAADC_CH_Type CH[8]; /*!< (@ 0x00000510) Unspecified */
  1172. __IM uint32_t RESERVED5[24];
  1173. __IOM uint32_t RESOLUTION; /*!< (@ 0x000005F0) Resolution configuration */
  1174. __IOM uint32_t OVERSAMPLE; /*!< (@ 0x000005F4) Oversampling configuration. OVERSAMPLE should
  1175. not be combined with SCAN. The RESOLUTION
  1176. is applied before averaging, thus for high
  1177. OVERSAMPLE a higher RESOLUTION should be
  1178. used. */
  1179. __IOM uint32_t SAMPLERATE; /*!< (@ 0x000005F8) Controls normal or continuous sample rate */
  1180. __IM uint32_t RESERVED6[12];
  1181. __IOM SAADC_RESULT_Type RESULT; /*!< (@ 0x0000062C) RESULT EasyDMA channel */
  1182. } NRF_SAADC_Type; /*!< Size = 1592 (0x638) */
  1183. /* =========================================================================================================================== */
  1184. /* ================ TIMER0 ================ */
  1185. /* =========================================================================================================================== */
  1186. /**
  1187. * @brief Timer/Counter 0 (TIMER0)
  1188. */
  1189. typedef struct { /*!< (@ 0x40008000) TIMER0 Structure */
  1190. __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start Timer */
  1191. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop Timer */
  1192. __OM uint32_t TASKS_COUNT; /*!< (@ 0x00000008) Increment Timer (Counter mode only) */
  1193. __OM uint32_t TASKS_CLEAR; /*!< (@ 0x0000000C) Clear time */
  1194. __OM uint32_t TASKS_SHUTDOWN; /*!< (@ 0x00000010) Deprecated register - Shut down timer */
  1195. __IM uint32_t RESERVED[11];
  1196. __OM uint32_t TASKS_CAPTURE[6]; /*!< (@ 0x00000040) Description collection: Capture Timer value to
  1197. CC[n] register */
  1198. __IM uint32_t RESERVED1[58];
  1199. __IOM uint32_t EVENTS_COMPARE[6]; /*!< (@ 0x00000140) Description collection: Compare event on CC[n]
  1200. match */
  1201. __IM uint32_t RESERVED2[42];
  1202. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  1203. __IM uint32_t RESERVED3[64];
  1204. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1205. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1206. __IM uint32_t RESERVED4[126];
  1207. __IOM uint32_t MODE; /*!< (@ 0x00000504) Timer mode selection */
  1208. __IOM uint32_t BITMODE; /*!< (@ 0x00000508) Configure the number of bits used by the TIMER */
  1209. __IM uint32_t RESERVED5;
  1210. __IOM uint32_t PRESCALER; /*!< (@ 0x00000510) Timer prescaler register */
  1211. __IM uint32_t RESERVED6[11];
  1212. __IOM uint32_t CC[6]; /*!< (@ 0x00000540) Description collection: Capture/Compare register
  1213. n */
  1214. } NRF_TIMER_Type; /*!< Size = 1368 (0x558) */
  1215. /* =========================================================================================================================== */
  1216. /* ================ RTC0 ================ */
  1217. /* =========================================================================================================================== */
  1218. /**
  1219. * @brief Real time counter 0 (RTC0)
  1220. */
  1221. typedef struct { /*!< (@ 0x4000B000) RTC0 Structure */
  1222. __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start RTC COUNTER */
  1223. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop RTC COUNTER */
  1224. __OM uint32_t TASKS_CLEAR; /*!< (@ 0x00000008) Clear RTC COUNTER */
  1225. __OM uint32_t TASKS_TRIGOVRFLW; /*!< (@ 0x0000000C) Set COUNTER to 0xFFFFF0 */
  1226. __IM uint32_t RESERVED[60];
  1227. __IOM uint32_t EVENTS_TICK; /*!< (@ 0x00000100) Event on COUNTER increment */
  1228. __IOM uint32_t EVENTS_OVRFLW; /*!< (@ 0x00000104) Event on COUNTER overflow */
  1229. __IM uint32_t RESERVED1[14];
  1230. __IOM uint32_t EVENTS_COMPARE[4]; /*!< (@ 0x00000140) Description collection: Compare event on CC[n]
  1231. match */
  1232. __IM uint32_t RESERVED2[109];
  1233. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1234. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1235. __IM uint32_t RESERVED3[13];
  1236. __IOM uint32_t EVTEN; /*!< (@ 0x00000340) Enable or disable event routing */
  1237. __IOM uint32_t EVTENSET; /*!< (@ 0x00000344) Enable event routing */
  1238. __IOM uint32_t EVTENCLR; /*!< (@ 0x00000348) Disable event routing */
  1239. __IM uint32_t RESERVED4[110];
  1240. __IM uint32_t COUNTER; /*!< (@ 0x00000504) Current COUNTER value */
  1241. __IOM uint32_t PRESCALER; /*!< (@ 0x00000508) 12 bit prescaler for COUNTER frequency (32768/(PRESCALER+1)).Mu
  1242. t be written when RTC is stopped */
  1243. __IM uint32_t RESERVED5[13];
  1244. __IOM uint32_t CC[4]; /*!< (@ 0x00000540) Description collection: Compare register n */
  1245. } NRF_RTC_Type; /*!< Size = 1360 (0x550) */
  1246. /* =========================================================================================================================== */
  1247. /* ================ TEMP ================ */
  1248. /* =========================================================================================================================== */
  1249. /**
  1250. * @brief Temperature Sensor (TEMP)
  1251. */
  1252. typedef struct { /*!< (@ 0x4000C000) TEMP Structure */
  1253. __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start temperature measurement */
  1254. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop temperature measurement */
  1255. __IM uint32_t RESERVED[62];
  1256. __IOM uint32_t EVENTS_DATARDY; /*!< (@ 0x00000100) Temperature measurement complete, data ready */
  1257. __IM uint32_t RESERVED1[128];
  1258. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1259. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1260. __IM uint32_t RESERVED2[127];
  1261. __IM int32_t TEMP; /*!< (@ 0x00000508) Temperature in degC (0.25deg steps) */
  1262. __IM uint32_t RESERVED3[5];
  1263. __IOM uint32_t A0; /*!< (@ 0x00000520) Slope of 1st piece wise linear function */
  1264. __IOM uint32_t A1; /*!< (@ 0x00000524) Slope of 2nd piece wise linear function */
  1265. __IOM uint32_t A2; /*!< (@ 0x00000528) Slope of 3rd piece wise linear function */
  1266. __IOM uint32_t A3; /*!< (@ 0x0000052C) Slope of 4th piece wise linear function */
  1267. __IOM uint32_t A4; /*!< (@ 0x00000530) Slope of 5th piece wise linear function */
  1268. __IOM uint32_t A5; /*!< (@ 0x00000534) Slope of 6th piece wise linear function */
  1269. __IM uint32_t RESERVED4[2];
  1270. __IOM uint32_t B0; /*!< (@ 0x00000540) y-intercept of 1st piece wise linear function */
  1271. __IOM uint32_t B1; /*!< (@ 0x00000544) y-intercept of 2nd piece wise linear function */
  1272. __IOM uint32_t B2; /*!< (@ 0x00000548) y-intercept of 3rd piece wise linear function */
  1273. __IOM uint32_t B3; /*!< (@ 0x0000054C) y-intercept of 4th piece wise linear function */
  1274. __IOM uint32_t B4; /*!< (@ 0x00000550) y-intercept of 5th piece wise linear function */
  1275. __IOM uint32_t B5; /*!< (@ 0x00000554) y-intercept of 6th piece wise linear function */
  1276. __IM uint32_t RESERVED5[2];
  1277. __IOM uint32_t T0; /*!< (@ 0x00000560) End point of 1st piece wise linear function */
  1278. __IOM uint32_t T1; /*!< (@ 0x00000564) End point of 2nd piece wise linear function */
  1279. __IOM uint32_t T2; /*!< (@ 0x00000568) End point of 3rd piece wise linear function */
  1280. __IOM uint32_t T3; /*!< (@ 0x0000056C) End point of 4th piece wise linear function */
  1281. __IOM uint32_t T4; /*!< (@ 0x00000570) End point of 5th piece wise linear function */
  1282. } NRF_TEMP_Type; /*!< Size = 1396 (0x574) */
  1283. /* =========================================================================================================================== */
  1284. /* ================ RNG ================ */
  1285. /* =========================================================================================================================== */
  1286. /**
  1287. * @brief Random Number Generator (RNG)
  1288. */
  1289. typedef struct { /*!< (@ 0x4000D000) RNG Structure */
  1290. __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Task starting the random number generator */
  1291. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Task stopping the random number generator */
  1292. __IM uint32_t RESERVED[62];
  1293. __IOM uint32_t EVENTS_VALRDY; /*!< (@ 0x00000100) Event being generated for every new random number
  1294. written to the VALUE register */
  1295. __IM uint32_t RESERVED1[63];
  1296. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  1297. __IM uint32_t RESERVED2[64];
  1298. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1299. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1300. __IM uint32_t RESERVED3[126];
  1301. __IOM uint32_t CONFIG; /*!< (@ 0x00000504) Configuration register */
  1302. __IM uint32_t VALUE; /*!< (@ 0x00000508) Output random number */
  1303. } NRF_RNG_Type; /*!< Size = 1292 (0x50c) */
  1304. /* =========================================================================================================================== */
  1305. /* ================ ECB ================ */
  1306. /* =========================================================================================================================== */
  1307. /**
  1308. * @brief AES ECB Mode Encryption (ECB)
  1309. */
  1310. typedef struct { /*!< (@ 0x4000E000) ECB Structure */
  1311. __OM uint32_t TASKS_STARTECB; /*!< (@ 0x00000000) Start ECB block encrypt */
  1312. __OM uint32_t TASKS_STOPECB; /*!< (@ 0x00000004) Abort a possible executing ECB operation */
  1313. __IM uint32_t RESERVED[62];
  1314. __IOM uint32_t EVENTS_ENDECB; /*!< (@ 0x00000100) ECB block encrypt complete */
  1315. __IOM uint32_t EVENTS_ERRORECB; /*!< (@ 0x00000104) ECB block encrypt aborted because of a STOPECB
  1316. task or due to an error */
  1317. __IM uint32_t RESERVED1[127];
  1318. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1319. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1320. __IM uint32_t RESERVED2[126];
  1321. __IOM uint32_t ECBDATAPTR; /*!< (@ 0x00000504) ECB block encrypt memory pointers */
  1322. } NRF_ECB_Type; /*!< Size = 1288 (0x508) */
  1323. /* =========================================================================================================================== */
  1324. /* ================ AAR ================ */
  1325. /* =========================================================================================================================== */
  1326. /**
  1327. * @brief Accelerated Address Resolver (AAR)
  1328. */
  1329. typedef struct { /*!< (@ 0x4000F000) AAR Structure */
  1330. __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start resolving addresses based on IRKs specified
  1331. in the IRK data structure */
  1332. __IM uint32_t RESERVED;
  1333. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop resolving addresses */
  1334. __IM uint32_t RESERVED1[61];
  1335. __IOM uint32_t EVENTS_END; /*!< (@ 0x00000100) Address resolution procedure complete */
  1336. __IOM uint32_t EVENTS_RESOLVED; /*!< (@ 0x00000104) Address resolved */
  1337. __IOM uint32_t EVENTS_NOTRESOLVED; /*!< (@ 0x00000108) Address not resolved */
  1338. __IM uint32_t RESERVED2[126];
  1339. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1340. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1341. __IM uint32_t RESERVED3[61];
  1342. __IM uint32_t STATUS; /*!< (@ 0x00000400) Resolution status */
  1343. __IM uint32_t RESERVED4[63];
  1344. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable AAR */
  1345. __IOM uint32_t NIRK; /*!< (@ 0x00000504) Number of IRKs */
  1346. __IOM uint32_t IRKPTR; /*!< (@ 0x00000508) Pointer to IRK data structure */
  1347. __IM uint32_t RESERVED5;
  1348. __IOM uint32_t ADDRPTR; /*!< (@ 0x00000510) Pointer to the resolvable address */
  1349. __IOM uint32_t SCRATCHPTR; /*!< (@ 0x00000514) Pointer to data area used for temporary storage */
  1350. } NRF_AAR_Type; /*!< Size = 1304 (0x518) */
  1351. /* =========================================================================================================================== */
  1352. /* ================ CCM ================ */
  1353. /* =========================================================================================================================== */
  1354. /**
  1355. * @brief AES CCM Mode Encryption (CCM)
  1356. */
  1357. typedef struct { /*!< (@ 0x4000F000) CCM Structure */
  1358. __OM uint32_t TASKS_KSGEN; /*!< (@ 0x00000000) Start generation of key-stream. This operation
  1359. will stop by itself when completed. */
  1360. __OM uint32_t TASKS_CRYPT; /*!< (@ 0x00000004) Start encryption/decryption. This operation will
  1361. stop by itself when completed. */
  1362. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop encryption/decryption */
  1363. __OM uint32_t TASKS_RATEOVERRIDE; /*!< (@ 0x0000000C) Override DATARATE setting in MODE register with
  1364. the contents of the RATEOVERRIDE register
  1365. for any ongoing encryption/decryption */
  1366. __IM uint32_t RESERVED[60];
  1367. __IOM uint32_t EVENTS_ENDKSGEN; /*!< (@ 0x00000100) Key-stream generation complete */
  1368. __IOM uint32_t EVENTS_ENDCRYPT; /*!< (@ 0x00000104) Encrypt/decrypt complete */
  1369. __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000108) Deprecated register - CCM error event */
  1370. __IM uint32_t RESERVED1[61];
  1371. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  1372. __IM uint32_t RESERVED2[64];
  1373. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1374. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1375. __IM uint32_t RESERVED3[61];
  1376. __IM uint32_t MICSTATUS; /*!< (@ 0x00000400) MIC check result */
  1377. __IM uint32_t RESERVED4[63];
  1378. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable */
  1379. __IOM uint32_t MODE; /*!< (@ 0x00000504) Operation mode */
  1380. __IOM uint32_t CNFPTR; /*!< (@ 0x00000508) Pointer to data structure holding AES key and
  1381. NONCE vector */
  1382. __IOM uint32_t INPTR; /*!< (@ 0x0000050C) Input pointer */
  1383. __IOM uint32_t OUTPTR; /*!< (@ 0x00000510) Output pointer */
  1384. __IOM uint32_t SCRATCHPTR; /*!< (@ 0x00000514) Pointer to data area used for temporary storage */
  1385. __IOM uint32_t MAXPACKETSIZE; /*!< (@ 0x00000518) Length of key-stream generated when MODE.LENGTH
  1386. = Extended. */
  1387. __IOM uint32_t RATEOVERRIDE; /*!< (@ 0x0000051C) Data rate override setting. */
  1388. } NRF_CCM_Type; /*!< Size = 1312 (0x520) */
  1389. /* =========================================================================================================================== */
  1390. /* ================ WDT ================ */
  1391. /* =========================================================================================================================== */
  1392. /**
  1393. * @brief Watchdog Timer (WDT)
  1394. */
  1395. typedef struct { /*!< (@ 0x40010000) WDT Structure */
  1396. __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start the watchdog */
  1397. __IM uint32_t RESERVED[63];
  1398. __IOM uint32_t EVENTS_TIMEOUT; /*!< (@ 0x00000100) Watchdog timeout */
  1399. __IM uint32_t RESERVED1[128];
  1400. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1401. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1402. __IM uint32_t RESERVED2[61];
  1403. __IM uint32_t RUNSTATUS; /*!< (@ 0x00000400) Run status */
  1404. __IM uint32_t REQSTATUS; /*!< (@ 0x00000404) Request status */
  1405. __IM uint32_t RESERVED3[63];
  1406. __IOM uint32_t CRV; /*!< (@ 0x00000504) Counter reload value */
  1407. __IOM uint32_t RREN; /*!< (@ 0x00000508) Enable register for reload request registers */
  1408. __IOM uint32_t CONFIG; /*!< (@ 0x0000050C) Configuration register */
  1409. __IM uint32_t RESERVED4[60];
  1410. __OM uint32_t RR[8]; /*!< (@ 0x00000600) Description collection: Reload request n */
  1411. } NRF_WDT_Type; /*!< Size = 1568 (0x620) */
  1412. /* =========================================================================================================================== */
  1413. /* ================ QDEC ================ */
  1414. /* =========================================================================================================================== */
  1415. /**
  1416. * @brief Quadrature Decoder (QDEC)
  1417. */
  1418. typedef struct { /*!< (@ 0x40012000) QDEC Structure */
  1419. __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Task starting the quadrature decoder */
  1420. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Task stopping the quadrature decoder */
  1421. __OM uint32_t TASKS_READCLRACC; /*!< (@ 0x00000008) Read and clear ACC and ACCDBL */
  1422. __OM uint32_t TASKS_RDCLRACC; /*!< (@ 0x0000000C) Read and clear ACC */
  1423. __OM uint32_t TASKS_RDCLRDBL; /*!< (@ 0x00000010) Read and clear ACCDBL */
  1424. __IM uint32_t RESERVED[59];
  1425. __IOM uint32_t EVENTS_SAMPLERDY; /*!< (@ 0x00000100) Event being generated for every new sample value
  1426. written to the SAMPLE register */
  1427. __IOM uint32_t EVENTS_REPORTRDY; /*!< (@ 0x00000104) Non-null report ready */
  1428. __IOM uint32_t EVENTS_ACCOF; /*!< (@ 0x00000108) ACC or ACCDBL register overflow */
  1429. __IOM uint32_t EVENTS_DBLRDY; /*!< (@ 0x0000010C) Double displacement(s) detected */
  1430. __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000110) QDEC has been stopped */
  1431. __IM uint32_t RESERVED1[59];
  1432. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  1433. __IM uint32_t RESERVED2[64];
  1434. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1435. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1436. __IM uint32_t RESERVED3[125];
  1437. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable the quadrature decoder */
  1438. __IOM uint32_t LEDPOL; /*!< (@ 0x00000504) LED output pin polarity */
  1439. __IOM uint32_t SAMPLEPER; /*!< (@ 0x00000508) Sample period */
  1440. __IM int32_t SAMPLE; /*!< (@ 0x0000050C) Motion sample value */
  1441. __IOM uint32_t REPORTPER; /*!< (@ 0x00000510) Number of samples to be taken before REPORTRDY
  1442. and DBLRDY events can be generated */
  1443. __IM int32_t ACC; /*!< (@ 0x00000514) Register accumulating the valid transitions */
  1444. __IM int32_t ACCREAD; /*!< (@ 0x00000518) Snapshot of the ACC register, updated by the
  1445. READCLRACC or RDCLRACC task */
  1446. __IOM QDEC_PSEL_Type PSEL; /*!< (@ 0x0000051C) Unspecified */
  1447. __IOM uint32_t DBFEN; /*!< (@ 0x00000528) Enable input debounce filters */
  1448. __IM uint32_t RESERVED4[5];
  1449. __IOM uint32_t LEDPRE; /*!< (@ 0x00000540) Time period the LED is switched ON prior to sampling */
  1450. __IM uint32_t ACCDBL; /*!< (@ 0x00000544) Register accumulating the number of detected
  1451. double transitions */
  1452. __IM uint32_t ACCDBLREAD; /*!< (@ 0x00000548) Snapshot of the ACCDBL, updated by the READCLRACC
  1453. or RDCLRDBL task */
  1454. } NRF_QDEC_Type; /*!< Size = 1356 (0x54c) */
  1455. /* =========================================================================================================================== */
  1456. /* ================ COMP ================ */
  1457. /* =========================================================================================================================== */
  1458. /**
  1459. * @brief Comparator (COMP)
  1460. */
  1461. typedef struct { /*!< (@ 0x40013000) COMP Structure */
  1462. __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start comparator */
  1463. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop comparator */
  1464. __OM uint32_t TASKS_SAMPLE; /*!< (@ 0x00000008) Sample comparator value */
  1465. __IM uint32_t RESERVED[61];
  1466. __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) COMP is ready and output is valid */
  1467. __IOM uint32_t EVENTS_DOWN; /*!< (@ 0x00000104) Downward crossing */
  1468. __IOM uint32_t EVENTS_UP; /*!< (@ 0x00000108) Upward crossing */
  1469. __IOM uint32_t EVENTS_CROSS; /*!< (@ 0x0000010C) Downward or upward crossing */
  1470. __IM uint32_t RESERVED1[60];
  1471. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  1472. __IM uint32_t RESERVED2[63];
  1473. __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
  1474. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1475. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1476. __IM uint32_t RESERVED3[61];
  1477. __IM uint32_t RESULT; /*!< (@ 0x00000400) Compare result */
  1478. __IM uint32_t RESERVED4[63];
  1479. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) COMP enable */
  1480. __IOM uint32_t PSEL; /*!< (@ 0x00000504) Pin select */
  1481. __IOM uint32_t REFSEL; /*!< (@ 0x00000508) Reference source select for single-ended mode */
  1482. __IOM uint32_t EXTREFSEL; /*!< (@ 0x0000050C) External reference select */
  1483. __IM uint32_t RESERVED5[8];
  1484. __IOM uint32_t TH; /*!< (@ 0x00000530) Threshold configuration for hysteresis unit */
  1485. __IOM uint32_t MODE; /*!< (@ 0x00000534) Mode configuration */
  1486. __IOM uint32_t HYST; /*!< (@ 0x00000538) Comparator hysteresis enable */
  1487. } NRF_COMP_Type; /*!< Size = 1340 (0x53c) */
  1488. /* =========================================================================================================================== */
  1489. /* ================ EGU0 ================ */
  1490. /* =========================================================================================================================== */
  1491. /**
  1492. * @brief Event Generator Unit 0 (EGU0)
  1493. */
  1494. typedef struct { /*!< (@ 0x40014000) EGU0 Structure */
  1495. __OM uint32_t TASKS_TRIGGER[16]; /*!< (@ 0x00000000) Description collection: Trigger n for triggering
  1496. the corresponding TRIGGERED[n] event */
  1497. __IM uint32_t RESERVED[48];
  1498. __IOM uint32_t EVENTS_TRIGGERED[16]; /*!< (@ 0x00000100) Description collection: Event number n generated
  1499. by triggering the corresponding TRIGGER[n]
  1500. task */
  1501. __IM uint32_t RESERVED1[112];
  1502. __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
  1503. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1504. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1505. } NRF_EGU_Type; /*!< Size = 780 (0x30c) */
  1506. /* =========================================================================================================================== */
  1507. /* ================ SWI0 ================ */
  1508. /* =========================================================================================================================== */
  1509. /**
  1510. * @brief Software interrupt 0 (SWI0)
  1511. */
  1512. typedef struct { /*!< (@ 0x40014000) SWI0 Structure */
  1513. __IM uint32_t UNUSED; /*!< (@ 0x00000000) Unused. */
  1514. } NRF_SWI_Type; /*!< Size = 4 (0x4) */
  1515. /* =========================================================================================================================== */
  1516. /* ================ PWM0 ================ */
  1517. /* =========================================================================================================================== */
  1518. /**
  1519. * @brief Pulse width modulation unit (PWM0)
  1520. */
  1521. typedef struct { /*!< (@ 0x4001C000) PWM0 Structure */
  1522. __IM uint32_t RESERVED;
  1523. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops PWM pulse generation on all channels at
  1524. the end of current PWM period, and stops
  1525. sequence playback */
  1526. __OM uint32_t TASKS_SEQSTART[2]; /*!< (@ 0x00000008) Description collection: Loads the first PWM value
  1527. on all enabled channels from sequence n,
  1528. and starts playing that sequence at the
  1529. rate defined in SEQ[n]REFRESH and/or DECODER.MODE.
  1530. Causes PWM generation to start if not running. */
  1531. __OM uint32_t TASKS_NEXTSTEP; /*!< (@ 0x00000010) Steps by one value in the current sequence on
  1532. all enabled channels if DECODER.MODE=NextStep.
  1533. Does not cause PWM generation to start if
  1534. not running. */
  1535. __IM uint32_t RESERVED1[60];
  1536. __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) Response to STOP task, emitted when PWM pulses
  1537. are no longer generated */
  1538. __IOM uint32_t EVENTS_SEQSTARTED[2]; /*!< (@ 0x00000108) Description collection: First PWM period started
  1539. on sequence n */
  1540. __IOM uint32_t EVENTS_SEQEND[2]; /*!< (@ 0x00000110) Description collection: Emitted at end of every
  1541. sequence n, when last value from RAM has
  1542. been applied to wave counter */
  1543. __IOM uint32_t EVENTS_PWMPERIODEND; /*!< (@ 0x00000118) Emitted at the end of each PWM period */
  1544. __IOM uint32_t EVENTS_LOOPSDONE; /*!< (@ 0x0000011C) Concatenated sequences have been played the amount
  1545. of times defined in LOOP.CNT */
  1546. __IM uint32_t RESERVED2[56];
  1547. __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
  1548. __IM uint32_t RESERVED3[63];
  1549. __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
  1550. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1551. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1552. __IM uint32_t RESERVED4[125];
  1553. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) PWM module enable register */
  1554. __IOM uint32_t MODE; /*!< (@ 0x00000504) Selects operating mode of the wave counter */
  1555. __IOM uint32_t COUNTERTOP; /*!< (@ 0x00000508) Value up to which the pulse generator counter
  1556. counts */
  1557. __IOM uint32_t PRESCALER; /*!< (@ 0x0000050C) Configuration for PWM_CLK */
  1558. __IOM uint32_t DECODER; /*!< (@ 0x00000510) Configuration of the decoder */
  1559. __IOM uint32_t LOOP; /*!< (@ 0x00000514) Number of playbacks of a loop */
  1560. __IM uint32_t RESERVED5[2];
  1561. __IOM PWM_SEQ_Type SEQ[2]; /*!< (@ 0x00000520) Unspecified */
  1562. __IOM PWM_PSEL_Type PSEL; /*!< (@ 0x00000560) Unspecified */
  1563. } NRF_PWM_Type; /*!< Size = 1392 (0x570) */
  1564. /* =========================================================================================================================== */
  1565. /* ================ PDM ================ */
  1566. /* =========================================================================================================================== */
  1567. /**
  1568. * @brief Pulse Density Modulation (Digital Microphone) Interface (PDM)
  1569. */
  1570. typedef struct { /*!< (@ 0x4001D000) PDM Structure */
  1571. __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Starts continuous PDM transfer */
  1572. __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops PDM transfer */
  1573. __IM uint32_t RESERVED[62];
  1574. __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000100) PDM transfer has started */
  1575. __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) PDM transfer has finished */
  1576. __IOM uint32_t EVENTS_END; /*!< (@ 0x00000108) The PDM has written the last sample specified
  1577. by SAMPLE.MAXCNT (or the last sample after
  1578. a STOP task has been received) to Data RAM */
  1579. __IM uint32_t RESERVED1[125];
  1580. __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
  1581. __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
  1582. __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
  1583. __IM uint32_t RESERVED2[125];
  1584. __IOM uint32_t ENABLE; /*!< (@ 0x00000500) PDM module enable register */
  1585. __IOM uint32_t PDMCLKCTRL; /*!< (@ 0x00000504) PDM clock generator control */
  1586. __IOM uint32_t MODE; /*!< (@ 0x00000508) Defines the routing of the connected PDM microphones'
  1587. signals */
  1588. __IM uint32_t RESERVED3[3];
  1589. __IOM uint32_t GAINL; /*!< (@ 0x00000518) Left output gain adjustment */
  1590. __IOM uint32_t GAINR; /*!< (@ 0x0000051C) Right output gain adjustment */
  1591. __IM uint32_t RESERVED4[8];
  1592. __IOM PDM_PSEL_Type PSEL; /*!< (@ 0x00000540) Unspecified */
  1593. __IM uint32_t RESERVED5[6];
  1594. __IOM PDM_SAMPLE_Type SAMPLE; /*!< (@ 0x00000560) Unspecified */
  1595. } NRF_PDM_Type; /*!< Size = 1384 (0x568) */
  1596. /* =========================================================================================================================== */
  1597. /* ================ NVMC ================ */
  1598. /* =========================================================================================================================== */
  1599. /**
  1600. * @brief Non-volatile memory controller (NVMC)
  1601. */
  1602. typedef struct { /*!< (@ 0x4001E000) NVMC Structure */
  1603. __IM uint32_t RESERVED[256];
  1604. __IM uint32_t READY; /*!< (@ 0x00000400) Ready flag */
  1605. __IM uint32_t RESERVED1[64];
  1606. __IOM uint32_t CONFIG; /*!< (@ 0x00000504) Configuration register */
  1607. union {
  1608. __IOM uint32_t ERASEPAGE; /*!< (@ 0x00000508) Register for erasing a page in code area */
  1609. __IOM uint32_t ERASEPCR1; /*!< (@ 0x00000508) Deprecated register - Register for erasing a
  1610. page in code area. Equivalent to ERASEPAGE. */
  1611. };
  1612. __IOM uint32_t ERASEALL; /*!< (@ 0x0000050C) Register for erasing all non-volatile user memory */
  1613. __IOM uint32_t ERASEPCR0; /*!< (@ 0x00000510) Deprecated register - Register for erasing a
  1614. page in code area. Equivalent to ERASEPAGE. */
  1615. __IOM uint32_t ERASEUICR; /*!< (@ 0x00000514) Register for erasing user information configuration
  1616. registers */
  1617. __IOM uint32_t ERASEPAGEPARTIAL; /*!< (@ 0x00000518) Register for partial erase of a page in code
  1618. area */
  1619. __IOM uint32_t ERASEPAGEPARTIALCFG; /*!< (@ 0x0000051C) Register for partial erase configuration */
  1620. } NRF_NVMC_Type; /*!< Size = 1312 (0x520) */
  1621. /* =========================================================================================================================== */
  1622. /* ================ PPI ================ */
  1623. /* =========================================================================================================================== */
  1624. /**
  1625. * @brief Programmable Peripheral Interconnect (PPI)
  1626. */
  1627. typedef struct { /*!< (@ 0x4001F000) PPI Structure */
  1628. __OM PPI_TASKS_CHG_Type TASKS_CHG[6]; /*!< (@ 0x00000000) Channel group tasks */
  1629. __IM uint32_t RESERVED[308];
  1630. __IOM uint32_t CHEN; /*!< (@ 0x00000500) Channel enable register */
  1631. __IOM uint32_t CHENSET; /*!< (@ 0x00000504) Channel enable set register */
  1632. __IOM uint32_t CHENCLR; /*!< (@ 0x00000508) Channel enable clear register */
  1633. __IM uint32_t RESERVED1;
  1634. __IOM PPI_CH_Type CH[20]; /*!< (@ 0x00000510) PPI Channel */
  1635. __IM uint32_t RESERVED2[148];
  1636. __IOM uint32_t CHG[6]; /*!< (@ 0x00000800) Description collection: Channel group n */
  1637. __IM uint32_t RESERVED3[62];
  1638. __IOM PPI_FORK_Type FORK[32]; /*!< (@ 0x00000910) Fork */
  1639. } NRF_PPI_Type; /*!< Size = 2448 (0x990) */
  1640. /** @} */ /* End of group Device_Peripheral_peripherals */
  1641. /* =========================================================================================================================== */
  1642. /* ================ Device Specific Peripheral Address Map ================ */
  1643. /* =========================================================================================================================== */
  1644. /** @addtogroup Device_Peripheral_peripheralAddr
  1645. * @{
  1646. */
  1647. #define NRF_FICR_BASE 0x10000000UL
  1648. #define NRF_UICR_BASE 0x10001000UL
  1649. #define NRF_BPROT_BASE 0x40000000UL
  1650. #define NRF_CLOCK_BASE 0x40000000UL
  1651. #define NRF_POWER_BASE 0x40000000UL
  1652. #define NRF_P0_BASE 0x50000000UL
  1653. #define NRF_RADIO_BASE 0x40001000UL
  1654. #define NRF_UART0_BASE 0x40002000UL
  1655. #define NRF_UARTE0_BASE 0x40002000UL
  1656. #define NRF_SPI1_BASE 0x40003000UL
  1657. #define NRF_SPIM1_BASE 0x40003000UL
  1658. #define NRF_SPIS1_BASE 0x40003000UL
  1659. #define NRF_TWI0_BASE 0x40003000UL
  1660. #define NRF_TWIM0_BASE 0x40003000UL
  1661. #define NRF_TWIS0_BASE 0x40003000UL
  1662. #define NRF_SPI0_BASE 0x40004000UL
  1663. #define NRF_SPIM0_BASE 0x40004000UL
  1664. #define NRF_SPIS0_BASE 0x40004000UL
  1665. #define NRF_GPIOTE_BASE 0x40006000UL
  1666. #define NRF_SAADC_BASE 0x40007000UL
  1667. #define NRF_TIMER0_BASE 0x40008000UL
  1668. #define NRF_TIMER1_BASE 0x40009000UL
  1669. #define NRF_TIMER2_BASE 0x4000A000UL
  1670. #define NRF_RTC0_BASE 0x4000B000UL
  1671. #define NRF_TEMP_BASE 0x4000C000UL
  1672. #define NRF_RNG_BASE 0x4000D000UL
  1673. #define NRF_ECB_BASE 0x4000E000UL
  1674. #define NRF_AAR_BASE 0x4000F000UL
  1675. #define NRF_CCM_BASE 0x4000F000UL
  1676. #define NRF_WDT_BASE 0x40010000UL
  1677. #define NRF_RTC1_BASE 0x40011000UL
  1678. #define NRF_QDEC_BASE 0x40012000UL
  1679. #define NRF_COMP_BASE 0x40013000UL
  1680. #define NRF_EGU0_BASE 0x40014000UL
  1681. #define NRF_SWI0_BASE 0x40014000UL
  1682. #define NRF_EGU1_BASE 0x40015000UL
  1683. #define NRF_SWI1_BASE 0x40015000UL
  1684. #define NRF_SWI2_BASE 0x40016000UL
  1685. #define NRF_SWI3_BASE 0x40017000UL
  1686. #define NRF_SWI4_BASE 0x40018000UL
  1687. #define NRF_SWI5_BASE 0x40019000UL
  1688. #define NRF_PWM0_BASE 0x4001C000UL
  1689. #define NRF_PDM_BASE 0x4001D000UL
  1690. #define NRF_NVMC_BASE 0x4001E000UL
  1691. #define NRF_PPI_BASE 0x4001F000UL
  1692. /** @} */ /* End of group Device_Peripheral_peripheralAddr */
  1693. /* =========================================================================================================================== */
  1694. /* ================ Peripheral declaration ================ */
  1695. /* =========================================================================================================================== */
  1696. /** @addtogroup Device_Peripheral_declaration
  1697. * @{
  1698. */
  1699. #define NRF_FICR ((NRF_FICR_Type*) NRF_FICR_BASE)
  1700. #define NRF_UICR ((NRF_UICR_Type*) NRF_UICR_BASE)
  1701. #define NRF_BPROT ((NRF_BPROT_Type*) NRF_BPROT_BASE)
  1702. #define NRF_CLOCK ((NRF_CLOCK_Type*) NRF_CLOCK_BASE)
  1703. #define NRF_POWER ((NRF_POWER_Type*) NRF_POWER_BASE)
  1704. #define NRF_P0 ((NRF_GPIO_Type*) NRF_P0_BASE)
  1705. #define NRF_RADIO ((NRF_RADIO_Type*) NRF_RADIO_BASE)
  1706. #define NRF_UART0 ((NRF_UART_Type*) NRF_UART0_BASE)
  1707. #define NRF_UARTE0 ((NRF_UARTE_Type*) NRF_UARTE0_BASE)
  1708. #define NRF_SPI1 ((NRF_SPI_Type*) NRF_SPI1_BASE)
  1709. #define NRF_SPIM1 ((NRF_SPIM_Type*) NRF_SPIM1_BASE)
  1710. #define NRF_SPIS1 ((NRF_SPIS_Type*) NRF_SPIS1_BASE)
  1711. #define NRF_TWI0 ((NRF_TWI_Type*) NRF_TWI0_BASE)
  1712. #define NRF_TWIM0 ((NRF_TWIM_Type*) NRF_TWIM0_BASE)
  1713. #define NRF_TWIS0 ((NRF_TWIS_Type*) NRF_TWIS0_BASE)
  1714. #define NRF_SPI0 ((NRF_SPI_Type*) NRF_SPI0_BASE)
  1715. #define NRF_SPIM0 ((NRF_SPIM_Type*) NRF_SPIM0_BASE)
  1716. #define NRF_SPIS0 ((NRF_SPIS_Type*) NRF_SPIS0_BASE)
  1717. #define NRF_GPIOTE ((NRF_GPIOTE_Type*) NRF_GPIOTE_BASE)
  1718. #define NRF_SAADC ((NRF_SAADC_Type*) NRF_SAADC_BASE)
  1719. #define NRF_TIMER0 ((NRF_TIMER_Type*) NRF_TIMER0_BASE)
  1720. #define NRF_TIMER1 ((NRF_TIMER_Type*) NRF_TIMER1_BASE)
  1721. #define NRF_TIMER2 ((NRF_TIMER_Type*) NRF_TIMER2_BASE)
  1722. #define NRF_RTC0 ((NRF_RTC_Type*) NRF_RTC0_BASE)
  1723. #define NRF_TEMP ((NRF_TEMP_Type*) NRF_TEMP_BASE)
  1724. #define NRF_RNG ((NRF_RNG_Type*) NRF_RNG_BASE)
  1725. #define NRF_ECB ((NRF_ECB_Type*) NRF_ECB_BASE)
  1726. #define NRF_AAR ((NRF_AAR_Type*) NRF_AAR_BASE)
  1727. #define NRF_CCM ((NRF_CCM_Type*) NRF_CCM_BASE)
  1728. #define NRF_WDT ((NRF_WDT_Type*) NRF_WDT_BASE)
  1729. #define NRF_RTC1 ((NRF_RTC_Type*) NRF_RTC1_BASE)
  1730. #define NRF_QDEC ((NRF_QDEC_Type*) NRF_QDEC_BASE)
  1731. #define NRF_COMP ((NRF_COMP_Type*) NRF_COMP_BASE)
  1732. #define NRF_EGU0 ((NRF_EGU_Type*) NRF_EGU0_BASE)
  1733. #define NRF_SWI0 ((NRF_SWI_Type*) NRF_SWI0_BASE)
  1734. #define NRF_EGU1 ((NRF_EGU_Type*) NRF_EGU1_BASE)
  1735. #define NRF_SWI1 ((NRF_SWI_Type*) NRF_SWI1_BASE)
  1736. #define NRF_SWI2 ((NRF_SWI_Type*) NRF_SWI2_BASE)
  1737. #define NRF_SWI3 ((NRF_SWI_Type*) NRF_SWI3_BASE)
  1738. #define NRF_SWI4 ((NRF_SWI_Type*) NRF_SWI4_BASE)
  1739. #define NRF_SWI5 ((NRF_SWI_Type*) NRF_SWI5_BASE)
  1740. #define NRF_PWM0 ((NRF_PWM_Type*) NRF_PWM0_BASE)
  1741. #define NRF_PDM ((NRF_PDM_Type*) NRF_PDM_BASE)
  1742. #define NRF_NVMC ((NRF_NVMC_Type*) NRF_NVMC_BASE)
  1743. #define NRF_PPI ((NRF_PPI_Type*) NRF_PPI_BASE)
  1744. /** @} */ /* End of group Device_Peripheral_declaration */
  1745. /* ========================================= End of section using anonymous unions ========================================= */
  1746. #if defined (__CC_ARM)
  1747. #pragma pop
  1748. #elif defined (__ICCARM__)
  1749. /* leave anonymous unions enabled */
  1750. #elif (__ARMCC_VERSION >= 6010050)
  1751. #pragma clang diagnostic pop
  1752. #elif defined (__GNUC__)
  1753. /* anonymous unions are enabled by default */
  1754. #elif defined (__TMS470__)
  1755. /* anonymous unions are enabled by default */
  1756. #elif defined (__TASKING__)
  1757. #pragma warning restore
  1758. #elif defined (__CSMC__)
  1759. /* anonymous unions are enabled by default */
  1760. #endif
  1761. #ifdef __cplusplus
  1762. }
  1763. #endif
  1764. #endif /* NRF52811_H */
  1765. /** @} */ /* End of group nrf52811 */
  1766. /** @} */ /* End of group Nordic Semiconductor */