1 /** 2 * \file 3 * 4 * \brief Header file for SAM4LC8A 5 * 6 * Copyright (c) 2016 Atmel Corporation, 7 * a wholly owned subsidiary of Microchip Technology Inc. 8 * 9 * \asf_license_start 10 * 11 * \page License 12 * 13 * Licensed under the Apache License, Version 2.0 (the "License"); 14 * you may not use this file except in compliance with the License. 15 * You may obtain a copy of the Licence at 16 * 17 * http://www.apache.org/licenses/LICENSE-2.0 18 * 19 * Unless required by applicable law or agreed to in writing, software 20 * distributed under the License is distributed on an "AS IS" BASIS, 21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 22 * See the License for the specific language governing permissions and 23 * limitations under the License. 24 * 25 * \asf_license_stop 26 * 27 */ 28 29 #ifndef _SAM4LC8A_ 30 #define _SAM4LC8A_ 31 32 /** 33 * \ingroup SAM4L_definitions 34 * \addtogroup SAM4LC8A_definitions SAM4LC8A definitions 35 * This file defines all structures and symbols for SAM4LC8A: 36 * - registers and bitfields 37 * - peripheral base address 38 * - peripheral ID 39 * - PIO definitions 40 */ 41 /*@{*/ 42 43 #ifdef __cplusplus 44 extern "C" { 45 #endif 46 47 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 48 #include <stdint.h> 49 #ifndef __cplusplus 50 typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ 51 typedef volatile const uint16_t RoReg16; /**< Read only 16-bit register (volatile const unsigned int) */ 52 typedef volatile const uint8_t RoReg8; /**< Read only 8-bit register (volatile const unsigned int) */ 53 #else 54 typedef volatile uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */ 55 typedef volatile uint16_t RoReg16; /**< Read only 16-bit register (volatile const unsigned int) */ 56 typedef volatile uint8_t RoReg8; /**< Read only 8-bit register (volatile const unsigned int) */ 57 #endif 58 typedef volatile uint32_t WoReg; /**< Write only 32-bit register (volatile unsigned int) */ 59 typedef volatile uint16_t WoReg16; /**< Write only 16-bit register (volatile unsigned int) */ 60 typedef volatile uint32_t WoReg8; /**< Write only 8-bit register (volatile unsigned int) */ 61 typedef volatile uint32_t RwReg; /**< Read-Write 32-bit register (volatile unsigned int) */ 62 typedef volatile uint16_t RwReg16; /**< Read-Write 16-bit register (volatile unsigned int) */ 63 typedef volatile uint8_t RwReg8; /**< Read-Write 8-bit register (volatile unsigned int) */ 64 #if !defined(_UL) 65 #define _U_(x) x ## U /**< C code: Unsigned integer literal constant value */ 66 #define _L_(x) x ## L /**< C code: Long integer literal constant value */ 67 #define _UL_(x) x ## UL /**< C code: Unsigned Long integer literal constant value */ 68 #endif 69 #else 70 #if !defined(_UL) 71 #define _U_(x) x /**< Assembler: Unsigned integer literal constant value */ 72 #define _L_(x) x /**< Assembler: Long integer literal constant value */ 73 #define _UL_(x) x /**< Assembler: Unsigned Long integer literal constant value */ 74 #endif 75 #endif 76 77 /* ************************************************************************** */ 78 /** CMSIS DEFINITIONS FOR SAM4LC8A */ 79 /* ************************************************************************** */ 80 /** \defgroup SAM4LC8A_cmsis CMSIS Definitions */ 81 /*@{*/ 82 83 /** Interrupt Number Definition */ 84 typedef enum IRQn 85 { 86 /****** Cortex-M4 Processor Exceptions Numbers ******************************/ 87 NonMaskableInt_IRQn = -14,/**< 2 Non Maskable Interrupt */ 88 HardFault_IRQn = -13,/**< 3 Cortex-M4 Hard Fault Interrupt */ 89 MemoryManagement_IRQn = -12,/**< 4 Cortex-M4 Memory Management Interrupt */ 90 BusFault_IRQn = -11,/**< 5 Cortex-M4 Bus Fault Interrupt */ 91 UsageFault_IRQn = -10,/**< 6 Cortex-M4 Usage Fault Interrupt */ 92 SVCall_IRQn = -5, /**< 11 Cortex-M4 SV Call Interrupt */ 93 DebugMonitor_IRQn = -4, /**< 12 Cortex-M4 Debug Monitor Interrupt */ 94 PendSV_IRQn = -2, /**< 14 Cortex-M4 Pend SV Interrupt */ 95 SysTick_IRQn = -1, /**< 15 Cortex-M4 System Tick Interrupt */ 96 /****** SAM4LC8A-specific Interrupt Numbers ***********************/ 97 HFLASHC_IRQn = 0, /**< 0 SAM4LC8A Flash Controller (HFLASHC) */ 98 PDCA_0_IRQn = 1, /**< 1 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_0 */ 99 PDCA_1_IRQn = 2, /**< 2 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_1 */ 100 PDCA_2_IRQn = 3, /**< 3 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_2 */ 101 PDCA_3_IRQn = 4, /**< 4 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_3 */ 102 PDCA_4_IRQn = 5, /**< 5 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_4 */ 103 PDCA_5_IRQn = 6, /**< 6 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_5 */ 104 PDCA_6_IRQn = 7, /**< 7 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_6 */ 105 PDCA_7_IRQn = 8, /**< 8 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_7 */ 106 PDCA_8_IRQn = 9, /**< 9 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_8 */ 107 PDCA_9_IRQn = 10, /**< 10 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_9 */ 108 PDCA_10_IRQn = 11, /**< 11 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_10 */ 109 PDCA_11_IRQn = 12, /**< 12 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_11 */ 110 PDCA_12_IRQn = 13, /**< 13 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_12 */ 111 PDCA_13_IRQn = 14, /**< 14 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_13 */ 112 PDCA_14_IRQn = 15, /**< 15 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_14 */ 113 PDCA_15_IRQn = 16, /**< 16 SAM4LC8A Peripheral DMA Controller (PDCA): PDCA_15 */ 114 CRCCU_IRQn = 17, /**< 17 SAM4LC8A CRC Calculation Unit (CRCCU) */ 115 USBC_IRQn = 18, /**< 18 SAM4LC8A USB 2.0 Interface (USBC) */ 116 PEVC_0_IRQn = 19, /**< 19 SAM4LC8A Peripheral Event Controller (PEVC): PEVC_TR */ 117 PEVC_1_IRQn = 20, /**< 20 SAM4LC8A Peripheral Event Controller (PEVC): PEVC_OV */ 118 AESA_IRQn = 21, /**< 21 SAM4LC8A Advanced Encryption Standard (AESA) */ 119 PM_IRQn = 22, /**< 22 SAM4LC8A Power Manager (PM) */ 120 SCIF_IRQn = 23, /**< 23 SAM4LC8A System Control Interface (SCIF) */ 121 FREQM_IRQn = 24, /**< 24 SAM4LC8A Frequency Meter (FREQM) */ 122 GPIO_0_IRQn = 25, /**< 25 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_0 */ 123 GPIO_1_IRQn = 26, /**< 26 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_1 */ 124 GPIO_2_IRQn = 27, /**< 27 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_2 */ 125 GPIO_3_IRQn = 28, /**< 28 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_3 */ 126 GPIO_4_IRQn = 29, /**< 29 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_4 */ 127 GPIO_5_IRQn = 30, /**< 30 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_5 */ 128 GPIO_6_IRQn = 31, /**< 31 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_6 */ 129 GPIO_7_IRQn = 32, /**< 32 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_7 */ 130 GPIO_8_IRQn = 33, /**< 33 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_8 */ 131 GPIO_9_IRQn = 34, /**< 34 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_9 */ 132 GPIO_10_IRQn = 35, /**< 35 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_10 */ 133 GPIO_11_IRQn = 36, /**< 36 SAM4LC8A General-Purpose Input/Output Controller (GPIO): GPIO_11 */ 134 BPM_IRQn = 37, /**< 37 SAM4LC8A Backup Power Manager (BPM) */ 135 BSCIF_IRQn = 38, /**< 38 SAM4LC8A Backup System Control Interface (BSCIF) */ 136 AST_0_IRQn = 39, /**< 39 SAM4LC8A Asynchronous Timer (AST): AST_ALARM */ 137 AST_1_IRQn = 40, /**< 40 SAM4LC8A Asynchronous Timer (AST): AST_PER */ 138 AST_2_IRQn = 41, /**< 41 SAM4LC8A Asynchronous Timer (AST): AST_OVF */ 139 AST_3_IRQn = 42, /**< 42 SAM4LC8A Asynchronous Timer (AST): AST_READY */ 140 AST_4_IRQn = 43, /**< 43 SAM4LC8A Asynchronous Timer (AST): AST_CLKREADY */ 141 WDT_IRQn = 44, /**< 44 SAM4LC8A Watchdog Timer (WDT) */ 142 EIC_0_IRQn = 45, /**< 45 SAM4LC8A External Interrupt Controller (EIC): EIC_1 */ 143 EIC_1_IRQn = 46, /**< 46 SAM4LC8A External Interrupt Controller (EIC): EIC_2 */ 144 EIC_2_IRQn = 47, /**< 47 SAM4LC8A External Interrupt Controller (EIC): EIC_3 */ 145 EIC_3_IRQn = 48, /**< 48 SAM4LC8A External Interrupt Controller (EIC): EIC_4 */ 146 EIC_4_IRQn = 49, /**< 49 SAM4LC8A External Interrupt Controller (EIC): EIC_5 */ 147 EIC_5_IRQn = 50, /**< 50 SAM4LC8A External Interrupt Controller (EIC): EIC_6 */ 148 EIC_6_IRQn = 51, /**< 51 SAM4LC8A External Interrupt Controller (EIC): EIC_7 */ 149 EIC_7_IRQn = 52, /**< 52 SAM4LC8A External Interrupt Controller (EIC): EIC_8 */ 150 IISC_IRQn = 53, /**< 53 SAM4LC8A Inter-IC Sound (I2S) Controller (IISC) */ 151 SPI_IRQn = 54, /**< 54 SAM4LC8A Serial Peripheral Interface (SPI) */ 152 TC0_0_IRQn = 55, /**< 55 SAM4LC8A Timer/Counter 0 (TC0): TC00 */ 153 TC0_1_IRQn = 56, /**< 56 SAM4LC8A Timer/Counter 0 (TC0): TC01 */ 154 TC0_2_IRQn = 57, /**< 57 SAM4LC8A Timer/Counter 0 (TC0): TC02 */ 155 TC1_0_IRQn = 58, /**< 58 SAM4LC8A Timer/Counter 1 (TC1): TC10 */ 156 TC1_1_IRQn = 59, /**< 59 SAM4LC8A Timer/Counter 1 (TC1): TC11 */ 157 TC1_2_IRQn = 60, /**< 60 SAM4LC8A Timer/Counter 1 (TC1): TC12 */ 158 TWIM0_IRQn = 61, /**< 61 SAM4LC8A Two-wire Master Interface 0 (TWIM0) */ 159 TWIS0_IRQn = 62, /**< 62 SAM4LC8A Two-wire Slave Interface 0 (TWIS0) */ 160 TWIM1_IRQn = 63, /**< 63 SAM4LC8A Two-wire Master Interface 1 (TWIM1) */ 161 TWIS1_IRQn = 64, /**< 64 SAM4LC8A Two-wire Slave Interface 1 (TWIS1) */ 162 USART0_IRQn = 65, /**< 65 SAM4LC8A Universal Synchronous Asynchronous Receiver Transmitter 0 (USART0) */ 163 USART1_IRQn = 66, /**< 66 SAM4LC8A Universal Synchronous Asynchronous Receiver Transmitter 1 (USART1) */ 164 USART2_IRQn = 67, /**< 67 SAM4LC8A Universal Synchronous Asynchronous Receiver Transmitter 2 (USART2) */ 165 USART3_IRQn = 68, /**< 68 SAM4LC8A Universal Synchronous Asynchronous Receiver Transmitter 3 (USART3) */ 166 ADCIFE_IRQn = 69, /**< 69 SAM4LC8A ADC controller interface (ADCIFE) */ 167 DACC_IRQn = 70, /**< 70 SAM4LC8A DAC Controller (DACC) */ 168 ACIFC_IRQn = 71, /**< 71 SAM4LC8A Analog Comparator Interface (ACIFC) */ 169 ABDACB_IRQn = 72, /**< 72 SAM4LC8A Audio Bitstream DAC (ABDACB) */ 170 TRNG_IRQn = 73, /**< 73 SAM4LC8A True Random Number Generator (TRNG) */ 171 PARC_IRQn = 74, /**< 74 SAM4LC8A Parallel Capture (PARC) */ 172 CATB_IRQn = 75, /**< 75 SAM4LC8A Capacitive Touch Module B (CATB) */ 173 TWIM2_IRQn = 77, /**< 77 SAM4LC8A Two-wire Master Interface 2 (TWIM2) */ 174 TWIM3_IRQn = 78, /**< 78 SAM4LC8A Two-wire Master Interface 3 (TWIM3) */ 175 LCDCA_IRQn = 79, /**< 79 SAM4LC8A LCD Controller (LCDCA) */ 176 177 PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */ 178 } IRQn_Type; 179 180 typedef struct _DeviceVectors 181 { 182 /* Stack pointer */ 183 void* pvStack; 184 185 /* Cortex-M handlers */ 186 void* pfnReset_Handler; 187 void* pfnNMI_Handler; 188 void* pfnHardFault_Handler; 189 void* pfnMemManage_Handler; 190 void* pfnBusFault_Handler; 191 void* pfnUsageFault_Handler; 192 void* pvReservedM9; 193 void* pvReservedM8; 194 void* pvReservedM7; 195 void* pvReservedM6; 196 void* pfnSVC_Handler; 197 void* pfnDebugMon_Handler; 198 void* pvReservedM3; 199 void* pfnPendSV_Handler; 200 void* pfnSysTick_Handler; 201 202 /* Peripheral handlers */ 203 void* pfnHFLASHC_Handler; /* 0 Flash Controller */ 204 void* pfnPDCA_0_Handler; /* 1 Peripheral DMA Controller IRQ 0 */ 205 void* pfnPDCA_1_Handler; /* 2 Peripheral DMA Controller IRQ 1 */ 206 void* pfnPDCA_2_Handler; /* 3 Peripheral DMA Controller IRQ 2 */ 207 void* pfnPDCA_3_Handler; /* 4 Peripheral DMA Controller IRQ 3 */ 208 void* pfnPDCA_4_Handler; /* 5 Peripheral DMA Controller IRQ 4 */ 209 void* pfnPDCA_5_Handler; /* 6 Peripheral DMA Controller IRQ 5 */ 210 void* pfnPDCA_6_Handler; /* 7 Peripheral DMA Controller IRQ 6 */ 211 void* pfnPDCA_7_Handler; /* 8 Peripheral DMA Controller IRQ 7 */ 212 void* pfnPDCA_8_Handler; /* 9 Peripheral DMA Controller IRQ 8 */ 213 void* pfnPDCA_9_Handler; /* 10 Peripheral DMA Controller IRQ 9 */ 214 void* pfnPDCA_10_Handler; /* 11 Peripheral DMA Controller IRQ 10 */ 215 void* pfnPDCA_11_Handler; /* 12 Peripheral DMA Controller IRQ 11 */ 216 void* pfnPDCA_12_Handler; /* 13 Peripheral DMA Controller IRQ 12 */ 217 void* pfnPDCA_13_Handler; /* 14 Peripheral DMA Controller IRQ 13 */ 218 void* pfnPDCA_14_Handler; /* 15 Peripheral DMA Controller IRQ 14 */ 219 void* pfnPDCA_15_Handler; /* 16 Peripheral DMA Controller IRQ 15 */ 220 void* pfnCRCCU_Handler; /* 17 CRC Calculation Unit */ 221 void* pfnUSBC_Handler; /* 18 USB 2.0 Interface */ 222 void* pfnPEVC_0_Handler; /* 19 Peripheral Event Controller IRQ 0 */ 223 void* pfnPEVC_1_Handler; /* 20 Peripheral Event Controller IRQ 1 */ 224 void* pfnAESA_Handler; /* 21 Advanced Encryption Standard */ 225 void* pfnPM_Handler; /* 22 Power Manager */ 226 void* pfnSCIF_Handler; /* 23 System Control Interface */ 227 void* pfnFREQM_Handler; /* 24 Frequency Meter */ 228 void* pfnGPIO_0_Handler; /* 25 General-Purpose Input/Output Controller IRQ 0 */ 229 void* pfnGPIO_1_Handler; /* 26 General-Purpose Input/Output Controller IRQ 1 */ 230 void* pfnGPIO_2_Handler; /* 27 General-Purpose Input/Output Controller IRQ 2 */ 231 void* pfnGPIO_3_Handler; /* 28 General-Purpose Input/Output Controller IRQ 3 */ 232 void* pfnGPIO_4_Handler; /* 29 General-Purpose Input/Output Controller IRQ 4 */ 233 void* pfnGPIO_5_Handler; /* 30 General-Purpose Input/Output Controller IRQ 5 */ 234 void* pfnGPIO_6_Handler; /* 31 General-Purpose Input/Output Controller IRQ 6 */ 235 void* pfnGPIO_7_Handler; /* 32 General-Purpose Input/Output Controller IRQ 7 */ 236 void* pfnGPIO_8_Handler; /* 33 General-Purpose Input/Output Controller IRQ 8 */ 237 void* pfnGPIO_9_Handler; /* 34 General-Purpose Input/Output Controller IRQ 9 */ 238 void* pfnGPIO_10_Handler; /* 35 General-Purpose Input/Output Controller IRQ 10 */ 239 void* pfnGPIO_11_Handler; /* 36 General-Purpose Input/Output Controller IRQ 11 */ 240 void* pfnBPM_Handler; /* 37 Backup Power Manager */ 241 void* pfnBSCIF_Handler; /* 38 Backup System Control Interface */ 242 void* pfnAST_0_Handler; /* 39 Asynchronous Timer IRQ 0 */ 243 void* pfnAST_1_Handler; /* 40 Asynchronous Timer IRQ 1 */ 244 void* pfnAST_2_Handler; /* 41 Asynchronous Timer IRQ 2 */ 245 void* pfnAST_3_Handler; /* 42 Asynchronous Timer IRQ 3 */ 246 void* pfnAST_4_Handler; /* 43 Asynchronous Timer IRQ 4 */ 247 void* pfnWDT_Handler; /* 44 Watchdog Timer */ 248 void* pfnEIC_0_Handler; /* 45 External Interrupt Controller IRQ 0 */ 249 void* pfnEIC_1_Handler; /* 46 External Interrupt Controller IRQ 1 */ 250 void* pfnEIC_2_Handler; /* 47 External Interrupt Controller IRQ 2 */ 251 void* pfnEIC_3_Handler; /* 48 External Interrupt Controller IRQ 3 */ 252 void* pfnEIC_4_Handler; /* 49 External Interrupt Controller IRQ 4 */ 253 void* pfnEIC_5_Handler; /* 50 External Interrupt Controller IRQ 5 */ 254 void* pfnEIC_6_Handler; /* 51 External Interrupt Controller IRQ 6 */ 255 void* pfnEIC_7_Handler; /* 52 External Interrupt Controller IRQ 7 */ 256 void* pfnIISC_Handler; /* 53 Inter-IC Sound (I2S) Controller */ 257 void* pfnSPI_Handler; /* 54 Serial Peripheral Interface */ 258 void* pfnTC0_0_Handler; /* 55 Timer/Counter 0 IRQ 0 */ 259 void* pfnTC0_1_Handler; /* 56 Timer/Counter 0 IRQ 1 */ 260 void* pfnTC0_2_Handler; /* 57 Timer/Counter 0 IRQ 2 */ 261 void* pfnTC1_0_Handler; /* 58 Timer/Counter 1 IRQ 0 */ 262 void* pfnTC1_1_Handler; /* 59 Timer/Counter 1 IRQ 1 */ 263 void* pfnTC1_2_Handler; /* 60 Timer/Counter 1 IRQ 2 */ 264 void* pfnTWIM0_Handler; /* 61 Two-wire Master Interface 0 */ 265 void* pfnTWIS0_Handler; /* 62 Two-wire Slave Interface 0 */ 266 void* pfnTWIM1_Handler; /* 63 Two-wire Master Interface 1 */ 267 void* pfnTWIS1_Handler; /* 64 Two-wire Slave Interface 1 */ 268 void* pfnUSART0_Handler; /* 65 Universal Synchronous Asynchronous Receiver Transmitter 0 */ 269 void* pfnUSART1_Handler; /* 66 Universal Synchronous Asynchronous Receiver Transmitter 1 */ 270 void* pfnUSART2_Handler; /* 67 Universal Synchronous Asynchronous Receiver Transmitter 2 */ 271 void* pfnUSART3_Handler; /* 68 Universal Synchronous Asynchronous Receiver Transmitter 3 */ 272 void* pfnADCIFE_Handler; /* 69 ADC controller interface */ 273 void* pfnDACC_Handler; /* 70 DAC Controller */ 274 void* pfnACIFC_Handler; /* 71 Analog Comparator Interface */ 275 void* pfnABDACB_Handler; /* 72 Audio Bitstream DAC */ 276 void* pfnTRNG_Handler; /* 73 True Random Number Generator */ 277 void* pfnPARC_Handler; /* 74 Parallel Capture */ 278 void* pfnCATB_Handler; /* 75 Capacitive Touch Module B */ 279 void* pvReserved76; 280 void* pfnTWIM2_Handler; /* 77 Two-wire Master Interface 2 */ 281 void* pfnTWIM3_Handler; /* 78 Two-wire Master Interface 3 */ 282 void* pfnLCDCA_Handler; /* 79 LCD Controller */ 283 } DeviceVectors; 284 285 /* Cortex-M4 processor handlers */ 286 void Reset_Handler ( void ); 287 void NMI_Handler ( void ); 288 void HardFault_Handler ( void ); 289 void MemManage_Handler ( void ); 290 void BusFault_Handler ( void ); 291 void UsageFault_Handler ( void ); 292 void SVC_Handler ( void ); 293 void DebugMon_Handler ( void ); 294 void PendSV_Handler ( void ); 295 void SysTick_Handler ( void ); 296 297 /* Peripherals handlers */ 298 void HFLASHC_Handler ( void ); 299 void PDCA_0_Handler ( void ); 300 void PDCA_1_Handler ( void ); 301 void PDCA_2_Handler ( void ); 302 void PDCA_3_Handler ( void ); 303 void PDCA_4_Handler ( void ); 304 void PDCA_5_Handler ( void ); 305 void PDCA_6_Handler ( void ); 306 void PDCA_7_Handler ( void ); 307 void PDCA_8_Handler ( void ); 308 void PDCA_9_Handler ( void ); 309 void PDCA_10_Handler ( void ); 310 void PDCA_11_Handler ( void ); 311 void PDCA_12_Handler ( void ); 312 void PDCA_13_Handler ( void ); 313 void PDCA_14_Handler ( void ); 314 void PDCA_15_Handler ( void ); 315 void CRCCU_Handler ( void ); 316 void USBC_Handler ( void ); 317 void PEVC_0_Handler ( void ); 318 void PEVC_1_Handler ( void ); 319 void AESA_Handler ( void ); 320 void PM_Handler ( void ); 321 void SCIF_Handler ( void ); 322 void FREQM_Handler ( void ); 323 void GPIO_0_Handler ( void ); 324 void GPIO_1_Handler ( void ); 325 void GPIO_2_Handler ( void ); 326 void GPIO_3_Handler ( void ); 327 void GPIO_4_Handler ( void ); 328 void GPIO_5_Handler ( void ); 329 void GPIO_6_Handler ( void ); 330 void GPIO_7_Handler ( void ); 331 void GPIO_8_Handler ( void ); 332 void GPIO_9_Handler ( void ); 333 void GPIO_10_Handler ( void ); 334 void GPIO_11_Handler ( void ); 335 void BPM_Handler ( void ); 336 void BSCIF_Handler ( void ); 337 void AST_0_Handler ( void ); 338 void AST_1_Handler ( void ); 339 void AST_2_Handler ( void ); 340 void AST_3_Handler ( void ); 341 void AST_4_Handler ( void ); 342 void WDT_Handler ( void ); 343 void EIC_0_Handler ( void ); 344 void EIC_1_Handler ( void ); 345 void EIC_2_Handler ( void ); 346 void EIC_3_Handler ( void ); 347 void EIC_4_Handler ( void ); 348 void EIC_5_Handler ( void ); 349 void EIC_6_Handler ( void ); 350 void EIC_7_Handler ( void ); 351 void IISC_Handler ( void ); 352 void SPI_Handler ( void ); 353 void TC0_0_Handler ( void ); 354 void TC0_1_Handler ( void ); 355 void TC0_2_Handler ( void ); 356 void TC1_0_Handler ( void ); 357 void TC1_1_Handler ( void ); 358 void TC1_2_Handler ( void ); 359 void TWIM0_Handler ( void ); 360 void TWIS0_Handler ( void ); 361 void TWIM1_Handler ( void ); 362 void TWIS1_Handler ( void ); 363 void USART0_Handler ( void ); 364 void USART1_Handler ( void ); 365 void USART2_Handler ( void ); 366 void USART3_Handler ( void ); 367 void ADCIFE_Handler ( void ); 368 void DACC_Handler ( void ); 369 void ACIFC_Handler ( void ); 370 void ABDACB_Handler ( void ); 371 void TRNG_Handler ( void ); 372 void PARC_Handler ( void ); 373 void CATB_Handler ( void ); 374 void TWIM2_Handler ( void ); 375 void TWIM3_Handler ( void ); 376 void LCDCA_Handler ( void ); 377 378 /* 379 * \brief Configuration of the Cortex-M4 Processor and Core Peripherals 380 */ 381 382 #define __BB_PRESENT 0 /*!< BIT_BANDING present or not */ 383 #define __CLKGATE_PRESENT 1 /*!< CLKGATE present or not */ 384 #define __CM4_REV 1 /*!< Core revision r0p1 */ 385 #define __DEBUG_LVL 3 /*!< Full debug plus DWT data matching */ 386 #define __FPU_PRESENT 0 /*!< FPU present or not */ 387 #define __JTAG_PRESENT 1 /*!< JTAG present or not */ 388 #define __MPU_PRESENT 1 /*!< MPU present or not */ 389 #define __NVIC_PRIO_BITS 4 /*!< Number of bits used for Priority Levels */ 390 #define __TRACE_LVL 1 /*!< Standard trace: ITM and DWT triggers and counters, but no ETM */ 391 #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ 392 #define __WIC_PRESENT 0 /*!< WIC present or not */ 393 394 /** 395 * \brief CMSIS includes 396 */ 397 398 #include <core_cm4.h> 399 #if !defined DONT_USE_CMSIS_INIT 400 #include "system_sam4l.h" 401 #endif /* DONT_USE_CMSIS_INIT */ 402 403 /*@}*/ 404 405 /* ************************************************************************** */ 406 /** SOFTWARE PERIPHERAL API DEFINITION FOR SAM4LC8A */ 407 /* ************************************************************************** */ 408 /** \defgroup SAM4LC8A_api Peripheral Software API */ 409 /*@{*/ 410 411 #include "component/abdacb.h" 412 #include "component/acifc.h" 413 #include "component/adcife.h" 414 #include "component/aesa.h" 415 #include "component/ast.h" 416 #include "component/bpm.h" 417 #include "component/bscif.h" 418 #include "component/catb.h" 419 #include "component/chipid.h" 420 #include "component/crccu.h" 421 #include "component/dacc.h" 422 #include "component/eic.h" 423 #include "component/flashcalw.h" 424 #include "component/freqm.h" 425 #include "component/gloc.h" 426 #include "component/gpio.h" 427 #include "component/hcache.h" 428 #include "component/hmatrixb.h" 429 #include "component/iisc.h" 430 #include "component/lcdca.h" 431 #include "component/parc.h" 432 #include "component/pdca.h" 433 #include "component/pevc.h" 434 #include "component/picouart.h" 435 #include "component/pm.h" 436 #include "component/scif.h" 437 #include "component/smap.h" 438 #include "component/spi.h" 439 #include "component/tc.h" 440 #include "component/trng.h" 441 #include "component/twim.h" 442 #include "component/twis.h" 443 #include "component/usart.h" 444 #include "component/usbc.h" 445 #include "component/wdt.h" 446 /*@}*/ 447 448 /* ************************************************************************** */ 449 /** REGISTERS ACCESS DEFINITIONS FOR SAM4LC8A */ 450 /* ************************************************************************** */ 451 /** \defgroup SAM4LC8A_reg Registers Access Definitions */ 452 /*@{*/ 453 454 #include "instance/abdacb.h" 455 #include "instance/acifc.h" 456 #include "instance/adcife.h" 457 #include "instance/aesa.h" 458 #include "instance/ast.h" 459 #include "instance/bpm.h" 460 #include "instance/bscif.h" 461 #include "instance/catb.h" 462 #include "instance/chipid.h" 463 #include "instance/crccu.h" 464 #include "instance/dacc.h" 465 #include "instance/eic.h" 466 #include "instance/hflashc.h" 467 #include "instance/freqm.h" 468 #include "instance/gloc.h" 469 #include "instance/gpio.h" 470 #include "instance/hcache.h" 471 #include "instance/hmatrix.h" 472 #include "instance/iisc.h" 473 #include "instance/lcdca.h" 474 #include "instance/parc.h" 475 #include "instance/pdca.h" 476 #include "instance/pevc.h" 477 #include "instance/picouart.h" 478 #include "instance/pm.h" 479 #include "instance/scif.h" 480 #include "instance/smap.h" 481 #include "instance/spi.h" 482 #include "instance/tc0.h" 483 #include "instance/tc1.h" 484 #include "instance/trng.h" 485 #include "instance/twim0.h" 486 #include "instance/twim1.h" 487 #include "instance/twim2.h" 488 #include "instance/twim3.h" 489 #include "instance/twis0.h" 490 #include "instance/twis1.h" 491 #include "instance/usart0.h" 492 #include "instance/usart1.h" 493 #include "instance/usart2.h" 494 #include "instance/usart3.h" 495 #include "instance/usbc.h" 496 #include "instance/wdt.h" 497 /*@}*/ 498 499 /* ************************************************************************** */ 500 /** PERIPHERAL ID DEFINITIONS FOR SAM4LC8A */ 501 /* ************************************************************************** */ 502 /** \defgroup SAM4LC8A_id Peripheral Ids Definitions */ 503 /*@{*/ 504 505 // Peripheral instances on HTOP0 bridge 506 #define ID_IISC 0 /**< \brief Inter-IC Sound (I2S) Controller (IISC) */ 507 #define ID_SPI 1 /**< \brief Serial Peripheral Interface (SPI) */ 508 #define ID_TC0 2 /**< \brief Timer/Counter 0 (TC0) */ 509 #define ID_TC1 3 /**< \brief Timer/Counter 1 (TC1) */ 510 #define ID_TWIM0 4 /**< \brief Two-wire Master Interface 0 (TWIM0) */ 511 #define ID_TWIS0 5 /**< \brief Two-wire Slave Interface 0 (TWIS0) */ 512 #define ID_TWIM1 6 /**< \brief Two-wire Master Interface 1 (TWIM1) */ 513 #define ID_TWIS1 7 /**< \brief Two-wire Slave Interface 1 (TWIS1) */ 514 #define ID_USART0 8 /**< \brief Universal Synchronous Asynchronous Receiver Transmitter 0 (USART0) */ 515 #define ID_USART1 9 /**< \brief Universal Synchronous Asynchronous Receiver Transmitter 1 (USART1) */ 516 #define ID_USART2 10 /**< \brief Universal Synchronous Asynchronous Receiver Transmitter 2 (USART2) */ 517 #define ID_USART3 11 /**< \brief Universal Synchronous Asynchronous Receiver Transmitter 3 (USART3) */ 518 #define ID_ADCIFE 12 /**< \brief ADC controller interface (ADCIFE) */ 519 #define ID_DACC 13 /**< \brief DAC Controller (DACC) */ 520 #define ID_ACIFC 14 /**< \brief Analog Comparator Interface (ACIFC) */ 521 #define ID_GLOC 15 /**< \brief Glue Logic Controller (GLOC) */ 522 #define ID_ABDACB 16 /**< \brief Audio Bitstream DAC (ABDACB) */ 523 #define ID_TRNG 17 /**< \brief True Random Number Generator (TRNG) */ 524 #define ID_PARC 18 /**< \brief Parallel Capture (PARC) */ 525 #define ID_CATB 19 /**< \brief Capacitive Touch Module B (CATB) */ 526 #define ID_TWIM2 21 /**< \brief Two-wire Master Interface 2 (TWIM2) */ 527 #define ID_TWIM3 22 /**< \brief Two-wire Master Interface 3 (TWIM3) */ 528 #define ID_LCDCA 23 /**< \brief LCD Controller (LCDCA) */ 529 530 // Peripheral instances on HTOP1 bridge 531 #define ID_HFLASHC 32 /**< \brief Flash Controller (HFLASHC) */ 532 #define ID_HCACHE 33 /**< \brief Cortex M I&D Cache Controller (HCACHE) */ 533 #define ID_HMATRIX 34 /**< \brief HSB Matrix (HMATRIX) */ 534 #define ID_PDCA 35 /**< \brief Peripheral DMA Controller (PDCA) */ 535 #define ID_SMAP 36 /**< \brief System Manager Access Port (SMAP) */ 536 #define ID_CRCCU 37 /**< \brief CRC Calculation Unit (CRCCU) */ 537 #define ID_USBC 38 /**< \brief USB 2.0 Interface (USBC) */ 538 #define ID_PEVC 39 /**< \brief Peripheral Event Controller (PEVC) */ 539 540 // Peripheral instances on HTOP2 bridge 541 #define ID_PM 64 /**< \brief Power Manager (PM) */ 542 #define ID_CHIPID 65 /**< \brief Chip ID Registers (CHIPID) */ 543 #define ID_SCIF 66 /**< \brief System Control Interface (SCIF) */ 544 #define ID_FREQM 67 /**< \brief Frequency Meter (FREQM) */ 545 #define ID_GPIO 68 /**< \brief General-Purpose Input/Output Controller (GPIO) */ 546 547 // Peripheral instances on HTOP3 bridge 548 #define ID_BPM 96 /**< \brief Backup Power Manager (BPM) */ 549 #define ID_BSCIF 97 /**< \brief Backup System Control Interface (BSCIF) */ 550 #define ID_AST 98 /**< \brief Asynchronous Timer (AST) */ 551 #define ID_WDT 99 /**< \brief Watchdog Timer (WDT) */ 552 #define ID_EIC 100 /**< \brief External Interrupt Controller (EIC) */ 553 #define ID_PICOUART 101 /**< \brief Pico UART (PICOUART) */ 554 555 // Peripheral instances on AHB (as if on bridge 4) 556 #define ID_AESA 128 /**< \brief Advanced Encryption Standard (AESA) */ 557 558 #define ID_PERIPH_COUNT 129 /**< \brief Max number of peripheral IDs */ 559 /*@}*/ 560 561 /* ************************************************************************** */ 562 /** BASE ADDRESS DEFINITIONS FOR SAM4LC8A */ 563 /* ************************************************************************** */ 564 /** \defgroup SAM4LC8A_base Peripheral Base Address Definitions */ 565 /*@{*/ 566 567 #if defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__) 568 #define ABDACB (0x40064000) /**< \brief (ABDACB) APB Base Address */ 569 #define ACIFC (0x40040000) /**< \brief (ACIFC) APB Base Address */ 570 #define ADCIFE (0x40038000) /**< \brief (ADCIFE) APB Base Address */ 571 #define AESA (0x400B0000) /**< \brief (AESA) AHB Base Address */ 572 #define AST (0x400F0800) /**< \brief (AST) APB Base Address */ 573 #define BPM (0x400F0000) /**< \brief (BPM) APB Base Address */ 574 #define BSCIF (0x400F0400) /**< \brief (BSCIF) APB Base Address */ 575 #define CATB (0x40070000) /**< \brief (CATB) APB Base Address */ 576 #define CHIPID (0x400E0400) /**< \brief (CHIPID) APB Base Address */ 577 #define CRCCU (0x400A4000) /**< \brief (CRCCU) APB Base Address */ 578 #define DACC (0x4003C000) /**< \brief (DACC) APB Base Address */ 579 #define EIC (0x400F1000) /**< \brief (EIC) APB Base Address */ 580 #define HFLASHC (0x400A0000) /**< \brief (HFLASHC) APB Base Address */ 581 #define HFLASHC_FROW (0x00800200) /**< \brief (HFLASHC) FROW Base Address */ 582 #define HFLASHC_USER (0x00800000) /**< \brief (HFLASHC) USER Base Address */ 583 #define FREQM (0x400E0C00) /**< \brief (FREQM) APB Base Address */ 584 #define GLOC (0x40060000) /**< \brief (GLOC) APB Base Address */ 585 #define GPIO (0x400E1000) /**< \brief (GPIO) APB Base Address */ 586 #define HCACHE (0x400A0400) /**< \brief (HCACHE) APB Base Address */ 587 #define HMATRIX (0x400A1000) /**< \brief (HMATRIX) APB Base Address */ 588 #define IISC (0x40004000) /**< \brief (IISC) APB Base Address */ 589 #define LCDCA (0x40080000) /**< \brief (LCDCA) APB Base Address */ 590 #define PARC (0x4006C000) /**< \brief (PARC) APB Base Address */ 591 #define PDCA (0x400A2000) /**< \brief (PDCA) APB Base Address */ 592 #define PEVC (0x400A6000) /**< \brief (PEVC) APB Base Address */ 593 #define PICOUART (0x400F1400) /**< \brief (PICOUART) APB Base Address */ 594 #define PM (0x400E0000) /**< \brief (PM) APB Base Address */ 595 #define SCIF (0x400E0800) /**< \brief (SCIF) APB Base Address */ 596 #define SMAP (0x400A3000) /**< \brief (SMAP) APB Base Address */ 597 #define SPI (0x40008000) /**< \brief (SPI) APB Base Address */ 598 #define TC0 (0x40010000) /**< \brief (TC0) APB Base Address */ 599 #define TC1 (0x40014000) /**< \brief (TC1) APB Base Address */ 600 #define TRNG (0x40068000) /**< \brief (TRNG) APB Base Address */ 601 #define TWIM0 (0x40018000) /**< \brief (TWIM0) APB Base Address */ 602 #define TWIM1 (0x4001C000) /**< \brief (TWIM1) APB Base Address */ 603 #define TWIM2 (0x40078000) /**< \brief (TWIM2) APB Base Address */ 604 #define TWIM3 (0x4007C000) /**< \brief (TWIM3) APB Base Address */ 605 #define TWIS0 (0x40018400) /**< \brief (TWIS0) APB Base Address */ 606 #define TWIS1 (0x4001C400) /**< \brief (TWIS1) APB Base Address */ 607 #define USART0 (0x40024000) /**< \brief (USART0) APB Base Address */ 608 #define USART1 (0x40028000) /**< \brief (USART1) APB Base Address */ 609 #define USART2 (0x4002C000) /**< \brief (USART2) APB Base Address */ 610 #define USART3 (0x40030000) /**< \brief (USART3) APB Base Address */ 611 #define USBC (0x400A5000) /**< \brief (USBC) APB Base Address */ 612 #define WDT (0x400F0C00) /**< \brief (WDT) APB Base Address */ 613 #else 614 #define ABDACB ((Abdacb *)0x40064000UL) /**< \brief (ABDACB) APB Base Address */ 615 #define ABDACB_ADDR (0x40064000UL) /**< \brief (ABDACB) APB Base Address */ 616 #define ABDACB_INST_NUM 1 /**< \brief (ABDACB) Number of instances */ 617 #define ABDACB_INSTS { ABDACB } /**< \brief (ABDACB) Instances List */ 618 619 #define ACIFC ((Acifc *)0x40040000UL) /**< \brief (ACIFC) APB Base Address */ 620 #define ACIFC_ADDR (0x40040000UL) /**< \brief (ACIFC) APB Base Address */ 621 #define ACIFC_INST_NUM 1 /**< \brief (ACIFC) Number of instances */ 622 #define ACIFC_INSTS { ACIFC } /**< \brief (ACIFC) Instances List */ 623 624 #define ADCIFE ((Adcife *)0x40038000UL) /**< \brief (ADCIFE) APB Base Address */ 625 #define ADCIFE_ADDR (0x40038000UL) /**< \brief (ADCIFE) APB Base Address */ 626 #define ADCIFE_INST_NUM 1 /**< \brief (ADCIFE) Number of instances */ 627 #define ADCIFE_INSTS { ADCIFE } /**< \brief (ADCIFE) Instances List */ 628 629 #define AESA ((Aesa *)0x400B0000UL) /**< \brief (AESA) AHB Base Address */ 630 #define AESA_ADDR (0x400B0000UL) /**< \brief (AESA) AHB Base Address */ 631 #define AESA_INST_NUM 1 /**< \brief (AESA) Number of instances */ 632 #define AESA_INSTS { AESA } /**< \brief (AESA) Instances List */ 633 634 #define AST ((Ast *)0x400F0800UL) /**< \brief (AST) APB Base Address */ 635 #define AST_ADDR (0x400F0800UL) /**< \brief (AST) APB Base Address */ 636 #define AST_INST_NUM 1 /**< \brief (AST) Number of instances */ 637 #define AST_INSTS { AST } /**< \brief (AST) Instances List */ 638 639 #define BPM ((Bpm *)0x400F0000UL) /**< \brief (BPM) APB Base Address */ 640 #define BPM_ADDR (0x400F0000UL) /**< \brief (BPM) APB Base Address */ 641 #define BPM_INST_NUM 1 /**< \brief (BPM) Number of instances */ 642 #define BPM_INSTS { BPM } /**< \brief (BPM) Instances List */ 643 644 #define BSCIF ((Bscif *)0x400F0400UL) /**< \brief (BSCIF) APB Base Address */ 645 #define BSCIF_ADDR (0x400F0400UL) /**< \brief (BSCIF) APB Base Address */ 646 #define BSCIF_INST_NUM 1 /**< \brief (BSCIF) Number of instances */ 647 #define BSCIF_INSTS { BSCIF } /**< \brief (BSCIF) Instances List */ 648 649 #define CATB ((Catb *)0x40070000UL) /**< \brief (CATB) APB Base Address */ 650 #define CATB_ADDR (0x40070000UL) /**< \brief (CATB) APB Base Address */ 651 #define CATB_INST_NUM 1 /**< \brief (CATB) Number of instances */ 652 #define CATB_INSTS { CATB } /**< \brief (CATB) Instances List */ 653 654 #define CHIPID ((Chipid *)0x400E0400UL) /**< \brief (CHIPID) APB Base Address */ 655 #define CHIPID_ADDR (0x400E0400UL) /**< \brief (CHIPID) APB Base Address */ 656 #define CHIPID_INST_NUM 1 /**< \brief (CHIPID) Number of instances */ 657 #define CHIPID_INSTS { CHIPID } /**< \brief (CHIPID) Instances List */ 658 659 #define CRCCU ((Crccu *)0x400A4000UL) /**< \brief (CRCCU) APB Base Address */ 660 #define CRCCU_ADDR (0x400A4000UL) /**< \brief (CRCCU) APB Base Address */ 661 #define CRCCU_INST_NUM 1 /**< \brief (CRCCU) Number of instances */ 662 #define CRCCU_INSTS { CRCCU } /**< \brief (CRCCU) Instances List */ 663 664 #define DACC ((Dacc *)0x4003C000UL) /**< \brief (DACC) APB Base Address */ 665 #define DACC_ADDR (0x4003C000UL) /**< \brief (DACC) APB Base Address */ 666 #define DACC_INST_NUM 1 /**< \brief (DACC) Number of instances */ 667 #define DACC_INSTS { DACC } /**< \brief (DACC) Instances List */ 668 669 #define EIC ((Eic *)0x400F1000UL) /**< \brief (EIC) APB Base Address */ 670 #define EIC_ADDR (0x400F1000UL) /**< \brief (EIC) APB Base Address */ 671 #define EIC_INST_NUM 1 /**< \brief (EIC) Number of instances */ 672 #define EIC_INSTS { EIC } /**< \brief (EIC) Instances List */ 673 674 #define HFLASHC ((Flashcalw *)0x400A0000UL) /**< \brief (HFLASHC) APB Base Address */ 675 #define HFLASHC_ADDR (0x400A0000UL) /**< \brief (HFLASHC) APB Base Address */ 676 #define HFLASHC_FROW (0x00800200UL) /**< \brief (HFLASHC) FROW Base Address */ 677 #define HFLASHC_FROW_ADDR (0x00800200UL) /**< \brief (HFLASHC) FROW Base Address */ 678 #define HFLASHC_USER (0x00800000UL) /**< \brief (HFLASHC) USER Base Address */ 679 #define HFLASHC_USER_ADDR (0x00800000UL) /**< \brief (HFLASHC) USER Base Address */ 680 #define FLASHCALW_INST_NUM 1 /**< \brief (FLASHCALW) Number of instances */ 681 #define FLASHCALW_INSTS { HFLASHC } /**< \brief (FLASHCALW) Instances List */ 682 683 #define FREQM ((Freqm *)0x400E0C00UL) /**< \brief (FREQM) APB Base Address */ 684 #define FREQM_ADDR (0x400E0C00UL) /**< \brief (FREQM) APB Base Address */ 685 #define FREQM_INST_NUM 1 /**< \brief (FREQM) Number of instances */ 686 #define FREQM_INSTS { FREQM } /**< \brief (FREQM) Instances List */ 687 688 #define GLOC ((Gloc *)0x40060000UL) /**< \brief (GLOC) APB Base Address */ 689 #define GLOC_ADDR (0x40060000UL) /**< \brief (GLOC) APB Base Address */ 690 #define GLOC_INST_NUM 1 /**< \brief (GLOC) Number of instances */ 691 #define GLOC_INSTS { GLOC } /**< \brief (GLOC) Instances List */ 692 693 #define GPIO ((Gpio *)0x400E1000UL) /**< \brief (GPIO) APB Base Address */ 694 #define GPIO_ADDR (0x400E1000UL) /**< \brief (GPIO) APB Base Address */ 695 #define GPIO_INST_NUM 1 /**< \brief (GPIO) Number of instances */ 696 #define GPIO_INSTS { GPIO } /**< \brief (GPIO) Instances List */ 697 698 #define HCACHE ((Hcache *)0x400A0400UL) /**< \brief (HCACHE) APB Base Address */ 699 #define HCACHE_ADDR (0x400A0400UL) /**< \brief (HCACHE) APB Base Address */ 700 #define HCACHE_INST_NUM 1 /**< \brief (HCACHE) Number of instances */ 701 #define HCACHE_INSTS { HCACHE } /**< \brief (HCACHE) Instances List */ 702 703 #define HMATRIX ((Hmatrixb *)0x400A1000UL) /**< \brief (HMATRIX) APB Base Address */ 704 #define HMATRIX_ADDR (0x400A1000UL) /**< \brief (HMATRIX) APB Base Address */ 705 #define HMATRIXB_INST_NUM 1 /**< \brief (HMATRIXB) Number of instances */ 706 #define HMATRIXB_INSTS { HMATRIX } /**< \brief (HMATRIXB) Instances List */ 707 708 #define IISC ((Iisc *)0x40004000UL) /**< \brief (IISC) APB Base Address */ 709 #define IISC_ADDR (0x40004000UL) /**< \brief (IISC) APB Base Address */ 710 #define IISC_INST_NUM 1 /**< \brief (IISC) Number of instances */ 711 #define IISC_INSTS { IISC } /**< \brief (IISC) Instances List */ 712 713 #define LCDCA ((Lcdca *)0x40080000UL) /**< \brief (LCDCA) APB Base Address */ 714 #define LCDCA_ADDR (0x40080000UL) /**< \brief (LCDCA) APB Base Address */ 715 #define LCDCA_INST_NUM 1 /**< \brief (LCDCA) Number of instances */ 716 #define LCDCA_INSTS { LCDCA } /**< \brief (LCDCA) Instances List */ 717 718 #define PARC ((Parc *)0x4006C000UL) /**< \brief (PARC) APB Base Address */ 719 #define PARC_ADDR (0x4006C000UL) /**< \brief (PARC) APB Base Address */ 720 #define PARC_INST_NUM 1 /**< \brief (PARC) Number of instances */ 721 #define PARC_INSTS { PARC } /**< \brief (PARC) Instances List */ 722 723 #define PDCA ((Pdca *)0x400A2000UL) /**< \brief (PDCA) APB Base Address */ 724 #define PDCA_ADDR (0x400A2000UL) /**< \brief (PDCA) APB Base Address */ 725 #define PDCA_INST_NUM 1 /**< \brief (PDCA) Number of instances */ 726 #define PDCA_INSTS { PDCA } /**< \brief (PDCA) Instances List */ 727 728 #define PEVC ((Pevc *)0x400A6000UL) /**< \brief (PEVC) APB Base Address */ 729 #define PEVC_ADDR (0x400A6000UL) /**< \brief (PEVC) APB Base Address */ 730 #define PEVC_INST_NUM 1 /**< \brief (PEVC) Number of instances */ 731 #define PEVC_INSTS { PEVC } /**< \brief (PEVC) Instances List */ 732 733 #define PICOUART ((Picouart *)0x400F1400UL) /**< \brief (PICOUART) APB Base Address */ 734 #define PICOUART_ADDR (0x400F1400UL) /**< \brief (PICOUART) APB Base Address */ 735 #define PICOUART_INST_NUM 1 /**< \brief (PICOUART) Number of instances */ 736 #define PICOUART_INSTS { PICOUART } /**< \brief (PICOUART) Instances List */ 737 738 #define PM ((Pm *)0x400E0000UL) /**< \brief (PM) APB Base Address */ 739 #define PM_ADDR (0x400E0000UL) /**< \brief (PM) APB Base Address */ 740 #define PM_INST_NUM 1 /**< \brief (PM) Number of instances */ 741 #define PM_INSTS { PM } /**< \brief (PM) Instances List */ 742 743 #define SCIF ((Scif *)0x400E0800UL) /**< \brief (SCIF) APB Base Address */ 744 #define SCIF_ADDR (0x400E0800UL) /**< \brief (SCIF) APB Base Address */ 745 #define SCIF_INST_NUM 1 /**< \brief (SCIF) Number of instances */ 746 #define SCIF_INSTS { SCIF } /**< \brief (SCIF) Instances List */ 747 748 #define SMAP ((Smap *)0x400A3000UL) /**< \brief (SMAP) APB Base Address */ 749 #define SMAP_ADDR (0x400A3000UL) /**< \brief (SMAP) APB Base Address */ 750 #define SMAP_INST_NUM 1 /**< \brief (SMAP) Number of instances */ 751 #define SMAP_INSTS { SMAP } /**< \brief (SMAP) Instances List */ 752 753 #define SPI ((Spi *)0x40008000UL) /**< \brief (SPI) APB Base Address */ 754 #define SPI_ADDR (0x40008000UL) /**< \brief (SPI) APB Base Address */ 755 #define SPI_INST_NUM 1 /**< \brief (SPI) Number of instances */ 756 #define SPI_INSTS { SPI } /**< \brief (SPI) Instances List */ 757 758 #define TC0 ((Tc *)0x40010000UL) /**< \brief (TC0) APB Base Address */ 759 #define TC0_ADDR (0x40010000UL) /**< \brief (TC0) APB Base Address */ 760 #define TC1 ((Tc *)0x40014000UL) /**< \brief (TC1) APB Base Address */ 761 #define TC1_ADDR (0x40014000UL) /**< \brief (TC1) APB Base Address */ 762 #define TC_INST_NUM 2 /**< \brief (TC) Number of instances */ 763 #define TC_INSTS { TC0, TC1 } /**< \brief (TC) Instances List */ 764 765 #define TRNG ((Trng *)0x40068000UL) /**< \brief (TRNG) APB Base Address */ 766 #define TRNG_ADDR (0x40068000UL) /**< \brief (TRNG) APB Base Address */ 767 #define TRNG_INST_NUM 1 /**< \brief (TRNG) Number of instances */ 768 #define TRNG_INSTS { TRNG } /**< \brief (TRNG) Instances List */ 769 770 #define TWIM0 ((Twim *)0x40018000UL) /**< \brief (TWIM0) APB Base Address */ 771 #define TWIM0_ADDR (0x40018000UL) /**< \brief (TWIM0) APB Base Address */ 772 #define TWIM1 ((Twim *)0x4001C000UL) /**< \brief (TWIM1) APB Base Address */ 773 #define TWIM1_ADDR (0x4001C000UL) /**< \brief (TWIM1) APB Base Address */ 774 #define TWIM2 ((Twim *)0x40078000UL) /**< \brief (TWIM2) APB Base Address */ 775 #define TWIM2_ADDR (0x40078000UL) /**< \brief (TWIM2) APB Base Address */ 776 #define TWIM3 ((Twim *)0x4007C000UL) /**< \brief (TWIM3) APB Base Address */ 777 #define TWIM3_ADDR (0x4007C000UL) /**< \brief (TWIM3) APB Base Address */ 778 #define TWIM_INST_NUM 4 /**< \brief (TWIM) Number of instances */ 779 #define TWIM_INSTS { TWIM0, TWIM1, TWIM2, TWIM3 } /**< \brief (TWIM) Instances List */ 780 781 #define TWIS0 ((Twis *)0x40018400UL) /**< \brief (TWIS0) APB Base Address */ 782 #define TWIS0_ADDR (0x40018400UL) /**< \brief (TWIS0) APB Base Address */ 783 #define TWIS1 ((Twis *)0x4001C400UL) /**< \brief (TWIS1) APB Base Address */ 784 #define TWIS1_ADDR (0x4001C400UL) /**< \brief (TWIS1) APB Base Address */ 785 #define TWIS_INST_NUM 2 /**< \brief (TWIS) Number of instances */ 786 #define TWIS_INSTS { TWIS0, TWIS1 } /**< \brief (TWIS) Instances List */ 787 788 #define USART0 ((Usart *)0x40024000UL) /**< \brief (USART0) APB Base Address */ 789 #define USART0_ADDR (0x40024000UL) /**< \brief (USART0) APB Base Address */ 790 #define USART1 ((Usart *)0x40028000UL) /**< \brief (USART1) APB Base Address */ 791 #define USART1_ADDR (0x40028000UL) /**< \brief (USART1) APB Base Address */ 792 #define USART2 ((Usart *)0x4002C000UL) /**< \brief (USART2) APB Base Address */ 793 #define USART2_ADDR (0x4002C000UL) /**< \brief (USART2) APB Base Address */ 794 #define USART3 ((Usart *)0x40030000UL) /**< \brief (USART3) APB Base Address */ 795 #define USART3_ADDR (0x40030000UL) /**< \brief (USART3) APB Base Address */ 796 #define USART_INST_NUM 4 /**< \brief (USART) Number of instances */ 797 #define USART_INSTS { USART0, USART1, USART2, USART3 } /**< \brief (USART) Instances List */ 798 799 #define USBC ((Usbc *)0x400A5000UL) /**< \brief (USBC) APB Base Address */ 800 #define USBC_ADDR (0x400A5000UL) /**< \brief (USBC) APB Base Address */ 801 #define USBC_INST_NUM 1 /**< \brief (USBC) Number of instances */ 802 #define USBC_INSTS { USBC } /**< \brief (USBC) Instances List */ 803 804 #define WDT ((Wdt *)0x400F0C00UL) /**< \brief (WDT) APB Base Address */ 805 #define WDT_ADDR (0x400F0C00UL) /**< \brief (WDT) APB Base Address */ 806 #define WDT_INST_NUM 1 /**< \brief (WDT) Number of instances */ 807 #define WDT_INSTS { WDT } /**< \brief (WDT) Instances List */ 808 809 #endif /* (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 810 /*@}*/ 811 812 /* ************************************************************************** */ 813 /** GPIO DEFINITIONS FOR SAM4LC8A */ 814 /* ************************************************************************** */ 815 /** \defgroup SAM4LC8A_gpio GPIO Definitions */ 816 /*@{*/ 817 818 #include "pio/sam4lc8a.h" 819 /*@}*/ 820 821 /* ************************************************************************** */ 822 /** ADDITIONAL DEFINITIONS FOR COMPATIBILITY */ 823 /* ************************************************************************** */ 824 /** \addtogroup SAM4LC8A_compat Definitions */ 825 /*@{*/ 826 // These defines are used to keep compatibility with existing 827 // sam/drivers/usart implementation from SAM3/4 products with SAM4L product. 828 #define US_MR_USART_MODE_HW_HANDSHAKING US_MR_USART_MODE_HARDWARE 829 #define US_MR_USART_MODE_IS07816_T_0 US_MR_USART_MODE_ISO7816_T0 830 #define US_MR_USART_MODE_IS07816_T_1 US_MR_USART_MODE_ISO7816_T1 831 #define US_MR_NBSTOP_2_BIT US_MR_NBSTOP_2 832 #define US_MR_NBSTOP_1_5_BIT US_MR_NBSTOP_1_5 833 #define US_MR_NBSTOP_1_BIT US_MR_NBSTOP_1 834 #define US_MR_CHRL_5_BIT US_MR_CHRL_5 835 #define US_MR_CHRL_6_BIT US_MR_CHRL_6 836 #define US_MR_CHRL_7_BIT US_MR_CHRL_7 837 #define US_MR_CHRL_8_BIT US_MR_CHRL_8 838 #define US_MR_PAR_NO US_MR_PAR_NONE 839 #define US_MR_PAR_MULTIDROP US_MR_PAR_MULTI 840 #define US_IF US_IFR 841 #define US_WPSR_WPVS US_WPSR_WPV_1 842 843 #define USBC_UPCFG0_PBK_Msk (0x1u << USBC_UPCFG0_PBK_Pos) 844 845 // These defines for homogeneity with other SAM header files. 846 #define CHIP_FREQ_FWS_0 (18000000UL) /**< \brief Maximum operating frequency when FWS is 0 */ 847 #define CHIP_FREQ_FWS_1 (36000000UL) /**< \brief Maximum operating frequency when FWS is 1 */ 848 // WARNING NOTE: these are preliminary values. 849 #define CHIP_FREQ_FLASH_HSEN_FWS_0 (18000000UL) /**< \brief Maximum operating frequency when FWS is 0 and the FLASH HS mode is enabled */ 850 #define CHIP_FREQ_FLASH_HSEN_FWS_1 (36000000UL) /**< \brief Maximum operating frequency when FWS is 1 and the FLASH HS mode is enabled */ 851 852 // These defines are used to keep compatibility with existing 853 // sam/drivers/tc implementation from SAM3/4 products with SAM4L product. 854 #define TC_CMR_LDRA_RISING TC_CMR_LDRA_POS_EDGE_TIOA 855 #define TC_CMR_LDRB_FALLING TC_CMR_LDRB_NEG_EDGE_TIOA 856 #define TC_CMR_ETRGEDG_FALLING TC_CMR_ETRGEDG_NEG_EDGE 857 858 // These defines are used to keep compatibility with existing 859 // sam/drivers/spi implementation from SAM3/4 products with SAM4L product. 860 #define SPI_CSR_BITS_8_BIT SPI_CSR_BITS_8_BPT 861 #define SPI_WPCR_SPIWPKEY_VALUE SPI_WPCR_WPKEY_VALUE 862 #define SPI_WPCR_SPIWPEN SPI_WPCR_WPEN 863 864 // These defines are used to keep compatibility with existing 865 // sam/drivers/crccu implementation from SAM3/4 products with SAM4L product. 866 #define CRCCU_DMA_EN CRCCU_DMAEN 867 #define CRCCU_DMA_DIS CRCCU_DMADIS 868 #define CRCCU_DMA_SR CRCCU_DMASR 869 #define CRCCU_DMA_IER CRCCU_DMAIER 870 #define CRCCU_DMA_IDR CRCCU_DMAIDR 871 #define CRCCU_DMA_IMR CRCCU_DMAIMR 872 #define CRCCU_DMA_ISR CRCCU_DMAISR 873 #define CRCCU_DMA_EN_DMAEN CRCCU_DMAEN_DMAEN 874 #define CRCCU_DMA_DIS_DMADIS CRCCU_DMADIS_DMADIS 875 #define CRCCU_DMA_SR_DMASR CRCCU_DMASR_DMASR 876 #define CRCCU_DMA_IER_DMAIER CRCCU_DMAIER_DMAIER 877 #define CRCCU_DMA_IDR_DMAIDR CRCCU_DMAIDR_DMAIDR 878 #define CRCCU_DMA_IMR_DMAIMR CRCCU_DMAIMR_DMAIMR 879 #define CRCCU_DMA_ISR_DMAISR CRCCU_DMAISR_DMAISR 880 /*@}*/ 881 882 /* ************************************************************************** */ 883 /** MEMORY MAPPING DEFINITIONS FOR SAM4LC8A */ 884 /* ************************************************************************** */ 885 886 #define FLASH_SIZE _UL_(0x00080000) /* 512 kB */ 887 #define FLASH_PAGE_SIZE 512 888 #define FLASH_NB_OF_PAGES 1024 889 #define FLASH_USER_PAGE_SIZE 512 890 #define HRAMC0_SIZE _UL_(0x00010000) /* 64 kB */ 891 #define HRAMC1_SIZE _UL_(0x00000800) /* 2 kB */ 892 893 #define FLASH_ADDR _UL_(0x00000000) /**< FLASH base address */ 894 #define FLASH_USER_PAGE_ADDR _UL_(0x00800000) /**< FLASH_USER_PAGE base address */ 895 #define HRAMC0_ADDR _UL_(0x20000000) /**< HRAMC0 base address */ 896 #define HRAMC1_ADDR _UL_(0x21000000) /**< HRAMC1 base address */ 897 #define HTOP0_ADDR _UL_(0x40000000) /**< HTOP0 base address */ 898 #define HTOP1_ADDR _UL_(0x400A0000) /**< HTOP1 base address */ 899 #define HTOP2_ADDR _UL_(0x400E0000) /**< HTOP2 base address */ 900 #define HTOP3_ADDR _UL_(0x400F0000) /**< HTOP3 base address */ 901 902 #define DSU_DID_RESETVALUE _UL_(0xAB0B0AE0) 903 904 /* ************************************************************************** */ 905 /** ELECTRICAL DEFINITIONS FOR SAM4LC8A */ 906 /* ************************************************************************** */ 907 908 909 #ifdef __cplusplus 910 } 911 #endif 912 913 /*@}*/ 914 915 #endif /* SAM4LC8A_H */ 916