samd21e15a.h 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
  1. /**
  2. * \brief Header file for ATSAMD21E15A
  3. *
  4. * Copyright (c) 2021 Microchip Technology Inc. and its subsidiaries.
  5. *
  6. * Subject to your compliance with these terms, you may use Microchip software and any derivatives
  7. * exclusively with Microchip products. It is your responsibility to comply with third party license
  8. * terms applicable to your use of third party software (including open source software) that may
  9. * accompany Microchip software.
  10. *
  11. * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY,
  12. * APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND
  13. * FITNESS FOR A PARTICULAR PURPOSE.
  14. *
  15. * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL
  16. * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF
  17. * MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT
  18. * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT
  19. * EXCEED THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
  20. *
  21. */
  22. /* file generated from device description version 2019-11-25T06:52:13Z */
  23. #ifndef _SAMD21E15A_H_
  24. #define _SAMD21E15A_H_
  25. // Header version uses Semantic Versioning 2.0.0 (https://semver.org/)
  26. #define HEADER_FORMAT_VERSION "2.0.0"
  27. #define HEADER_FORMAT_VERSION_MAJOR (2)
  28. #define HEADER_FORMAT_VERSION_MINOR (0)
  29. /** \addtogroup SAMD21E15A_definitions SAMD21E15A definitions
  30. This file defines all structures and symbols for SAMD21E15A:
  31. - registers and bitfields
  32. - peripheral base address
  33. - peripheral ID
  34. - PIO definitions
  35. * @{
  36. */
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  41. # include <stdint.h>
  42. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  43. #if !defined(SKIP_INTEGER_LITERALS)
  44. # if defined(_U_) || defined(_L_) || defined(_UL_)
  45. # error "Integer Literals macros already defined elsewhere"
  46. # endif
  47. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  48. /* Macros that deal with adding suffixes to integer literal constants for C/C++ */
  49. # define _U_(x) (x ## U) /**< C code: Unsigned integer literal constant value */
  50. # define _L_(x) (x ## L) /**< C code: Long integer literal constant value */
  51. # define _UL_(x) (x ## UL) /**< C code: Unsigned Long integer literal constant value */
  52. #else /* Assembler */
  53. # define _U_(x) x /**< Assembler: Unsigned integer literal constant value */
  54. # define _L_(x) x /**< Assembler: Long integer literal constant value */
  55. # define _UL_(x) x /**< Assembler: Unsigned Long integer literal constant value */
  56. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  57. #endif /* SKIP_INTEGER_LITERALS */
  58. /** @} end of Atmel Global Defines */
  59. /* ************************************************************************** */
  60. /* CMSIS DEFINITIONS FOR SAMD21E15A */
  61. /* ************************************************************************** */
  62. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  63. /** Interrupt Number Definition */
  64. typedef enum IRQn
  65. {
  66. /****** CORTEX-M0PLUS Processor Exceptions Numbers ******************************/
  67. Reset_IRQn = -15, /**< -15 Reset Vector, invoked on Power up and warm reset */
  68. NonMaskableInt_IRQn = -14, /**< -14 Non maskable Interrupt, cannot be stopped or preempted */
  69. HardFault_IRQn = -13, /**< -13 Hard Fault, all classes of Fault */
  70. SVCall_IRQn = -5, /**< -5 System Service Call via SVC instruction */
  71. PendSV_IRQn = -2, /**< -2 Pendable request for system service */
  72. SysTick_IRQn = -1, /**< -1 System Tick Timer */
  73. /****** SAMD21E15A specific Interrupt Numbers ***********************************/
  74. PM_IRQn = 0, /**< 0 Power Manager (PM) */
  75. SYSCTRL_IRQn = 1, /**< 1 System Control (SYSCTRL) */
  76. WDT_IRQn = 2, /**< 2 Watchdog Timer (WDT) */
  77. RTC_IRQn = 3, /**< 3 Real-Time Counter (RTC) */
  78. EIC_IRQn = 4, /**< 4 External Interrupt Controller (EIC) */
  79. NVMCTRL_IRQn = 5, /**< 5 Non-Volatile Memory Controller (NVMCTRL) */
  80. DMAC_IRQn = 6, /**< 6 Direct Memory Access Controller (DMAC) */
  81. USB_IRQn = 7, /**< 7 Universal Serial Bus (USB) */
  82. EVSYS_IRQn = 8, /**< 8 Event System Interface (EVSYS) */
  83. SERCOM0_IRQn = 9, /**< 9 Serial Communication Interface (SERCOM0) */
  84. SERCOM1_IRQn = 10, /**< 10 Serial Communication Interface (SERCOM1) */
  85. SERCOM2_IRQn = 11, /**< 11 Serial Communication Interface (SERCOM2) */
  86. SERCOM3_IRQn = 12, /**< 12 Serial Communication Interface (SERCOM3) */
  87. TCC0_IRQn = 15, /**< 15 Timer Counter Control (TCC0) */
  88. TCC1_IRQn = 16, /**< 16 Timer Counter Control (TCC1) */
  89. TCC2_IRQn = 17, /**< 17 Timer Counter Control (TCC2) */
  90. TC3_IRQn = 18, /**< 18 Basic Timer Counter (TC3) */
  91. TC4_IRQn = 19, /**< 19 Basic Timer Counter (TC4) */
  92. TC5_IRQn = 20, /**< 20 Basic Timer Counter (TC5) */
  93. ADC_IRQn = 23, /**< 23 Analog Digital Converter (ADC) */
  94. AC_IRQn = 24, /**< 24 Analog Comparators (AC) */
  95. DAC_IRQn = 25, /**< 25 Digital Analog Converter (DAC) */
  96. PTC_IRQn = 26, /**< 26 Peripheral Touch Controller (PTC) */
  97. I2S_IRQn = 27, /**< 27 Inter-IC Sound Interface (I2S) */
  98. PERIPH_MAX_IRQn = 27 /**< Max peripheral ID */
  99. } IRQn_Type;
  100. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  101. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  102. typedef struct _DeviceVectors
  103. {
  104. /* Stack pointer */
  105. void* pvStack;
  106. /* CORTEX-M0PLUS handlers */
  107. void* pfnReset_Handler; /* -15 Reset Vector, invoked on Power up and warm reset */
  108. void* pfnNonMaskableInt_Handler; /* -14 Non maskable Interrupt, cannot be stopped or preempted */
  109. void* pfnHardFault_Handler; /* -13 Hard Fault, all classes of Fault */
  110. void* pvReservedC12;
  111. void* pvReservedC11;
  112. void* pvReservedC10;
  113. void* pvReservedC9;
  114. void* pvReservedC8;
  115. void* pvReservedC7;
  116. void* pvReservedC6;
  117. void* pfnSVCall_Handler; /* -5 System Service Call via SVC instruction */
  118. void* pvReservedC4;
  119. void* pvReservedC3;
  120. void* pfnPendSV_Handler; /* -2 Pendable request for system service */
  121. void* pfnSysTick_Handler; /* -1 System Tick Timer */
  122. /* Peripheral handlers */
  123. void* pfnPM_Handler; /* 0 Power Manager (PM) */
  124. void* pfnSYSCTRL_Handler; /* 1 System Control (SYSCTRL) */
  125. void* pfnWDT_Handler; /* 2 Watchdog Timer (WDT) */
  126. void* pfnRTC_Handler; /* 3 Real-Time Counter (RTC) */
  127. void* pfnEIC_Handler; /* 4 External Interrupt Controller (EIC) */
  128. void* pfnNVMCTRL_Handler; /* 5 Non-Volatile Memory Controller (NVMCTRL) */
  129. void* pfnDMAC_Handler; /* 6 Direct Memory Access Controller (DMAC) */
  130. void* pfnUSB_Handler; /* 7 Universal Serial Bus (USB) */
  131. void* pfnEVSYS_Handler; /* 8 Event System Interface (EVSYS) */
  132. void* pfnSERCOM0_Handler; /* 9 Serial Communication Interface (SERCOM0) */
  133. void* pfnSERCOM1_Handler; /* 10 Serial Communication Interface (SERCOM1) */
  134. void* pfnSERCOM2_Handler; /* 11 Serial Communication Interface (SERCOM2) */
  135. void* pfnSERCOM3_Handler; /* 12 Serial Communication Interface (SERCOM3) */
  136. void* pvReserved13;
  137. void* pvReserved14;
  138. void* pfnTCC0_Handler; /* 15 Timer Counter Control (TCC0) */
  139. void* pfnTCC1_Handler; /* 16 Timer Counter Control (TCC1) */
  140. void* pfnTCC2_Handler; /* 17 Timer Counter Control (TCC2) */
  141. void* pfnTC3_Handler; /* 18 Basic Timer Counter (TC3) */
  142. void* pfnTC4_Handler; /* 19 Basic Timer Counter (TC4) */
  143. void* pfnTC5_Handler; /* 20 Basic Timer Counter (TC5) */
  144. void* pvReserved21;
  145. void* pvReserved22;
  146. void* pfnADC_Handler; /* 23 Analog Digital Converter (ADC) */
  147. void* pfnAC_Handler; /* 24 Analog Comparators (AC) */
  148. void* pfnDAC_Handler; /* 25 Digital Analog Converter (DAC) */
  149. void* pfnPTC_Handler; /* 26 Peripheral Touch Controller (PTC) */
  150. void* pfnI2S_Handler; /* 27 Inter-IC Sound Interface (I2S) */
  151. } DeviceVectors;
  152. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  153. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  154. #if !defined DONT_USE_PREDEFINED_CORE_HANDLERS
  155. /* CORTEX-M0PLUS exception handlers */
  156. void Reset_Handler ( void );
  157. void NonMaskableInt_Handler ( void );
  158. void HardFault_Handler ( void );
  159. void SVCall_Handler ( void );
  160. void PendSV_Handler ( void );
  161. void SysTick_Handler ( void );
  162. #endif /* DONT_USE_PREDEFINED_CORE_HANDLERS */
  163. #if !defined DONT_USE_PREDEFINED_PERIPHERALS_HANDLERS
  164. /* Peripherals interrupt handlers */
  165. void PM_Handler ( void );
  166. void SYSCTRL_Handler ( void );
  167. void WDT_Handler ( void );
  168. void RTC_Handler ( void );
  169. void EIC_Handler ( void );
  170. void NVMCTRL_Handler ( void );
  171. void DMAC_Handler ( void );
  172. void USB_Handler ( void );
  173. void EVSYS_Handler ( void );
  174. void SERCOM0_Handler ( void );
  175. void SERCOM1_Handler ( void );
  176. void SERCOM2_Handler ( void );
  177. void SERCOM3_Handler ( void );
  178. void TCC0_Handler ( void );
  179. void TCC1_Handler ( void );
  180. void TCC2_Handler ( void );
  181. void TC3_Handler ( void );
  182. void TC4_Handler ( void );
  183. void TC5_Handler ( void );
  184. void ADC_Handler ( void );
  185. void AC_Handler ( void );
  186. void DAC_Handler ( void );
  187. void PTC_Handler ( void );
  188. void I2S_Handler ( void );
  189. #endif /* DONT_USE_PREDEFINED_PERIPHERALS_HANDLERS */
  190. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  191. /** \brief Configuration of the CORTEX-M0PLUS Processor and Core Peripherals */
  192. #define __CM0PLUS_REV 0x0001 /**< Cortex-M0+ revision */
  193. #define __MPU_PRESENT 0 /**< MPU present or not */
  194. #define __NVIC_PRIO_BITS 2 /**< Number of Bits used for Priority Levels */
  195. #define __VTOR_PRESENT 1 /**< Vector Table Offset Register present or not */
  196. #define __Vendor_SysTickConfig 0 /**< Set to 1 if different SysTick Config is used feature implemented */
  197. #define __ARCH_ARM 1
  198. #define __ARCH_ARM_CORTEX_M 1
  199. /*
  200. * \brief CMSIS includes
  201. */
  202. #include "core_cm0plus.h"
  203. #if defined USE_CMSIS_INIT
  204. #include "system_samd21.h"
  205. #endif /* USE_CMSIS_INIT */
  206. /** \defgroup SAMD21E15A_api Peripheral Software API
  207. * @{
  208. */
  209. /* ************************************************************************** */
  210. /** SOFTWARE PERIPHERAL API DEFINITION FOR SAMD21E15A */
  211. /* ************************************************************************** */
  212. #include "component/ac.h"
  213. #include "component/adc.h"
  214. #include "component/dac.h"
  215. #include "component/dmac.h"
  216. #include "component/dsu.h"
  217. #include "component/eic.h"
  218. #include "component/evsys.h"
  219. #include "component/gclk.h"
  220. #include "component/hmatrixb.h"
  221. #include "component/i2s.h"
  222. #include "component/mtb.h"
  223. #include "component/nvmctrl.h"
  224. #include "component/pac.h"
  225. #include "component/pm.h"
  226. #include "component/port.h"
  227. #include "component/ptc.h"
  228. #include "component/rtc.h"
  229. #include "component/sercom.h"
  230. #include "component/sysctrl.h"
  231. #include "component/tc.h"
  232. #include "component/tcc.h"
  233. #include "component/usb.h"
  234. #include "component/wdt.h"
  235. /** @} end of Peripheral Software API */
  236. /* ************************************************************************** */
  237. /* INSTANCE DEFINITIONS FOR SAMD21E15A */
  238. /* ************************************************************************** */
  239. #include "instance/ac.h"
  240. #include "instance/adc.h"
  241. #include "instance/dac.h"
  242. #include "instance/dmac.h"
  243. #include "instance/dsu.h"
  244. #include "instance/eic.h"
  245. #include "instance/evsys.h"
  246. #include "instance/gclk.h"
  247. #include "instance/i2s.h"
  248. #include "instance/mtb.h"
  249. #include "instance/nvmctrl.h"
  250. #include "instance/pac0.h"
  251. #include "instance/pac1.h"
  252. #include "instance/pac2.h"
  253. #include "instance/pm.h"
  254. #include "instance/port.h"
  255. #include "instance/ptc.h"
  256. #include "instance/rtc.h"
  257. #include "instance/sbmatrix.h"
  258. #include "instance/sercom0.h"
  259. #include "instance/sercom1.h"
  260. #include "instance/sercom2.h"
  261. #include "instance/sercom3.h"
  262. #include "instance/sysctrl.h"
  263. #include "instance/tc3.h"
  264. #include "instance/tc4.h"
  265. #include "instance/tc5.h"
  266. #include "instance/tcc0.h"
  267. #include "instance/tcc1.h"
  268. #include "instance/tcc2.h"
  269. #include "instance/usb.h"
  270. #include "instance/wdt.h"
  271. /** \addtogroup SAMD21E15A_id Peripheral Ids Definitions
  272. * @{
  273. */
  274. /* ************************************************************************** */
  275. /* PERIPHERAL ID DEFINITIONS FOR SAMD21E15A */
  276. /* ************************************************************************** */
  277. #define ID_PAC0 ( 0) /**< \brief Peripheral Access Controller (PAC0) */
  278. #define ID_PM ( 1) /**< \brief Power Manager (PM) */
  279. #define ID_SYSCTRL ( 2) /**< \brief System Control (SYSCTRL) */
  280. #define ID_GCLK ( 3) /**< \brief Generic Clock Generator (GCLK) */
  281. #define ID_WDT ( 4) /**< \brief Watchdog Timer (WDT) */
  282. #define ID_RTC ( 5) /**< \brief Real-Time Counter (RTC) */
  283. #define ID_EIC ( 6) /**< \brief External Interrupt Controller (EIC) */
  284. #define ID_PAC1 ( 32) /**< \brief Peripheral Access Controller (PAC1) */
  285. #define ID_DSU ( 33) /**< \brief Device Service Unit (DSU) */
  286. #define ID_NVMCTRL ( 34) /**< \brief Non-Volatile Memory Controller (NVMCTRL) */
  287. #define ID_PORT ( 35) /**< \brief Port Module (PORT) */
  288. #define ID_DMAC ( 36) /**< \brief Direct Memory Access Controller (DMAC) */
  289. #define ID_USB ( 37) /**< \brief Universal Serial Bus (USB) */
  290. #define ID_MTB ( 38) /**< \brief Cortex-M0+ Micro-Trace Buffer (MTB) */
  291. #define ID_SBMATRIX ( 39) /**< \brief HSB Matrix (SBMATRIX) */
  292. #define ID_PAC2 ( 64) /**< \brief Peripheral Access Controller (PAC2) */
  293. #define ID_EVSYS ( 65) /**< \brief Event System Interface (EVSYS) */
  294. #define ID_SERCOM0 ( 66) /**< \brief Serial Communication Interface (SERCOM0) */
  295. #define ID_SERCOM1 ( 67) /**< \brief Serial Communication Interface (SERCOM1) */
  296. #define ID_SERCOM2 ( 68) /**< \brief Serial Communication Interface (SERCOM2) */
  297. #define ID_SERCOM3 ( 69) /**< \brief Serial Communication Interface (SERCOM3) */
  298. #define ID_TCC0 ( 72) /**< \brief Timer Counter Control (TCC0) */
  299. #define ID_TCC1 ( 73) /**< \brief Timer Counter Control (TCC1) */
  300. #define ID_TCC2 ( 74) /**< \brief Timer Counter Control (TCC2) */
  301. #define ID_TC3 ( 75) /**< \brief Basic Timer Counter (TC3) */
  302. #define ID_TC4 ( 76) /**< \brief Basic Timer Counter (TC4) */
  303. #define ID_TC5 ( 77) /**< \brief Basic Timer Counter (TC5) */
  304. #define ID_ADC ( 80) /**< \brief Analog Digital Converter (ADC) */
  305. #define ID_AC ( 81) /**< \brief Analog Comparators (AC) */
  306. #define ID_DAC ( 82) /**< \brief Digital Analog Converter (DAC) */
  307. #define ID_PTC ( 83) /**< \brief Peripheral Touch Controller (PTC) */
  308. #define ID_I2S ( 84) /**< \brief Inter-IC Sound Interface (I2S) */
  309. #define ID_PERIPH_MAX ( 84) /**< \brief Number of peripheral IDs */
  310. /** @} end of Peripheral Ids Definitions */
  311. /** \addtogroup SAMD21E15A_base Peripheral Base Address Definitions
  312. * @{
  313. */
  314. /* ************************************************************************** */
  315. /* REGISTER STRUCTURE ADDRESS DEFINITIONS FOR SAMD21E15A */
  316. /* ************************************************************************** */
  317. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  318. #define AC_REGS ((ac_registers_t*)0x42004400) /**< \brief AC Registers Address */
  319. #define ADC_REGS ((adc_registers_t*)0x42004000) /**< \brief ADC Registers Address */
  320. #define DAC_REGS ((dac_registers_t*)0x42004800) /**< \brief DAC Registers Address */
  321. #define DMAC_REGS ((dmac_registers_t*)0x41004800) /**< \brief DMAC Registers Address */
  322. #define DSU_REGS ((dsu_registers_t*)0x41002000) /**< \brief DSU Registers Address */
  323. #define EIC_REGS ((eic_registers_t*)0x40001800) /**< \brief EIC Registers Address */
  324. #define EVSYS_REGS ((evsys_registers_t*)0x42000400) /**< \brief EVSYS Registers Address */
  325. #define GCLK_REGS ((gclk_registers_t*)0x40000c00) /**< \brief GCLK Registers Address */
  326. #define SBMATRIX_REGS ((hmatrixb_registers_t*)0x41007000) /**< \brief SBMATRIX Registers Address */
  327. #define I2S_REGS ((i2s_registers_t*)0x42005000) /**< \brief I2S Registers Address */
  328. #define MTB_REGS ((mtb_registers_t*)0x41006000) /**< \brief MTB Registers Address */
  329. #define NVMCTRL_REGS ((nvmctrl_registers_t*)0x41004000) /**< \brief NVMCTRL Registers Address */
  330. #define PAC0_REGS ((pac_registers_t*)0x40000000) /**< \brief PAC0 Registers Address */
  331. #define PAC1_REGS ((pac_registers_t*)0x41000000) /**< \brief PAC1 Registers Address */
  332. #define PAC2_REGS ((pac_registers_t*)0x42000000) /**< \brief PAC2 Registers Address */
  333. #define PM_REGS ((pm_registers_t*)0x40000400) /**< \brief PM Registers Address */
  334. #define PORT_REGS ((port_registers_t*)0x41004400) /**< \brief PORT Registers Address */
  335. #define PORT_IOBUS_REGS ((port_registers_t*)0x60000000) /**< \brief PORT Registers Address */
  336. #define PTC_REGS ((ptc_registers_t*)0x42004c00) /**< \brief PTC Registers Address */
  337. #define RTC_REGS ((rtc_registers_t*)0x40001400) /**< \brief RTC Registers Address */
  338. #define SERCOM0_REGS ((sercom_registers_t*)0x42000800) /**< \brief SERCOM0 Registers Address */
  339. #define SERCOM1_REGS ((sercom_registers_t*)0x42000c00) /**< \brief SERCOM1 Registers Address */
  340. #define SERCOM2_REGS ((sercom_registers_t*)0x42001000) /**< \brief SERCOM2 Registers Address */
  341. #define SERCOM3_REGS ((sercom_registers_t*)0x42001400) /**< \brief SERCOM3 Registers Address */
  342. #define SYSCTRL_REGS ((sysctrl_registers_t*)0x40000800) /**< \brief SYSCTRL Registers Address */
  343. #define TC3_REGS ((tc_registers_t*)0x42002c00) /**< \brief TC3 Registers Address */
  344. #define TC4_REGS ((tc_registers_t*)0x42003000) /**< \brief TC4 Registers Address */
  345. #define TC5_REGS ((tc_registers_t*)0x42003400) /**< \brief TC5 Registers Address */
  346. #define TCC0_REGS ((tcc_registers_t*)0x42002000) /**< \brief TCC0 Registers Address */
  347. #define TCC1_REGS ((tcc_registers_t*)0x42002400) /**< \brief TCC1 Registers Address */
  348. #define TCC2_REGS ((tcc_registers_t*)0x42002800) /**< \brief TCC2 Registers Address */
  349. #define USB_REGS ((usb_registers_t*)0x41005000) /**< \brief USB Registers Address */
  350. #define WDT_REGS ((wdt_registers_t*)0x40001000) /**< \brief WDT Registers Address */
  351. #endif /* (defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  352. /** @} end of Peripheral Base Address Definitions */
  353. /** \addtogroup SAMD21E15A_base Peripheral Base Address Definitions
  354. * @{
  355. */
  356. /* ************************************************************************** */
  357. /* BASE ADDRESS DEFINITIONS FOR SAMD21E15A */
  358. /* ************************************************************************** */
  359. #define AC_BASE_ADDRESS _UL_(0x42004400) /* AC Base Address */
  360. #define ADC_BASE_ADDRESS _UL_(0x42004000) /* ADC Base Address */
  361. #define DAC_BASE_ADDRESS _UL_(0x42004800) /* DAC Base Address */
  362. #define DMAC_BASE_ADDRESS _UL_(0x41004800) /* DMAC Base Address */
  363. #define DSU_BASE_ADDRESS _UL_(0x41002000) /* DSU Base Address */
  364. #define EIC_BASE_ADDRESS _UL_(0x40001800) /* EIC Base Address */
  365. #define EVSYS_BASE_ADDRESS _UL_(0x42000400) /* EVSYS Base Address */
  366. #define GCLK_BASE_ADDRESS _UL_(0x40000c00) /* GCLK Base Address */
  367. #define SBMATRIX_BASE_ADDRESS _UL_(0x41007000) /* SBMATRIX Base Address */
  368. #define I2S_BASE_ADDRESS _UL_(0x42005000) /* I2S Base Address */
  369. #define MTB_BASE_ADDRESS _UL_(0x41006000) /* MTB Base Address */
  370. #define NVMCTRL_BASE_ADDRESS _UL_(0x41004000) /* NVMCTRL Base Address */
  371. #define PAC0_BASE_ADDRESS _UL_(0x40000000) /* PAC0 Base Address */
  372. #define PAC1_BASE_ADDRESS _UL_(0x41000000) /* PAC1 Base Address */
  373. #define PAC2_BASE_ADDRESS _UL_(0x42000000) /* PAC2 Base Address */
  374. #define PM_BASE_ADDRESS _UL_(0x40000400) /* PM Base Address */
  375. #define PORT_BASE_ADDRESS _UL_(0x41004400) /* PORT Base Address */
  376. #define PORT_IOBUS_BASE_ADDRESS _UL_(0x60000000) /* PORT Base Address */
  377. #define PTC_BASE_ADDRESS _UL_(0x42004c00) /* PTC Base Address */
  378. #define RTC_BASE_ADDRESS _UL_(0x40001400) /* RTC Base Address */
  379. #define SERCOM0_BASE_ADDRESS _UL_(0x42000800) /* SERCOM0 Base Address */
  380. #define SERCOM1_BASE_ADDRESS _UL_(0x42000c00) /* SERCOM1 Base Address */
  381. #define SERCOM2_BASE_ADDRESS _UL_(0x42001000) /* SERCOM2 Base Address */
  382. #define SERCOM3_BASE_ADDRESS _UL_(0x42001400) /* SERCOM3 Base Address */
  383. #define SYSCTRL_BASE_ADDRESS _UL_(0x40000800) /* SYSCTRL Base Address */
  384. #define TC3_BASE_ADDRESS _UL_(0x42002c00) /* TC3 Base Address */
  385. #define TC4_BASE_ADDRESS _UL_(0x42003000) /* TC4 Base Address */
  386. #define TC5_BASE_ADDRESS _UL_(0x42003400) /* TC5 Base Address */
  387. #define TCC0_BASE_ADDRESS _UL_(0x42002000) /* TCC0 Base Address */
  388. #define TCC1_BASE_ADDRESS _UL_(0x42002400) /* TCC1 Base Address */
  389. #define TCC2_BASE_ADDRESS _UL_(0x42002800) /* TCC2 Base Address */
  390. #define USB_BASE_ADDRESS _UL_(0x41005000) /* USB Base Address */
  391. #define WDT_BASE_ADDRESS _UL_(0x40001000) /* WDT Base Address */
  392. /** @} end of Peripheral Base Address Definitions */
  393. /** \addtogroup SAMD21E15A_pio Peripheral Pio Definitions
  394. * @{
  395. */
  396. /* ************************************************************************** */
  397. /* PIO DEFINITIONS FOR SAMD21E15A */
  398. /* ************************************************************************** */
  399. #include "pio/samd21e15a.h"
  400. /** @} end of Peripheral Pio Definitions */
  401. /* ************************************************************************** */
  402. /* MEMORY MAPPING DEFINITIONS FOR SAMD21E15A */
  403. /* ************************************************************************** */
  404. #define FLASH_SIZE _UL_(0x00008000) /* 32kB Memory segment type: flash */
  405. #define FLASH_PAGE_SIZE _UL_( 64)
  406. #define FLASH_NB_OF_PAGES _UL_( 512)
  407. #define CAL_SIZE _UL_(0x00000008) /* 0kB Memory segment type: fuses */
  408. #define AUX3_SIZE _UL_(0x00000100) /* 0kB Memory segment type: fuses */
  409. #define AUX3_PAGE_SIZE _UL_( 64)
  410. #define AUX3_NB_OF_PAGES _UL_( 4)
  411. #define LOCKBIT_SIZE _UL_(0x00000004) /* 0kB Memory segment type: fuses */
  412. #define OTP1_SIZE _UL_(0x00000008) /* 0kB Memory segment type: fuses */
  413. #define OTP2_SIZE _UL_(0x00000008) /* 0kB Memory segment type: fuses */
  414. #define OTP4_SIZE _UL_(0x000000e0) /* 0kB Memory segment type: fuses */
  415. #define OTP4_PAGE_SIZE _UL_( 64)
  416. #define OTP4_NB_OF_PAGES _UL_( 3)
  417. #define TEMP_LOG_SIZE _UL_(0x00000008) /* 0kB Memory segment type: fuses */
  418. #define USER_PAGE_SIZE _UL_(0x00000100) /* 0kB Memory segment type: user_page */
  419. #define USER_PAGE_PAGE_SIZE _UL_( 64)
  420. #define USER_PAGE_NB_OF_PAGES _UL_( 4)
  421. #define HMCRAMC0_SIZE _UL_(0x00001000) /* 4kB Memory segment type: ram */
  422. #define HPB0_SIZE _UL_(0x00010000) /* 64kB Memory segment type: io */
  423. #define HPB1_SIZE _UL_(0x00010000) /* 64kB Memory segment type: io */
  424. #define HPB2_SIZE _UL_(0x00010000) /* 64kB Memory segment type: io */
  425. #define PPB_SIZE _UL_(0x00100000) /* 1024kB Memory segment type: io */
  426. #define SCS_SIZE _UL_(0x00001000) /* 4kB Memory segment type: io */
  427. #define PERIPHERALS_SIZE _UL_(0x20000000) /* 524288kB Memory segment type: io */
  428. #define FLASH_ADDR _UL_(0x00000000) /**< FLASH base address (type: flash)*/
  429. #define CAL_ADDR _UL_(0x00800000) /**< CAL base address (type: fuses)*/
  430. #define AUX3_ADDR _UL_(0x0080a000) /**< AUX3 base address (type: fuses)*/
  431. #define LOCKBIT_ADDR _UL_(0x00802000) /**< LOCKBIT base address (type: fuses)*/
  432. #define OTP1_ADDR _UL_(0x00806000) /**< OTP1 base address (type: fuses)*/
  433. #define OTP2_ADDR _UL_(0x00806008) /**< OTP2 base address (type: fuses)*/
  434. #define OTP4_ADDR _UL_(0x00806020) /**< OTP4 base address (type: fuses)*/
  435. #define TEMP_LOG_ADDR _UL_(0x00806030) /**< TEMP_LOG base address (type: fuses)*/
  436. #define USER_PAGE_ADDR _UL_(0x00804000) /**< USER_PAGE base address (type: user_page)*/
  437. #define HMCRAMC0_ADDR _UL_(0x20000000) /**< HMCRAMC0 base address (type: ram)*/
  438. #define HPB0_ADDR _UL_(0x40000000) /**< HPB0 base address (type: io)*/
  439. #define HPB1_ADDR _UL_(0x41000000) /**< HPB1 base address (type: io)*/
  440. #define HPB2_ADDR _UL_(0x42000000) /**< HPB2 base address (type: io)*/
  441. #define PPB_ADDR _UL_(0xe0000000) /**< PPB base address (type: io)*/
  442. #define SCS_ADDR _UL_(0xe000e000) /**< SCS base address (type: io)*/
  443. #define PERIPHERALS_ADDR _UL_(0x40000000) /**< PERIPHERALS base address (type: io)*/
  444. /* ************************************************************************** */
  445. /** DEVICE SIGNATURES FOR SAMD21E15A */
  446. /* ************************************************************************** */
  447. #define CHIP_DSU_DID _UL_(0X1001030D)
  448. /* ************************************************************************** */
  449. /** ELECTRICAL DEFINITIONS FOR SAMD21E15A */
  450. /* ************************************************************************** */
  451. /* ************************************************************************** */
  452. /** Event Generator IDs for SAMD21E15A */
  453. /* ************************************************************************** */
  454. #define EVENT_ID_GEN_RTC_CMP_0 1 /**< ID for RTC event generator CMP_0 */
  455. #define EVENT_ID_GEN_RTC_CMP_1 2 /**< ID for RTC event generator CMP_1 */
  456. #define EVENT_ID_GEN_RTC_OVF 3 /**< ID for RTC event generator OVF */
  457. #define EVENT_ID_GEN_RTC_PER_0 4 /**< ID for RTC event generator PER_0 */
  458. #define EVENT_ID_GEN_RTC_PER_1 5 /**< ID for RTC event generator PER_1 */
  459. #define EVENT_ID_GEN_RTC_PER_2 6 /**< ID for RTC event generator PER_2 */
  460. #define EVENT_ID_GEN_RTC_PER_3 7 /**< ID for RTC event generator PER_3 */
  461. #define EVENT_ID_GEN_RTC_PER_4 8 /**< ID for RTC event generator PER_4 */
  462. #define EVENT_ID_GEN_RTC_PER_5 9 /**< ID for RTC event generator PER_5 */
  463. #define EVENT_ID_GEN_RTC_PER_6 10 /**< ID for RTC event generator PER_6 */
  464. #define EVENT_ID_GEN_RTC_PER_7 11 /**< ID for RTC event generator PER_7 */
  465. #define EVENT_ID_GEN_EIC_EXTINT_0 12 /**< ID for EIC event generator EXTINT_0 */
  466. #define EVENT_ID_GEN_EIC_EXTINT_1 13 /**< ID for EIC event generator EXTINT_1 */
  467. #define EVENT_ID_GEN_EIC_EXTINT_2 14 /**< ID for EIC event generator EXTINT_2 */
  468. #define EVENT_ID_GEN_EIC_EXTINT_3 15 /**< ID for EIC event generator EXTINT_3 */
  469. #define EVENT_ID_GEN_EIC_EXTINT_4 16 /**< ID for EIC event generator EXTINT_4 */
  470. #define EVENT_ID_GEN_EIC_EXTINT_5 17 /**< ID for EIC event generator EXTINT_5 */
  471. #define EVENT_ID_GEN_EIC_EXTINT_6 18 /**< ID for EIC event generator EXTINT_6 */
  472. #define EVENT_ID_GEN_EIC_EXTINT_7 19 /**< ID for EIC event generator EXTINT_7 */
  473. #define EVENT_ID_GEN_EIC_EXTINT_8 20 /**< ID for EIC event generator EXTINT_8 */
  474. #define EVENT_ID_GEN_EIC_EXTINT_9 21 /**< ID for EIC event generator EXTINT_9 */
  475. #define EVENT_ID_GEN_EIC_EXTINT_10 22 /**< ID for EIC event generator EXTINT_10 */
  476. #define EVENT_ID_GEN_EIC_EXTINT_11 23 /**< ID for EIC event generator EXTINT_11 */
  477. #define EVENT_ID_GEN_EIC_EXTINT_12 24 /**< ID for EIC event generator EXTINT_12 */
  478. #define EVENT_ID_GEN_EIC_EXTINT_13 25 /**< ID for EIC event generator EXTINT_13 */
  479. #define EVENT_ID_GEN_EIC_EXTINT_14 26 /**< ID for EIC event generator EXTINT_14 */
  480. #define EVENT_ID_GEN_EIC_EXTINT_15 27 /**< ID for EIC event generator EXTINT_15 */
  481. #define EVENT_ID_GEN_EIC_EXTINT_16 28 /**< ID for EIC event generator EXTINT_16 */
  482. #define EVENT_ID_GEN_EIC_EXTINT_17 29 /**< ID for EIC event generator EXTINT_17 */
  483. #define EVENT_ID_GEN_DMAC_CH_0 30 /**< ID for DMAC event generator CH_0 */
  484. #define EVENT_ID_GEN_DMAC_CH_1 31 /**< ID for DMAC event generator CH_1 */
  485. #define EVENT_ID_GEN_DMAC_CH_2 32 /**< ID for DMAC event generator CH_2 */
  486. #define EVENT_ID_GEN_DMAC_CH_3 33 /**< ID for DMAC event generator CH_3 */
  487. #define EVENT_ID_GEN_TCC0_OVF 34 /**< ID for TCC0 event generator OVF */
  488. #define EVENT_ID_GEN_TCC0_TRG 35 /**< ID for TCC0 event generator TRG */
  489. #define EVENT_ID_GEN_TCC0_CNT 36 /**< ID for TCC0 event generator CNT */
  490. #define EVENT_ID_GEN_TCC0_MC_0 37 /**< ID for TCC0 event generator MC_0 */
  491. #define EVENT_ID_GEN_TCC0_MC_1 38 /**< ID for TCC0 event generator MC_1 */
  492. #define EVENT_ID_GEN_TCC0_MC_2 39 /**< ID for TCC0 event generator MC_2 */
  493. #define EVENT_ID_GEN_TCC0_MC_3 40 /**< ID for TCC0 event generator MC_3 */
  494. #define EVENT_ID_GEN_TCC1_OVF 41 /**< ID for TCC1 event generator OVF */
  495. #define EVENT_ID_GEN_TCC1_TRG 42 /**< ID for TCC1 event generator TRG */
  496. #define EVENT_ID_GEN_TCC1_CNT 43 /**< ID for TCC1 event generator CNT */
  497. #define EVENT_ID_GEN_TCC1_MC_0 44 /**< ID for TCC1 event generator MC_0 */
  498. #define EVENT_ID_GEN_TCC1_MC_1 45 /**< ID for TCC1 event generator MC_1 */
  499. #define EVENT_ID_GEN_TCC2_OVF 46 /**< ID for TCC2 event generator OVF */
  500. #define EVENT_ID_GEN_TCC2_TRG 47 /**< ID for TCC2 event generator TRG */
  501. #define EVENT_ID_GEN_TCC2_CNT 48 /**< ID for TCC2 event generator CNT */
  502. #define EVENT_ID_GEN_TCC2_MC_0 49 /**< ID for TCC2 event generator MC_0 */
  503. #define EVENT_ID_GEN_TCC2_MC_1 50 /**< ID for TCC2 event generator MC_1 */
  504. #define EVENT_ID_GEN_TC3_OVF 51 /**< ID for TC3 event generator OVF */
  505. #define EVENT_ID_GEN_TC3_MC_0 52 /**< ID for TC3 event generator MC_0 */
  506. #define EVENT_ID_GEN_TC3_MC_1 53 /**< ID for TC3 event generator MC_1 */
  507. #define EVENT_ID_GEN_TC4_OVF 54 /**< ID for TC4 event generator OVF */
  508. #define EVENT_ID_GEN_TC4_MC_0 55 /**< ID for TC4 event generator MC_0 */
  509. #define EVENT_ID_GEN_TC4_MC_1 56 /**< ID for TC4 event generator MC_1 */
  510. #define EVENT_ID_GEN_TC5_OVF 57 /**< ID for TC5 event generator OVF */
  511. #define EVENT_ID_GEN_TC5_MC_0 58 /**< ID for TC5 event generator MC_0 */
  512. #define EVENT_ID_GEN_TC5_MC_1 59 /**< ID for TC5 event generator MC_1 */
  513. #define EVENT_ID_GEN_ADC_RESRDY 66 /**< ID for ADC event generator RESRDY */
  514. #define EVENT_ID_GEN_ADC_WINMON 67 /**< ID for ADC event generator WINMON */
  515. #define EVENT_ID_GEN_AC_COMP_0 68 /**< ID for AC event generator COMP_0 */
  516. #define EVENT_ID_GEN_AC_COMP_1 69 /**< ID for AC event generator COMP_1 */
  517. #define EVENT_ID_GEN_AC_WIN_0 70 /**< ID for AC event generator WIN_0 */
  518. #define EVENT_ID_GEN_DAC_EMPTY 71 /**< ID for DAC event generator EMPTY */
  519. /* ************************************************************************** */
  520. /** Event User IDs for SAMD21E15A */
  521. /* ************************************************************************** */
  522. #define EVENT_ID_USER_DMAC_CH_0 0 /**< ID for DMAC event user CH_0 */
  523. #define EVENT_ID_USER_DMAC_CH_1 1 /**< ID for DMAC event user CH_1 */
  524. #define EVENT_ID_USER_DMAC_CH_2 2 /**< ID for DMAC event user CH_2 */
  525. #define EVENT_ID_USER_DMAC_CH_3 3 /**< ID for DMAC event user CH_3 */
  526. #define EVENT_ID_USER_TCC0_EV_0 4 /**< ID for TCC0 event user EV_0 */
  527. #define EVENT_ID_USER_TCC0_EV_1 5 /**< ID for TCC0 event user EV_1 */
  528. #define EVENT_ID_USER_TCC0_MC_0 6 /**< ID for TCC0 event user MC_0 */
  529. #define EVENT_ID_USER_TCC0_MC_1 7 /**< ID for TCC0 event user MC_1 */
  530. #define EVENT_ID_USER_TCC0_MC_2 8 /**< ID for TCC0 event user MC_2 */
  531. #define EVENT_ID_USER_TCC0_MC_3 9 /**< ID for TCC0 event user MC_3 */
  532. #define EVENT_ID_USER_TCC1_EV_0 10 /**< ID for TCC1 event user EV_0 */
  533. #define EVENT_ID_USER_TCC1_EV_1 11 /**< ID for TCC1 event user EV_1 */
  534. #define EVENT_ID_USER_TCC1_MC_0 12 /**< ID for TCC1 event user MC_0 */
  535. #define EVENT_ID_USER_TCC1_MC_1 13 /**< ID for TCC1 event user MC_1 */
  536. #define EVENT_ID_USER_TCC2_EV_0 14 /**< ID for TCC2 event user EV_0 */
  537. #define EVENT_ID_USER_TCC2_EV_1 15 /**< ID for TCC2 event user EV_1 */
  538. #define EVENT_ID_USER_TCC2_MC_0 16 /**< ID for TCC2 event user MC_0 */
  539. #define EVENT_ID_USER_TCC2_MC_1 17 /**< ID for TCC2 event user MC_1 */
  540. #define EVENT_ID_USER_TC3_EVU 18 /**< ID for TC3 event user EVU */
  541. #define EVENT_ID_USER_TC4_EVU 19 /**< ID for TC4 event user EVU */
  542. #define EVENT_ID_USER_TC5_EVU 20 /**< ID for TC5 event user EVU */
  543. #define EVENT_ID_USER_ADC_START 23 /**< ID for ADC event user START */
  544. #define EVENT_ID_USER_ADC_SYNC 24 /**< ID for ADC event user SYNC */
  545. #define EVENT_ID_USER_AC_SOC_0 25 /**< ID for AC event user SOC_0 */
  546. #define EVENT_ID_USER_AC_SOC_1 26 /**< ID for AC event user SOC_1 */
  547. #define EVENT_ID_USER_DAC_START 27 /**< ID for DAC event user START */
  548. #ifdef __cplusplus
  549. }
  550. #endif
  551. /** @} end of SAMD21E15A definitions */
  552. #endif /* _SAMD21E15A_H_ */