00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _SAMV71N20_
00031 #define _SAMV71N20_
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045
00046 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
00047 #include <stdint.h>
00048 #endif
00049
00050
00051
00052
00053
00054
00055
00056
00057 typedef enum IRQn
00058 {
00059
00060 NonMaskableInt_IRQn = -14,
00061 HardFault_IRQn = -13,
00062 MemoryManagement_IRQn = -12,
00063 BusFault_IRQn = -11,
00064 UsageFault_IRQn = -10,
00065 SVCall_IRQn = -5,
00066 DebugMonitor_IRQn = -4,
00067 PendSV_IRQn = -2,
00068 SysTick_IRQn = -1,
00069
00070
00071 SUPC_IRQn = 0,
00072 RSTC_IRQn = 1,
00073 RTC_IRQn = 2,
00074 RTT_IRQn = 3,
00075 WDT_IRQn = 4,
00076 PMC_IRQn = 5,
00077 EFC_IRQn = 6,
00078 UART0_IRQn = 7,
00079 UART1_IRQn = 8,
00080 PIOA_IRQn = 10,
00081 PIOB_IRQn = 11,
00082 USART0_IRQn = 13,
00083 USART1_IRQn = 14,
00084 USART2_IRQn = 15,
00085 PIOD_IRQn = 16,
00086 HSMCI_IRQn = 18,
00087 TWIHS0_IRQn = 19,
00088 TWIHS1_IRQn = 20,
00089 SPI0_IRQn = 21,
00090 SSC_IRQn = 22,
00091 TC0_IRQn = 23,
00092 TC1_IRQn = 24,
00093 TC2_IRQn = 25,
00094 AFEC0_IRQn = 29,
00095 PWM0_IRQn = 31,
00096 ICM_IRQn = 32,
00097 ACC_IRQn = 33,
00098 USBHS_IRQn = 34,
00099 MCAN0_IRQn = 35,
00100 MCAN0_LINE1_IRQn = 36,
00101 MCAN1_IRQn = 37,
00102 MCAN1_LINE1_IRQn = 38,
00103 GMAC_IRQn = 39,
00104 AFEC1_IRQn = 40,
00105 TWIHS2_IRQn = 41,
00106 SPI1_IRQn = 42,
00107 QSPI_IRQn = 43,
00108 UART2_IRQn = 44,
00109 UART3_IRQn = 45,
00110 UART4_IRQn = 46,
00111 TC9_IRQn = 50,
00112 TC10_IRQn = 51,
00113 TC11_IRQn = 52,
00114 MLB_IRQn = 53,
00115 AES_IRQn = 56,
00116 TRNG_IRQn = 57,
00117 XDMAC_IRQn = 58,
00118 ISI_IRQn = 59,
00119 PWM1_IRQn = 60,
00120 RSWDT_IRQn = 63,
00121
00122 PERIPH_COUNT_IRQn = 64
00123 } IRQn_Type;
00124
00125 typedef struct _DeviceVectors
00126 {
00127
00128 void* pvStack;
00129
00130
00131 void* pfnReset_Handler;
00132 void* pfnNMI_Handler;
00133 void* pfnHardFault_Handler;
00134 void* pfnMemManage_Handler;
00135 void* pfnBusFault_Handler;
00136 void* pfnUsageFault_Handler;
00137 void* pfnReserved1_Handler;
00138 void* pfnReserved2_Handler;
00139 void* pfnReserved3_Handler;
00140 void* pfnReserved4_Handler;
00141 void* pfnSVC_Handler;
00142 void* pfnDebugMon_Handler;
00143 void* pfnReserved5_Handler;
00144 void* pfnPendSV_Handler;
00145 void* pfnSysTick_Handler;
00146
00147
00148 void* pfnSUPC_Handler;
00149 void* pfnRSTC_Handler;
00150 void* pfnRTC_Handler;
00151 void* pfnRTT_Handler;
00152 void* pfnWDT_Handler;
00153 void* pfnPMC_Handler;
00154 void* pfnEFC_Handler;
00155 void* pfnUART0_Handler;
00156 void* pfnUART1_Handler;
00157 void* pvReserved9;
00158 void* pfnPIOA_Handler;
00159 void* pfnPIOB_Handler;
00160 void* pvReserved12;
00161 void* pfnUSART0_Handler;
00162 void* pfnUSART1_Handler;
00163 void* pfnUSART2_Handler;
00164 void* pfnPIOD_Handler;
00165 void* pvReserved17;
00166 void* pfnHSMCI_Handler;
00167 void* pfnTWIHS0_Handler;
00168 void* pfnTWIHS1_Handler;
00169 void* pfnSPI0_Handler;
00170 void* pfnSSC_Handler;
00171 void* pfnTC0_Handler;
00172 void* pfnTC1_Handler;
00173 void* pfnTC2_Handler;
00174 void* pvReserved26;
00175 void* pvReserved27;
00176 void* pvReserved28;
00177 void* pfnAFEC0_Handler;
00178 void* pvReserved30;
00179 void* pfnPWM0_Handler;
00180 void* pfnICM_Handler;
00181 void* pfnACC_Handler;
00182 void* pfnUSBHS_Handler;
00183 void* pfnMCAN0_Handler;
00184 void* pfnMCAN0_Line1_Handler;
00185 void* pfnMCAN1_Handler;
00186 void* pfnMCAN1_Line1_Handler;
00187 void* pfnGMAC_Handler;
00188 void* pfnAFEC1_Handler;
00189 void* pfnTWIHS2_Handler;
00190 void* pfnSPI1_Handler;
00191 void* pfnQSPI_Handler;
00192 void* pfnUART2_Handler;
00193 void* pfnUART3_Handler;
00194 void* pfnUART4_Handler;
00195 void* pvReserved47;
00196 void* pvReserved48;
00197 void* pvReserved49;
00198 void* pfnTC9_Handler;
00199 void* pfnTC10_Handler;
00200 void* pfnTC11_Handler;
00201 void* pfnMLB_Handler;
00202 void* pvReserved54;
00203 void* pvReserved55;
00204 void* pfnAES_Handler;
00205 void* pfnTRNG_Handler;
00206 void* pfnXDMAC_Handler;
00207 void* pfnISI_Handler;
00208 void* pfnPWM1_Handler;
00209 void* pvReserved61;
00210 void* pvReserved62;
00211 void* pfnRSWDT_Handler;
00212 } DeviceVectors;
00213
00214
00215 void Reset_Handler ( void );
00216 void NMI_Handler ( void );
00217 void HardFault_Handler ( void );
00218 void MemManage_Handler ( void );
00219 void BusFault_Handler ( void );
00220 void UsageFault_Handler ( void );
00221 void SVC_Handler ( void );
00222 void DebugMon_Handler ( void );
00223 void PendSV_Handler ( void );
00224 void SysTick_Handler ( void );
00225
00226
00227 void ACC_Handler ( void );
00228 void AES_Handler ( void );
00229 void AFEC0_Handler ( void );
00230 void AFEC1_Handler ( void );
00231 void EFC_Handler ( void );
00232 void GMAC_Handler ( void );
00233 void HSMCI_Handler ( void );
00234 void ICM_Handler ( void );
00235 void ISI_Handler ( void );
00236 void MCAN0_Handler ( void );
00237 void MCAN0_Line1_Handler( void );
00238 void MCAN1_Handler ( void );
00239 void MCAN1_Line1_Handler( void );
00240 void MLB_Handler ( void );
00241 void PIOA_Handler ( void );
00242 void PIOB_Handler ( void );
00243 void PIOD_Handler ( void );
00244 void PMC_Handler ( void );
00245 void PWM0_Handler ( void );
00246 void PWM1_Handler ( void );
00247 void QSPI_Handler ( void );
00248 void RSTC_Handler ( void );
00249 void RSWDT_Handler ( void );
00250 void RTC_Handler ( void );
00251 void RTT_Handler ( void );
00252 void SPI0_Handler ( void );
00253 void SPI1_Handler ( void );
00254 void SSC_Handler ( void );
00255 void SUPC_Handler ( void );
00256 void TC0_Handler ( void );
00257 void TC1_Handler ( void );
00258 void TC2_Handler ( void );
00259 void TC9_Handler ( void );
00260 void TC10_Handler ( void );
00261 void TC11_Handler ( void );
00262 void TRNG_Handler ( void );
00263 void TWIHS0_Handler ( void );
00264 void TWIHS1_Handler ( void );
00265 void TWIHS2_Handler ( void );
00266 void UART0_Handler ( void );
00267 void UART1_Handler ( void );
00268 void UART2_Handler ( void );
00269 void UART3_Handler ( void );
00270 void UART4_Handler ( void );
00271 void USART0_Handler ( void );
00272 void USART1_Handler ( void );
00273 void USART2_Handler ( void );
00274 void USBHS_Handler ( void );
00275 void WDT_Handler ( void );
00276 void XDMAC_Handler ( void );
00277
00278
00279
00280
00281
00282 #define __CM7_REV 0x0000
00283 #define __MPU_PRESENT 1
00284 #define __NVIC_PRIO_BITS 3
00285 #define __FPU_PRESENT 1
00286 #define __FPU_DP 1
00287 #define __ICACHE_PRESENT 1
00288 #define __DCACHE_PRESENT 1
00289 #define __DTCM_PRESENT 1
00290 #define __ITCM_PRESENT 1
00291 #define __Vendor_SysTickConfig 0
00292
00293
00294
00295
00296
00297 #include <core_cm7.h>
00298 #if !defined DONT_USE_CMSIS_INIT
00299 #include "system_samv71.h"
00300 #endif
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310 #include "component/component_acc.h"
00311 #include "component/component_aes.h"
00312 #include "component/component_afec.h"
00313 #include "component/component_chipid.h"
00314 #include "component/component_efc.h"
00315 #include "component/component_gmac.h"
00316 #include "component/component_gpbr.h"
00317 #include "component/component_hsmci.h"
00318 #include "component/component_icm.h"
00319 #include "component/component_isi.h"
00320 #include "component/component_matrix.h"
00321 #include "component/component_mcan.h"
00322 #include "component/component_mlb.h"
00323 #include "component/component_pio.h"
00324 #include "component/component_pmc.h"
00325 #include "component/component_pwm.h"
00326 #include "component/component_qspi.h"
00327 #include "component/component_rstc.h"
00328 #include "component/component_rswdt.h"
00329 #include "component/component_rtc.h"
00330 #include "component/component_rtt.h"
00331 #include "component/component_spi.h"
00332 #include "component/component_ssc.h"
00333 #include "component/component_supc.h"
00334 #include "component/component_tc.h"
00335 #include "component/component_trng.h"
00336 #include "component/component_twihs.h"
00337 #include "component/component_uart.h"
00338 #include "component/component_usart.h"
00339 #include "component/component_usbhs.h"
00340 #include "component/component_utmi.h"
00341 #include "component/component_wdt.h"
00342 #include "component/component_xdmac.h"
00343
00344
00345
00346
00347
00348
00349
00350
00351 #include "instance/instance_hsmci.h"
00352 #include "instance/instance_ssc.h"
00353 #include "instance/instance_spi0.h"
00354 #include "instance/instance_tc0.h"
00355 #include "instance/instance_twihs0.h"
00356 #include "instance/instance_twihs1.h"
00357 #include "instance/instance_pwm0.h"
00358 #include "instance/instance_usart0.h"
00359 #include "instance/instance_usart1.h"
00360 #include "instance/instance_usart2.h"
00361 #include "instance/instance_mcan0.h"
00362 #include "instance/instance_mcan1.h"
00363 #include "instance/instance_usbhs.h"
00364 #include "instance/instance_afec0.h"
00365 #include "instance/instance_acc.h"
00366 #include "instance/instance_icm.h"
00367 #include "instance/instance_isi.h"
00368 #include "instance/instance_gmac.h"
00369 #include "instance/instance_tc3.h"
00370 #include "instance/instance_spi1.h"
00371 #include "instance/instance_pwm1.h"
00372 #include "instance/instance_twihs2.h"
00373 #include "instance/instance_afec1.h"
00374 #include "instance/instance_mlb.h"
00375 #include "instance/instance_aes.h"
00376 #include "instance/instance_trng.h"
00377 #include "instance/instance_xdmac.h"
00378 #include "instance/instance_qspi.h"
00379 #include "instance/instance_matrix.h"
00380 #include "instance/instance_utmi.h"
00381 #include "instance/instance_pmc.h"
00382 #include "instance/instance_uart0.h"
00383 #include "instance/instance_chipid.h"
00384 #include "instance/instance_uart1.h"
00385 #include "instance/instance_efc.h"
00386 #include "instance/instance_pioa.h"
00387 #include "instance/instance_piob.h"
00388 #include "instance/instance_piod.h"
00389 #include "instance/instance_rstc.h"
00390 #include "instance/instance_supc.h"
00391 #include "instance/instance_rtt.h"
00392 #include "instance/instance_wdt.h"
00393 #include "instance/instance_rtc.h"
00394 #include "instance/instance_gpbr.h"
00395 #include "instance/instance_rswdt.h"
00396 #include "instance/instance_uart2.h"
00397 #include "instance/instance_uart3.h"
00398 #include "instance/instance_uart4.h"
00399
00400
00401
00402
00403
00404
00405
00406
00407 #define ID_SUPC ( 0)
00408 #define ID_RSTC ( 1)
00409 #define ID_RTC ( 2)
00410 #define ID_RTT ( 3)
00411 #define ID_WDT ( 4)
00412 #define ID_PMC ( 5)
00413 #define ID_EFC ( 6)
00414 #define ID_UART0 ( 7)
00415 #define ID_UART1 ( 8)
00416 #define ID_PIOA (10)
00417 #define ID_PIOB (11)
00418 #define ID_USART0 (13)
00419 #define ID_USART1 (14)
00420 #define ID_USART2 (15)
00421 #define ID_PIOD (16)
00422 #define ID_HSMCI (18)
00423 #define ID_TWIHS0 (19)
00424 #define ID_TWIHS1 (20)
00425 #define ID_SPI0 (21)
00426 #define ID_SSC (22)
00427 #define ID_TC0 (23)
00428 #define ID_TC1 (24)
00429 #define ID_TC2 (25)
00430 #define ID_AFEC0 (29)
00431 #define ID_PWM0 (31)
00432 #define ID_ICM (32)
00433 #define ID_ACC (33)
00434 #define ID_USBHS (34)
00435 #define ID_MCAN0 (35)
00436 #define ID_MCAN1 (37)
00437 #define ID_GMAC (39)
00438 #define ID_AFEC1 (40)
00439 #define ID_TWIHS2 (41)
00440 #define ID_SPI1 (42)
00441 #define ID_QSPI (43)
00442 #define ID_UART2 (44)
00443 #define ID_UART3 (45)
00444 #define ID_UART4 (46)
00445 #define ID_TC9 (50)
00446 #define ID_TC10 (51)
00447 #define ID_TC11 (52)
00448 #define ID_MLB (53)
00449 #define ID_AES (56)
00450 #define ID_TRNG (57)
00451 #define ID_XDMAC (58)
00452 #define ID_ISI (59)
00453 #define ID_PWM1 (60)
00454 #define ID_RSWDT (63)
00455
00456 #define ID_PERIPH_COUNT (64)
00457
00458
00459
00460
00461
00462
00463
00464
00465 #if (defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
00466 #define HSMCI (0x40000000U)
00467 #define SSC (0x40004000U)
00468 #define SPI0 (0x40008000U)
00469 #define TC0 (0x4000C000U)
00470 #define TWIHS0 (0x40018000U)
00471 #define TWIHS1 (0x4001C000U)
00472 #define PWM0 (0x40020000U)
00473 #define USART0 (0x40024000U)
00474 #define USART1 (0x40028000U)
00475 #define USART2 (0x4002C000U)
00476 #define MCAN0 (0x40030000U)
00477 #define MCAN1 (0x40034000U)
00478 #define USBHS (0x40038000U)
00479 #define AFEC0 (0x4003C000U)
00480 #define ACC (0x40044000U)
00481 #define ICM (0x40048000U)
00482 #define ISI (0x4004C000U)
00483 #define GMAC (0x40050000U)
00484 #define TC3 (0x40054000U)
00485 #define SPI1 (0x40058000U)
00486 #define PWM1 (0x4005C000U)
00487 #define TWIHS2 (0x40060000U)
00488 #define AFEC1 (0x40064000U)
00489 #define MLB (0x40068000U)
00490 #define AES (0x4006C000U)
00491 #define TRNG (0x40070000U)
00492 #define XDMAC (0x40078000U)
00493 #define QSPI (0x4007C000U)
00494 #define MATRIX (0x40088000U)
00495 #define UTMI (0x400E0400U)
00496 #define PMC (0x400E0600U)
00497 #define UART0 (0x400E0800U)
00498 #define CHIPID (0x400E0940U)
00499 #define UART1 (0x400E0A00U)
00500 #define EFC (0x400E0C00U)
00501 #define PIOA (0x400E0E00U)
00502 #define PIOB (0x400E1000U)
00503 #define PIOD (0x400E1400U)
00504 #define RSTC (0x400E1800U)
00505 #define SUPC (0x400E1810U)
00506 #define RTT (0x400E1830U)
00507 #define WDT (0x400E1850U)
00508 #define RTC (0x400E1860U)
00509 #define GPBR (0x400E1890U)
00510 #define RSWDT (0x400E1900U)
00511 #define UART2 (0x400E1A00U)
00512 #define UART3 (0x400E1C00U)
00513 #define UART4 (0x400E1E00U)
00514 #else
00515 #define HSMCI ((Hsmci *)0x40000000U)
00516 #define SSC ((Ssc *)0x40004000U)
00517 #define SPI0 ((Spi *)0x40008000U)
00518 #define TC0 ((Tc *)0x4000C000U)
00519 #define TWIHS0 ((Twihs *)0x40018000U)
00520 #define TWIHS1 ((Twihs *)0x4001C000U)
00521 #define PWM0 ((Pwm *)0x40020000U)
00522 #define USART0 ((Usart *)0x40024000U)
00523 #define USART1 ((Usart *)0x40028000U)
00524 #define USART2 ((Usart *)0x4002C000U)
00525 #define MCAN0 ((Mcan *)0x40030000U)
00526 #define MCAN1 ((Mcan *)0x40034000U)
00527 #define USBHS ((Usbhs *)0x40038000U)
00528 #define AFEC0 ((Afec *)0x4003C000U)
00529 #define ACC ((Acc *)0x40044000U)
00530 #define ICM ((Icm *)0x40048000U)
00531 #define ISI ((Isi *)0x4004C000U)
00532 #define GMAC ((Gmac *)0x40050000U)
00533 #define TC3 ((Tc *)0x40054000U)
00534 #define SPI1 ((Spi *)0x40058000U)
00535 #define PWM1 ((Pwm *)0x4005C000U)
00536 #define TWIHS2 ((Twihs *)0x40060000U)
00537 #define AFEC1 ((Afec *)0x40064000U)
00538 #define MLB ((Mlb *)0x40068000U)
00539 #define AES ((Aes *)0x4006C000U)
00540 #define TRNG ((Trng *)0x40070000U)
00541 #define XDMAC ((Xdmac *)0x40078000U)
00542 #define QSPI ((Qspi *)0x4007C000U)
00543 #define MATRIX ((Matrix *)0x40088000U)
00544 #define UTMI ((Utmi *)0x400E0400U)
00545 #define PMC ((Pmc *)0x400E0600U)
00546 #define UART0 ((Uart *)0x400E0800U)
00547 #define CHIPID ((Chipid *)0x400E0940U)
00548 #define UART1 ((Uart *)0x400E0A00U)
00549 #define EFC ((Efc *)0x400E0C00U)
00550 #define PIOA ((Pio *)0x400E0E00U)
00551 #define PIOB ((Pio *)0x400E1000U)
00552 #define PIOD ((Pio *)0x400E1400U)
00553 #define RSTC ((Rstc *)0x400E1800U)
00554 #define SUPC ((Supc *)0x400E1810U)
00555 #define RTT ((Rtt *)0x400E1830U)
00556 #define WDT ((Wdt *)0x400E1850U)
00557 #define RTC ((Rtc *)0x400E1860U)
00558 #define GPBR ((Gpbr *)0x400E1890U)
00559 #define RSWDT ((Rswdt *)0x400E1900U)
00560 #define UART2 ((Uart *)0x400E1A00U)
00561 #define UART3 ((Uart *)0x400E1C00U)
00562 #define UART4 ((Uart *)0x400E1E00U)
00563 #endif
00564
00565
00566
00567
00568
00569
00570
00571
00572 #include "pio/pio_samv71n20.h"
00573
00574
00575
00576
00577
00578
00579 #define IFLASH_SIZE (0x100000u)
00580 #define IFLASH_PAGE_SIZE (512u)
00581 #define IFLASH_LOCK_REGION_SIZE (16384u)
00582 #define IFLASH_NB_OF_PAGES (2048u)
00583 #define IFLASH_NB_OF_LOCK_BITS (64u)
00584 #define IRAM_SIZE (0x60000u)
00585
00586 #define QSPIMEM_ADDR (0x80000000u)
00587 #define AXIMX_ADDR (0xA0000000u)
00588 #define ITCM_ADDR (0x00000000u)
00589 #define IFLASH_ADDR (0x00400000u)
00590 #define IROM_ADDR (0x00800000u)
00591 #define DTCM_ADDR (0x20000000u)
00592 #define IRAM_ADDR (0x20400000u)
00593 #define EBI_CS0_ADDR (0x60000000u)
00594 #define EBI_CS1_ADDR (0x61000000u)
00595 #define EBI_CS2_ADDR (0x62000000u)
00596 #define EBI_CS3_ADDR (0x63000000u)
00597 #define SDRAM_CS_ADDR (0x70000000u)
00598
00599
00600
00601
00602
00603 #define CHIP_JTAGID (0x05B3D03FUL)
00604 #define CHIP_CIDR (0xA1220C00UL)
00605 #define CHIP_EXID (0x00000001UL)
00606
00607
00608
00609
00610
00611
00612
00613
00614 #define CHIP_FREQ_SLCK_RC_MIN (20000UL)
00615 #define CHIP_FREQ_SLCK_RC (32000UL)
00616 #define CHIP_FREQ_SLCK_RC_MAX (44000UL)
00617 #define CHIP_FREQ_MAINCK_RC_4MHZ (4000000UL)
00618 #define CHIP_FREQ_MAINCK_RC_8MHZ (8000000UL)
00619 #define CHIP_FREQ_MAINCK_RC_12MHZ (12000000UL)
00620 #define CHIP_FREQ_CPU_MAX (300000000UL)
00621 #define CHIP_FREQ_XTAL_32K (32768UL)
00622 #define CHIP_FREQ_XTAL_12M (12000000UL)
00623
00624
00625 #define CHIP_FREQ_FWS_0 (26000000UL)
00626 #define CHIP_FREQ_FWS_1 (52000000UL)
00627 #define CHIP_FREQ_FWS_2 (78000000UL)
00628 #define CHIP_FREQ_FWS_3 (104000000UL)
00629 #define CHIP_FREQ_FWS_4 (131000000UL)
00630 #define CHIP_FREQ_FWS_5 (150000000UL)
00631
00632
00633 #ifdef __cplusplus
00634 }
00635 #endif
00636
00637
00638
00639 #endif